假设有用户 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 身份运行二进制文件时,我得到了“权限被拒绝”。所以为什么?
Linux 没有实现对S_ISUID
脚本文件位的处理;相反,使用解释器(shell)的模式位。
文件的概念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)