我正在編寫一個Bourne shell部署腳本,它以root用戶身份運行一些命令,還有一些以當前用戶身份運行。我不想以root用戶身份運行所有命令,並且預先檢查我需要的命令是否可用於root用戶(以防止中止半做完部署)。檢查是否可以在Bourne shell中將命令作爲sudo運行?
爲了做到這一點,我想做一個函數來檢查一個命令是否可以作爲root運行。我的想法是這樣:
sudo_command() {
sudo sh -c 'type "$1"'
}
然後使用它像這樣:
required_sudo_commands="cp rm apt"
for command in $required_sudo_commands do
sudo_command "$command" || (
echo "missing required command: $command;
exit 1;
)
done
正如你可能會在這裏我的問題想:這是行不通的。你們有沒有看到我在這裏做錯了?
我試着在sudo_command裏面運行命令本身,但奇蹟般地(對我)確實有效。但是當我把這個命令放到一個單獨的文件中時,它不起作用。
在什麼情況下,你希望命令完全可用,但不是'root'? – chepner
我期望有一些命令可用於'root',這些命令對當前用戶不可用,因此我會分別檢查這些命令。我更喜歡不用'root'來檢查所有的東西,因爲我認爲用'root'權限來做絕對最小化是個好習慣。 – Willem