Shell
su 的反義詞:在沒有 root 權限的情況下執行命令
我正在編寫一個 shell 腳本,其中大多數命令不需要 root 權限。該腳本應由管理員執行。但我希望能夠“su”到一個普通使用者帳戶,用於不需要 root 權限的腳本部分。這將最大限度地減少使用 root 權限完成的操作數量,並提高安全性。
有沒有一個linux命令可以做到這一點?
我知道可以 su 到任何使用者帳戶,但我不想依賴機器上存在特定使用者名的假設。
我想為腳本的時間創建一個臨時帳戶並在腳本結束時將其刪除。但是如果我不給這個賬號設置密碼,難道攻擊者不能在這個賬號短暫的生命週期內使用它嗎?我無法將使用者 shell 設置為 /sbin/nologin,因為顯然這會阻止
在 shell 腳本中執行“起訴”該帳戶的命令。謝謝你的幫助。
我個人會顛倒您的策略並以非特權使用者身份執行腳本,使用 sudo 執行需要 root 特權的命令。您需要以 root 身份執行腳本嗎?
但是,要回答您的問題,您可以使用 -c 標誌以使用者身份執行特定命令:
su someuser -c "touch /tmp/file"
參考: http: //linux.die.net/man/1/su
我不想依賴機器上存在特定使用者名的假設。
超級使用者有很多好處…… :-)
scriptuser_created=no scriptuser=myuser if ! id "$scriptuser" &>/dev/null adduser --system "$scriptuser" scriptuser_created=yes fi sudo -u "$scriptuser" command1 sudo -u "$scriptuser" command2 sudo -u "$scriptuser" command3 if [ yes = "$scriptuser_created" ]; then userdel "$scriptuser" fi