У меня есть файл 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 суперпользователя, поскольку бит setuid был установлен при запускеsudo chmod 4775 setuidDemonstration
. Но не смог. Кроме того, когда я напечатал euid при запуске из обычного режима, он напечатал1000
, а не0
. Почему?
ОБНОВЛЕНИЕ: Спасибо, что указали на ошибку. Я удалил «/» из пути к файлу, и теперь он работает для суперпользователя. Но даже сейчас, после sudo chmod 4775 setuidDemonstration, программа запуска в обычном режиме не могла открыть файл. Пожалуйста, объясните.
superuser.cpp
находится непосредственно в/
? - person cnicutar   schedule 03.09.2013/
и чем он отличается от текущего каталога? - person cnicutar   schedule 03.09.2013