使用PHP(Apache)以某些命令的root权限启动linux应用程序

时间:2013-03-01 21:45:52

标签: php linux apache node.js

我正在运行几个Node实例,所有这些实例都运行在不同的端口上。

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

结果是立即的,比使用一堆shell命令,跟踪pid等更容易实现......

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

答案 1 :(得分:0)

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

编辑:为了更加安全,您可以要求端口号以“密码”作为前缀,这需要您输入。然后cron脚本将验证它的前缀是该密码(或哈希它并比较哈希会更好)