在 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