[英]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.