Linux
suid 腳本無法正常工作
我的作業系統是 Fedora 24,我嘗試測試 suid 位功能。
我在 bash 下面寫為 Setuid.bash:
#!/bin/bash if [ $USER = 'root' ] then echo "Like Root Run" echo "Root User Add in " $(date) >> /etc/SetUid else echo "Other User Run" echo $USER "User Add in " $(date) >> /etc/SetUid fi
經
-rwsrw-r-x. 1 root root 249 May 21 14:45 /bin/Setuid.bash
許可和-rwx------. 1 root root 432 May 21 14:45 /etc/SetUid
/bin/Setuid.bash
現在,當我以 root 身份嘗試時,我得到了:像根執行
但是當與測試使用者一起執行時,我遇到了:
其他使用者執行
bin/Setuid.bash:第 8 行:/etc/SetUid:權限被拒絕
如果有人讓我知道,我將不勝感激,我的方法哪裡錯了?
很久以前,
bash
(和其他 shell 解釋器)再次添加了內置的安全措施 suid (ab)use 因為它是/是危險的。SUID Shell 腳本的危險設置了 suid 位的 Bash 腳本無法執行。首先,Linux 不允許設置任何腳本,儘管其他一些作業系統可以。其次,bash 會檢測到正在以 setuid 執行,並立即刪除權限。
這是因為 shell 腳本的安全性非常依賴於環境,比普通的 C 應用程序更依賴環境。
最終,現在 suid 位主要用於可執行二進製文件。像這樣執行腳本/bash 的一種方法是從 suid 編譯的二進製文件中呼叫它。