[英]Can owner technically run setuid and not be able to execute program?
当 setuid 程序运行时,所有者的权限位在技术上是rwx
吗?
我在想前三个权限位是给所有者的,但如果它们是---
,则更多地考虑它,这作为 setUID 程序没有意义。
我的理解是前三位是针对用户的(即当前登录的用户)。 这样对吗?
当 setuid 程序运行时,所有者的权限位在技术上是 rwx 吗?
不。
当 setuid 程序运行时,则(来自 chmod):
设置了此位的可执行文件将使用设置为文件所有者的 uid 的有效 uid 运行。
不多也不少。 正如您所说,前三个权限位用于所有者。 是的,如果用户没有执行权限,那将没有意义(并且它不会是“可执行文件”)。
您是否想到了在测试时遇到问题的特定案例?
您可以这样做,它将使用所有者的有效 uid 运行程序。
但是,对于由root
调用的 setuid root
二进制文件,它不会像您期望的那样工作。 这是因为root
不像其他用户那样尊重可执行文件的权限位。 当root
运行程序时,如果存在任何用户、组或其他可执行权限,它将执行。 鉴于它可以执行该文件,它将遵循 user-setuid 位(但 root 默认有效 uid 为 0,因此它是多余的):
这里有两个例子:
root
(这表明您无法阻止 root 执行程序):$ cp /usr/bin/id .
$ sudo chown root ./id
$ sudo chmod u-rwx ./id
$ sudo ./id
uid=0(root) gid=0(root) groups=0(root)
$ sudo chmod u+s ./id
$ ls -l ./id
---Sr-xr-x 1 2 root tinkerer Dec 5 07:25 ./id
$ ./id -u
0
$ sudo ./id -u
0
bin
(这表明它完全按照您的预期工作):$ cp /usr/bin/id .
$ sudo chown bin ./id
$ sudo chmod u-rwx ./id
$ sudo -u bin ./id
sudo: unable to execute ./id: Permission denied
$ sudo chmod u+s ./id
$ ls -l ./id
---Sr-xr-x 1 2 bin tinkerer Dec 5 07:30 ./id
$ ./id -u
2
$ sudo ./id -u
2
$ sudo -u bin ./id
sudo: unable to execute ./id: Permission denied
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.