簡體   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