通过PHP执行root命令

我有一个CentOS 5.7 linux服务器,并使用php5.3.x。


在pfSense系统上,您可以使用php网页重新启动需要root权限的服务。


我正在尝试做类似的事情,我已经写了一些php代码来执行shell命令。例如,重新启动sshd服务:


<?php

exec('/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':权限被拒绝”


jeck猫
浏览 630回答 3
3回答

SMILET

我不会让PHP执行任何sudo命令。对我来说,这听起来像是在自找麻烦。相反,我将创建两个单独的系统。第一个使用PHP(网络层)的系统将处理用户请求。当发出需要sudo命令的请求时,我会将这个请求放在某个队列中。这可能是某种数据库或中间件数据库,例如ZeroMQ。第二个系统(业务层)将从该队列中读取或接收消息,并且具有执行sudo命令的能力,但不属于Web服务器进程的范围。我知道这有点含糊,可以使用各种技术以不同的方式解决,但我认为这是最好,最安全的方法。
打开App,查看更多内容
随时随地看视频慕课网APP