【发布时间】:2013-07-06 02:30:02
【问题描述】:
我正在使用 php-fpm 运行 lighttpd。我已将 http 用户作为 nopasswd sudoer 添加到我的 sudoers 中。我有以下脚本:
<?php
echo shell_exec("sudo sh -c 'echo \"wtf3\" > /etc/openvpn/auth.txt'");
?>
当我这样做时它运行良好:
sudo -u http php testsudo.php
但通过浏览器运行时失败。
shell_exec("whoami");
在浏览器中确认我是用户 http。
什么给了?
【问题讨论】:
-
授予 Web 服务器适当的权限以写入该文件,而无需 root 权限
-
@hek2mgl 不是一个选项。我需要在 etc 中编辑几个配置文件,但我不希望我的网络服务器在这些文件夹中有全权委托,所以它在 sudoers 中设置为只允许一个脚本以 nopasswd 身份运行。
-
尝试这个时会出现什么错误?
-
您认为这更安全,但事实并非如此。如果 shellscript 中有错误,那么门是敞开的。创建一个组
webmgmt或其他,将必要文件的组所有权转移到该组,最后将 http 放入该组 -
@Barmar 它没有给我任何错误。它根本没有做任何事情。我希望通过在 shell 中将脚本作为 http 运行来捕获错误,但以这种方式运行时它实际上可以工作。
标签: php bash lighttpd sudo shell-exec