使用PHP (Apache)启动linux应用程序,并对某些命令具有root权限


Launch linux app using PHP (Apache) with root privileges for certain commands

我正在运行几个Node实例,它们都在不同的端口上运行。

我需要一种方法能够基于它正在运行的端口杀死Node的特定实例(杀死绑定到端口n的节点实例)。

从我的终端,我可以很容易地做一个"fuser -k xxxx/tcp"xxxx作为端口。

问题是,那是因为我有这样做的授权。我的问题是:我希望能够有一个PHP文件,关闭在端口n上运行的节点实例,它可以被任何人打开。如何在不打开巨大安全漏洞的情况下做到这一点?

谢谢!

您可以考虑在服务器上再添加一个端点,例如/shutdown,它将调用process.exit();

结果立竿见影,比使用一堆shell命令,跟踪pid等更容易实现…

也很容易通过密码,签名请求等保护

最好的方法是让php将端口号写入文件,然后以root(或任何需要的用户)身份运行cron脚本并从该文件读取端口号。cron脚本也应该有一些安全措施,比如不停止端口80上运行的任何东西,或者根本不是节点进程。

edit:为了更安全一点,您可以要求在端口号前加上一个需要您输入的"密码"。然后,cron脚本将验证它是否以该密码为前缀(或者对其进行哈希并比较哈希会更好)