我一直在想我是怎么工作的.我想出了一个人为的例子:
用户:
文件a.txt由userA拥有,具有权限rw-rw---- (660)。我想如果userA创建了这个文件,test.sh:
#!/bin/sh
cat a.txt并运行chmod g+s test.sh或chmod u+s test.sh,在userB执行时,它会对a.txt进行猫操作。相反,我得到了Permission Denied。为了明确起见,test.sh的文件权限最终看起来是这样的:rwsr-xr-x或rwxr-sr-x。我认为setuid/setgid的全部要点是,当其他用户执行该文件时,他们将假定文件的用户id或组id (本例中为test.sh)。是我做错什么了,还是我的理解错了?
我一直在RedHat上运行我的测试,以防这件事发生。我还尝试使用umask,在运行umask 0002之后尝试运行setuid/setgid。帮不上忙..。
发布于 2015-03-06 08:01:10
警告: Setuid和setgid脚本是一个安全漏洞。对于一个人来说,有很多方法可以让你(作者)做你不想做的事情。
一个常见的技巧是对环境变量进行猴子操作。例如,有人可以这样做:
ln -s cat /bin/rm
export PATH=.:${PATH}然后使用setuid脚本删除 a.txt文件。
幸运的是,在许多现代Linux系统上,setuid和setgid位都是忽略的脚本;参见https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts。一些答案提供了解决办法..。
https://stackoverflow.com/questions/28894243
复制相似问题