Linux 技术手札

解决 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

Exit mobile version