我有一个php页面,试图使用以下命令运行服务重启:
$list = shell_exec('sudo /sbin/service NetworkManager restart');
我需要编辑我的sudoers文件以允许此操作。因此:
#Defaults requiretty
和
apache ALL=(ALL) NOPASSWD: /sbin/service 当这种方法失败时,作为测试,我运行了以下命令:
apache ALL=(ALL) NOPASSWD: ALL
我已经运行了一个没有sudo命令的shell_exec: $list = shell_exec('whoami');
echo $list;
这将返回预期的“apache”。所以我运行了: $list = shell_exec('id');
echo $list;
这将返回“uid=48(apache)gid=48(apache)groups=48(apache),10(wheel)”
我将文件的权限与正在执行相同操作的工作系统进行了比较,并且它们匹配。之后,出于测试目的,我将所有文件权限更改为777。仍然没有任何进展。在apache错误日志中,我得到了一行“sudo:no tty present and no askpass program specified”。据我所知,这适用于sudoers文件中的#Defaults requiretty行,但如上所述,该行已被注释掉。我已经进行了更多的测试,并且我当前的sudoers文件条目是:
#Defaults requiretty
ALL ALL=(ALL) NOPASSWD: ALL
我知道不要以这种方式运行服务器,因为这是巨大的安全风险,但此时我完全不知道是什么在阻止我。Selinux已关闭,所有权限都是777,并且文件的所有权与我拥有的工作系统匹配。即使关闭了所有可能的安全性,我仍然在我的/var/log/httpd/error_log中看到“sudo:no tty present and no askpass program specified”行。以下命令的输出: $list = shell_exec('sudo echo "yes" 2>&1 ');
echo $list;
也是“sudo:no tty present and no askpass program specified”?
我真的需要一些帮助。我已经阅读了关于此问题的每篇文章,Google搜索了4页。
我需要编辑我的sudoers文件以允许此操作。因此:
#Defaults requiretty
和
apache ALL=(ALL) NOPASSWD: /sbin/service 当这种方法失败时,作为测试,我运行了以下命令:
apache ALL=(ALL) NOPASSWD: ALL
我已经运行了一个没有sudo命令的shell_exec: $list = shell_exec('whoami');
echo $list;
这将返回预期的“apache”。所以我运行了: $list = shell_exec('id');
echo $list;
这将返回“uid=48(apache)gid=48(apache)groups=48(apache),10(wheel)”
我将文件的权限与正在执行相同操作的工作系统进行了比较,并且它们匹配。之后,出于测试目的,我将所有文件权限更改为777。仍然没有任何进展。在apache错误日志中,我得到了一行“sudo:no tty present and no askpass program specified”。据我所知,这适用于sudoers文件中的#Defaults requiretty行,但如上所述,该行已被注释掉。我已经进行了更多的测试,并且我当前的sudoers文件条目是:
#Defaults requiretty
ALL ALL=(ALL) NOPASSWD: ALL
我知道不要以这种方式运行服务器,因为这是巨大的安全风险,但此时我完全不知道是什么在阻止我。Selinux已关闭,所有权限都是777,并且文件的所有权与我拥有的工作系统匹配。即使关闭了所有可能的安全性,我仍然在我的/var/log/httpd/error_log中看到“sudo:no tty present and no askpass program specified”行。以下命令的输出: $list = shell_exec('sudo echo "yes" 2>&1 ');
echo $list;
也是“sudo:no tty present and no askpass program specified”?
我真的需要一些帮助。我已经阅读了关于此问题的每篇文章,Google搜索了4页。