我正在使用反引号运算符从 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 并重新启动)。