Sudo
以使用者身份執行帶有參數的腳本
我試圖確保在執行腳本時它以特定使用者身份執行,而不必在腳本執行之前 su 到該使用者。此外,該腳本還使用幾個標誌執行,例如
./myscript.sh -e dev -v 1.9
我試過以下
[ `whoami` = myuser ] || exec sudo -S su - myuser -c "bash `pwd`/`basename $0` $@"
但是應該作為我的腳本輸入的 -v 標誌被作為輸入提供給 su。所以它抱怨一個無效的選項,有沒有辦法糾正上述問題?
注意:執行腳本的人有 sudo 權限。
目前使用者已經在變數中
$USER
。所以你只需要:[ "$USER" = "myuser" ] || sudo -u myuser $0 "$@"
不需要,可以做你需要
sudo su
的sudo
一切。您也不需要pwd
orbasename
,該$0
變數已經具有腳本的完整路徑。您原來的命令是啟動登錄 shell (
su -
)。如果真的需要(這看起來很奇怪),你可以這樣做:[ "$USER" = "myuser" ] || sudo -iu myuser $0 "$@"
您的腳本有兩個問題:
1)您忘記了測試命令中的空格
[
whoami= myuser]
- 由於變數“$@”分兩步擴展,引用失去。
以下似乎適用於我的系統:
[ `whoami` = myuser ] || exec sudo -S -u myuser bash -- "$0" "$@"