0

我有一个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,因为 setuid 位在sudo chmod 4775 setuidDemonstration运行时已设置。但它不能。此外,当我在正常模式下运行时打印 euid 时,它会打印1000而不是0. 为什么?

更新:感谢您指出错误。我已经从文件路径中删除了“/”,现在它确实适用于超级用户。但是即使现在经过 sudo chmod 4775 setuidDemonstration,正常模式下运行程序 falis 来打开文件。请解释一下。

4

1 回答 1

0

因为/superuser.cpp是文件系统根目录中的文件名,而不是当前工作目录中的文件名。使用superuser.cpp./superuser.cpp如果文件与运行程序时的路径相同。

于 2013-09-03T18:28:19.623 回答