Linux

以其他使用者身份執行 shell 腳本

  • January 11, 2021

以不同使用者身份執行 shell 腳本的好方法是什麼。我正在使用 Debian etch,並且我知道我想模擬哪個使用者。

如果我手動操作,我會這樣做:

su postgres
./backup_db.sh /tmp/test
exit

由於我想自動化該過程,因此我需要一種將 backup_db.sh 作為 postgres 執行的方法(繼承環境等)

謝謝!

要將您的腳本作為另一個使用者作為一個命令執行,請執行:

/bin/su -c "/path/to/backup_db.sh /tmp/test" - postgres

Breaking it down:
/bin/su : switch user
-c "/path/to..." : command to run
- : option to su, make it a login session (source profile for the user)
postgres : user to become

我建議始終在這樣的腳本中使用完整路徑——當你 su 時,你不能總是保證你會在正確的目錄中(也許有人改變了你的主目錄,誰知道)。我也總是使用 su (/bin/su) 的完整路徑,因為我很偏執。有人可能會編輯您的路徑並導致您使用受損版本的 su。

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