бит setuid включен, но программа не может открыть файл суперпользователя

У меня есть файл superuser.cpp созданный суперпользователем с правами доступа 770, Теперь суперпользователь создает файл setuidDemonstration.cpp в котором superuser.cpp открывается с помощью open("superuser.cpp", O_RDONLY). .Cpp и объектный файл setuidDemonstration.cpp имеют разрешения rwxrwxr-x, Теперь мои вопросы:

  1. Когда я запустил программу setuidDemonstration, как в обычном, так и в режиме суперпользователя он не смог открыть superuser.cpp. Зачем? По крайней мере, режим суперпользователя должен был открыть его.

  2. Теперь я делаю sudo chmod 4775 setuidDemonstration, Это должно позволить программе открывать superuser.cpp даже в обычном режиме, потому что она получит euid superuser во время выполнения, так как бит setuid был установлен, когда sudo chmod 4775 setuidDemonstration был запущен. Но это не могло. Кроме того, когда я печатал euid во время работы из нормального режима, он печатал 1000 и не 0, Зачем?

ОБНОВИТЬ:
Спасибо за указание на ошибку. Я удалил «/» из пути к файлу, и теперь он работает для суперпользователя. Но даже сейчас после sudo chmod 4775 setuidDemonstration в обычном режиме запускается программа, открывающая файл. Просьба объяснить.

0

Решение

Так как /superuser.cpp это имя файла в корне файловой системы, а не в текущем рабочем каталоге. использование superuser.cpp или же ./superuser.cpp если файл находится по тому же пути, что и вы при запуске программы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]