我正在編寫建置腳本。該腳本最後必須複製一個檔案。該檔案將被放置在另一個使用者的主目錄中,並且該檔案也必須屬於第二個使用者。我的第一次嘗試是像這樣使用 su :
su fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"
這在命令列中有效,但是當我將其放入腳本中時,我需要自動輸入密碼。所以我嘗試了以下命令:
echo Password | su -S fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"
但後來我得到這個輸出:
su: must be run from a terminal
我該如何讓它發揮作用?
答案1
考慮為此特定進程設定 sudo,並可能設定特定命令 NOPASSWD: ,這樣您就不必回顯明文密碼(無論如何都非常糟糕)。此外,還有一些 sudo 標誌可以允許您需要或不需要 TTY。
例子。
/etc/sudoers.d/mycmd
:
theuser ALL=(fgbs) NOPASSWD: cp fbgs.jar /home/fbgs/server/plugins
my-build-script.sh
:
#!/bin/sh
/usr/bin/sudo -H -u fbgs cp fbgs.jar /home/fbgs/server/plugins