解決 sudo: sorry, you must have a tty to run sudo

在 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


Leave a Reply