在 Linux 很多時都會用 sudo 以 root 身份執行指令,一般情況下執行 sudo 後需要輸入使用者密碼確認,但有些情況不能輸入密碼,例如 Shell Script, 在這種情況下系統記錄檔會出現以下錯誤:
sudo: sorry, you must have a tty to run sudo
出現問題的原因,是多數 Linux 發行版,預設使用 sudo 開啟了 requiretty,要解決很容易,只要用 visudo 重新設定 sudo 的設定便可以。
首先以 root 身份執行 visudo:
# visudo
找到以下一行:
Defaults requiretty
將這行註解掉,改為:
#Defaults requiretty
以上設定會對整個系統的所有使用者生效。
另一種情況是只對個別使用者或指令關閉 tty 選項,可以用以下語法:
Defaults:myuser !requiretty
Defaults!/path/to/shell-script.sh !requiretty