我有一个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,正常模式下运行程序 falis 来打开文件。请解释一下。