Linux setuid不';不生效

Linux setuid不';不生效,linux,setuid,Linux,Setuid,假设用户A和B属于不同的组。它们中的bot不是根 首先,作为用户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的身份运行二进制文件时,我得到了“权限被拒绝”。那为什么呢 setuid文件的概念意味着,如果在文件

假设用户A和B属于不同的组。它们中的bot不是根

首先,作为用户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的身份运行二进制文件时,我得到了“权限被拒绝”。那为什么呢

setuid文件的概念意味着,如果在文件上启用了
setuid位
,任何执行该命令(文件)的人都将继承文件所有者的权限

$ 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)

Linux不实现对脚本文件的
S_ISUID
位的处理;而是使用解释器(shell)的模式位。

您的意思是
2)chmod 600 a.txt
?而且,您应该给出完整的错误消息,例如
cat:cannotopen'a.txt':Permission denied
,因为它可能包含有用的信息。