Shell

su 的反義詞:在沒有 root 權限的情況下執行命令

  • January 18, 2019

我正在編寫一個 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

引用自:https://serverfault.com/questions/507807