0

假设有用户 A 和 B,属于不同的组。并且其中的机器人不是root

首先,作为用户 A。

1) touch a.txt; echo "hello word" > a.txt
2)chmod 600
3) touch b
4) echo "cat a.txt" > b
5) chmod 4755 b

然后切换到用户 B,我的假设是用户 B 可以成功运行二进制文件并获得问候语“hello word”,但是当我实际以用户 B 身份运行二进制文件时,我得到了“权限被拒绝”。所以为什么?

4

2 回答 2

1

Linux 没有实现对S_ISUID脚本文件位的处理;相反,使用解释器(shell)的模式位。

于 2014-05-09T07:27:08.523 回答
0

文件的概念setuid意味着如果你setuid bit打开了一个文件,任何执行该命令(文件)的人都将继承文件所有者的权限。

$ chmod 4755 b --verbose
mode of `b' changed to 4755 (rwsr-xr-x)

我怀疑用户 A 和 B 属于不同的组,所以你也需要这样做setgid。这可以通过添加 2 来完成,对于 setuid 和 setgid 都添加到 6。

$ chmod 6755 b --verbose
mode of `b' changed to 6755 (rwsr-sr-x)
于 2012-12-11T09:28:08.840 回答