У меня есть файл superuser.cpp
созданный суперпользователем с правами доступа 770
, Теперь суперпользователь создает файл setuidDemonstration.cpp
в котором superuser.cpp открывается с помощью open("superuser.cpp", O_RDONLY).
.Cpp и объектный файл setuidDemonstration.cpp имеют разрешения rwxrwxr-x
, Теперь мои вопросы:
Когда я запустил программу setuidDemonstration, как в обычном, так и в режиме суперпользователя он не смог открыть superuser.cpp. Зачем? По крайней мере, режим суперпользователя должен был открыть его.
Теперь я делаю sudo chmod 4775 setuidDemonstration
, Это должно позволить программе открывать superuser.cpp даже в обычном режиме, потому что она получит euid superuser во время выполнения, так как бит setuid был установлен, когда sudo chmod 4775 setuidDemonstration
был запущен. Но это не могло. Кроме того, когда я печатал euid во время работы из нормального режима, он печатал 1000
и не 0
, Зачем?
ОБНОВИТЬ:
Спасибо за указание на ошибку. Я удалил «/» из пути к файлу, и теперь он работает для суперпользователя. Но даже сейчас после sudo chmod 4775 setuidDemonstration в обычном режиме запускается программа, открывающая файл. Просьба объяснить.
Так как /superuser.cpp
это имя файла в корне файловой системы, а не в текущем рабочем каталоге. использование superuser.cpp
или же ./superuser.cpp
если файл находится по тому же пути, что и вы при запуске программы.
Других решений пока нет …