繁体   English   中英

难以理解setuid / setgid

[英]Trouble understanding setuid/setgid

我一直在努力思考setuid / setgid的工作原理...我想到了这个人为的示例:

用户:

  • userA属于组A
  • userB属于组B

文件a.txt由userA拥有,权限为rw-rw---- (660)。 我以为如果userA创建了这个文件test.sh:

#!/bin/sh
cat a.txt

并运行chmod g+s test.shchmod u+s test.sh ,在userB执行后,它将显示a.txt。 相反,我得到Permission Denied 为了清楚rwsr-xr-x ,test.sh的文件许可权最终看起来像是: rwsr-xr-xrwxr-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM