無法在腳本中將密碼傳遞給 su

無法在腳本中將密碼傳遞給 su

我正在編寫建置腳本。該腳本最後必須複製一個檔案。該檔案將被放置在另一個使用者的主目錄中,並且該檔案也必須屬於第二個使用者。我的第一次嘗試是像這樣使用 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

相關內容