Joh*_*ski 2 php permissions shell scripting sudo
运行Fedora 9/10,Apache 2,PHP 5 ......
我可以使用exec()从PHP脚本以root身份运行shell脚本吗?
我只是给Apache root priveleges,然后在他们面前添加"sudo"命令?
具体来说,我正在尝试启动和停止后台脚本.
目前我有一个只运行应用程序的shell脚本start.sh:
#!/bin/bash
/path/to/my/app/appname
Run Code Online (Sandbox Code Playgroud)
以及杀死应用程序的脚本stop.sh:
#!/bin/bash
killall appname
Run Code Online (Sandbox Code Playgroud)
我会这样做:
<?php
exec("sudo start.sh");
?>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Mil*_*kov 13
你不能只是sudo那样,你需要先在/ etc/sudoers文件中设置无密码sudo.例如,可以使用visudo命令完成此操作.确保在sudoers文件中设置权限,以便将apache用户限制为您希望运行的单个命令(即shell脚本).
即使这样,它也会带来安全风险,因为任何人都可以创建PHP脚本并依次运行shell脚本.因此,请确保shell脚本本身不会受到Apache用户的更改.
第二部分,基拉尔,甚至更成问题.您不应该只允许Apache以root权限运行killall.您应该将killall包装在另一个shell脚本中,并授予对sudoers中的访问权限.
最后:不要使用root帐户运行Apache,也不要使用setuid.两者都打开了一堆蠕虫,因为你是一个新手(考虑到你提出的问题),你很可能会错过一些会产生潜在问题的小细节.