繁体   English   中英

所有者在技术上可以运行 setuid 而不能执行程序吗?

[英]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,因此它是多余的):

这里有两个例子:

  • setuid 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
  • setuid 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM