sudo [ 没有 tty 存在并且没有指定 askpass 程序 ]

sudo [ 没有 tty 存在并且没有指定 askpass 程序 ]

我正在使用反引号运算符从 php 脚本运行 rsync。它以 apache 用户身份运行。

在 /etc/sudoers 中,我设置了

#Defaults requiretty
Cmnd_Alias REPORTS = /usr/bin/rsync
apache ALL = NOPASSWD: REPORTS

在错误日志中,我收到这些错误

sudo: can't stat /var/run/sudo: Permission denied
sudo: no tty present and no askpass program specified

另外,rsync 路径不正确,php 中的 rsync 命令也不正确。我可以以 root 身份运行该命令,而且如果我将 NOPASSWD 添加到另一个用户,我可以使用 sudo 并运行相同的命令。

答案1

这可能是因为sudo需要 TTY 会话才能运行。您可以sudo通过传入参数来强制假定/使用 TTY -t,即:

sudo -tt /usr/bin/rsync

答案2

禁用 SELINUX(/etc/selinux/config SELINUX=disabled 并重新启动)。

相关内容