我正在使用一个Web界面(Apache)的embedded式Linux系统。 基本上我需要添加closures和重新启动function的网页界面。 但是,运行时遇到许可问题:
exec(“现在closures”)等…通过网页(即阿帕奇)进行调用。
我该如何让这些命令从apache被调用?
宁愿不必给予Apache完全的根权限,但系统安全对我来说不是一个巨大的交易,所以如果这是唯一的方法,我该怎么做?
让Apache成为一个sudoer是一个危险的举动,我会避免它。 我认为QID是接近于此…最简单的解决方案是在根目录下设置一个cron作业,每X秒运行一次,并检查apache可以写入的目录中的文件。 让apache在关闭时添加该文件,并且cron脚本应该有一个触发器(a)删除文件和(b)重新启动计算机。
只要小心,它正确地删除文件,给自己一个很长的cron延迟,当你测试,或者服务器将只是不断重启,这将是一个烂摊子。
不知道这样做的好方法,我可以提供一个丑陋的黑客解决方案:编写一个以root身份运行的小守护程序,并接受关闭系统的命令,并让PHP脚本通过合理安全的通道与守护进程通信为你的合理定义;也许发送一个信号,也许写入守护进程监视的文件,也许只是一个网络套接字,不管)。
告诉你,你知道你在做什么:
exec(“sudo …
apache ALL =(ALL)NOPASSWD:ALL