Bash

如果我 sudo 執行一個 Bash 腳本文件,那麼 Bash 腳本中的所有命令也會作為 sudo 執行嗎?

  • July 10, 2018

我想在 Bash 中編寫一個自動化的安裝後腳本(post-install.sh例如,稱為 )。該腳本將自動添加和更新儲存庫、安裝和更新軟體包、編輯配置文件等。

現在,如果我執行這個腳本,例如使用sudo post-install.sh,我只會被提示輸入一次sudo密碼,還是我需要sudo在腳本內每次呼叫命令時輸入密碼,這需要sudo權限?換句話說,bash 腳本中的命令是否“繼承”了執行權限,可以這麼說嗎?

而且,如果他們確實這樣做了,權限是否仍有可能sudo超時(例如,如果特定命令需要足夠長的時間以超過sudo超時)?或者初始sudo密碼輸入是否會持續整個腳本的完整持續時間?

**Q#1:**我會只被提示一次輸入 sudo 密碼,還是每次呼叫腳本中需要 sudo 權限的命令時都需要輸入 sudo 密碼?

是的,一次,在腳本執行期間。

**注意:**當您向 提供憑據時sudo,身份驗證通常在您鍵入密碼的 shell 中持續 5 分鐘。此外,從此 shell 執行的任何子程序或在 shell 中執行的任何腳本(您的情況)也將在提升的級別上執行。

Q#2: sudo 權限是否仍有可能超時(例如,如果某個特定命令花費的時間足以超過 sudo 超時)?還是初始 sudo 密碼入口會持續整個腳本的整個持續時間?

不,他們不會在腳本中超時。僅當您在提供憑據的 shell 中以互動方式鍵入它們時。每次sudo在此 shell 中執行時,都會重置超時。但是在您的情況下,只要腳本在其中執行和執行命令,它們的憑據就會保留。

摘自 sudo 手冊頁

此限制是特定於政策的;sudoers 安全策略的預設密碼提示超時為 5 分鐘。

引用自:https://unix.stackexchange.com/questions/115276