我需要使用python脚本使用sudo service stop / start来停止/启动某些服务。该脚本将由运行apache webserver的服务器端的网页php代码调用。 我知道的一种方法是给www-data sudoer权限来运行特定的python脚本。 没有给出www-data特定权限,还有其他方法吗?示例将在这种情况下cgi或mod_python工作。如果是,那么LAMP服务器中所有python脚本执行的最佳实现是什么。 提前致谢。
答案 0 :(得分:0)
对于没有任何通配符的单个重启命令,给予www-data sudo权限,我认为没有安全问题。
如果你想完全避免使用sudo,可以使用php创建一个临时文件,并定期从root执行的shell脚本中查询该文件。
但这可能会引发更多错误,并导致相同的结果。
答案 1 :(得分:0)
您可以运行一个侦听停止/启动请求的python线程,然后该线程将停止/启动该服务。该线程应该以sudo身份运行,但它会侦听tcp。 Web服务器可以发送没有任何特殊权限的请求(SocketServer是一个非常简单的开箱即用的python tcp服务器)。
您可能想要添加一些安全性,例如使用机密散列对此服务器的请求,因此只有允许的服务才能请求服务的启动/停止,并应用iptables规则(来自web服务器所在的localhost的请求)