首先,作为用户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时,我得到了“权限被拒绝”。所以为什么?
答案 0 :(得分:1)
Linux没有实现对S_ISUID
位脚本文件的处理;相反,使用解释器(shell)的模式位。
答案 1 :(得分:0)
setuid
文件的概念意味着如果您在文件上启用setuid bit
,则执行该命令(文件)的任何人都将继承该文件所有者的权限。
$ chmod 4755 b --verbose
mode of `b' changed to 4755 (rwsr-xr-x)
我怀疑用户A和B属于单独的组,因此您还需要setgid
。这可以通过添加2来完成,对于setuid和setgid add都可以获得6。
$ chmod 6755 b --verbose
mode of `b' changed to 6755 (rwsr-sr-x)