[英]Trouble understanding setuid/setgid
我一直在努力思考setuid / setgid的工作原理...我想到了这个人为的示例:
用户:
文件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
。 为了清楚rwsr-xr-x
,test.sh的文件许可权最终看起来像是: rwsr-xr-x
或rwxr-sr-x
。 我认为setuid / setgid的全部要点是,当其他用户执行该文件时,他们将假定该文件的用户ID或组ID(在本例中为test.sh)。 我是在做错什么,还是我的理解力不强?
我一直在RedHat上进行测试,以防万一。 我也尝试过使用umask
,尝试在运行umask 0002
之后运行setuid / setgid。 没帮助...
警告:Setuid和setgid Shell脚本是一个安全漏洞。 有人可以通过很多方法使setuid / setgid做您(作者)不想要的事情。
一个常见的技巧是利用环境变量。 例如,有人可以这样做:
ln -s cat /bin/rm
export PATH=.:${PATH}
然后使用您的setuid脚本删除 a.txt
文件。
幸运的是,在许多现代Linux系统上,shell脚本都忽略了setuid和setgid位。 参见https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts 。 一些答案给出了解决方法...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.