我有一个CentOS 5.7 linux服务器,并使用php5.3.x。在pfSense系统上,您可以使用php网页重新启动需要root权限的服务。我正在尝试做类似的事情,我已经写了一些php代码来执行shell命令。例如,重新启动sshd服务:<?phpexec('/sbin/service sshd restart');?>我试图通过exec函数执行该命令,但是它需要root权限,但是我们拥有apache用户权限。我遇到了一些解决方案:“以root用户运行apache”确实不安全。我不想那样做。我尝试了“ apache ALL = NOPASSWD:/ sbin / service到/ etc / sudoers”,但是仍然有问题。还有其他解决方案吗?感谢您的回答。现在..这很有趣。我尝试了@refp post,它在我的本地ubuntu服务器上起作用。但是,当我在cenOS vps服务器上尝试相同的操作时。它不起作用。这是apache的错误日志“ rm:无法删除`/ var / lock / subsys / vsftpd':权限被拒绝”
3 回答
![?](http://img1.sycdn.imooc.com/5333a0aa000121d702000200-100-100.jpg)
SMILET
TA贡献1796条经验 获得超4个赞
我不会让PHP执行任何sudo命令。对我来说,这听起来像是在自找麻烦。相反,我将创建两个单独的系统。
第一个使用PHP(网络层)的系统将处理用户请求。当发出需要sudo命令的请求时,我会将这个请求放在某个队列中。这可能是某种数据库或中间件数据库,例如ZeroMQ。
第二个系统(业务层)将从该队列中读取或接收消息,并且具有执行sudo命令的能力,但不属于Web服务器进程的范围。
我知道这有点含糊,可以使用各种技术以不同的方式解决,但我认为这是最好,最安全的方法。
- 3 回答
- 0 关注
- 662 浏览
添加回答
举报
0/150
提交
取消