Linux
以其他使用者身份執行 shell 腳本
以不同使用者身份執行 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。