[英]Shell script getting superuser privilege without being run as sudo
這是我的腳本:
腳本.sh :
sudo cat /etc/passwd-
如果我在sudo
會話中(例如,幾分鍾前我用sudo
運行了另一個命令),現在運行
script.sh
該腳本將獲得sudo
訪問權限。 但是,如果我運行cat /etc/passwd-/
,則會收到權限被拒絕錯誤。
作為用戶,我不希望 script.sh 能夠如此簡單地獲得超級用戶權限(例如,我沒有通過sudo script.sh
授予超級用戶權限)。
這是預期的行為嗎? 是否可配置?
我認為這種行為與sudo su
完全相似,例如可能允許超級用戶訪問您在該會話中運行的任何腳本,但更糟糕的是,因為您甚至可能不知道它,也不知道它何時結束(至少不是沒有手動檢查)
這是預期的行為嗎?
是的,確實,這是預期的行為。 用戶的 sudo 緩存憑據對此負責。
可配置嗎?
是的,它是可配置的。
我認為您的安全擔憂是有效的。 如果腳本是使用顯式sudo
命令編寫的,則在之前運行sudo
命令的終端中運行script.sh
(在特定超時內)將授予腳本超級用戶權限。
您可以通過運行以下命令來避免在以 sudo 身份運行時不提示輸入密碼的任何腳本:
sudo -k script.sh
無論之前是否有任何 sudo 命令或會話,它都會要求輸入密碼。
並在沒有 sudo 的情況下運行 script.sh,即只使用
script.sh
並仍然提示輸入 sudo 命令的密碼:
您可以永久更改超時值(sudo 維護會話的持續時間):
運行sudo visudo
然后換行:
Defaults env_reset
到
Defaults env_reset,timestamp_timeout=0
保存並退出(ctrl+X 然后是 Y)
這將確保 sudo 每次運行時都要求輸入密碼。
或者,如果您不想永久更改它並希望您的腳本至少提示輸入一次密碼(同時保持會話),那么您可以像這樣更改您的腳本:
sudo -k first-command-with-sudo
sudo second-command
sudo third
and so on
無論之前是否有任何 sudo 命令或會話,此腳本將至少提示輸入一次密碼。
如果您不知道(或無法訪問)腳本 script.sh 的內容(它可以包含或不包含 sudo 命令)
並且您要確保任何 sudo 命令肯定會提示輸入密碼至少一次,然后在運行腳本之前運行sudo -K
(大寫 K)。
現在如果你運行script.sh
並且它包含一個 sudo 命令,它肯定會提示輸入密碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.