2012-10-14 56 views
0

我正在寻找从PHP动态编写自定义nginx指令。然而我担心安全问题。 PHP运行在用户/组php:php下,nginx配置文件归root:root所有。从PHP动态编写nginx配置

要使PHP能够打开并写入nginx配置文件,该文件需要由用户和组php:php拥有。

这样做的最好方法是什么?我想,我可以用另一种语言或PHP来实现辅助进程,它可以读取和写入配置文件,而PHP只是与辅助进程进行通信。

回答

0

这真的取决于什么样的PHP文件生成nginx。如果这是一个小型的独立脚本,我将不会有任何问题以root身份运行它。现在我假设它是一个需要生成并写入这个nginx文件的php网站。

如果实际创建和写入文件的部分仍然是自包含和简单的,我会让它成为一个独立的可执行文件(在PHP或其他),从PHP获取一些命令行参数网站,然后setuid这个可执行文件(虽然它由root拥有)。但请注意,此可执行文件应该是安全的:http://en.wikipedia.org/wiki/Setuid#Security

另一种方法是让php写入nginx.conf(通过使文件具有世界可写性,使其成为可写入组,并为其提供一组php用户所在的组,或者通过一个单独的进程从一些php文件复制文件)。这是非常可怕的,因为我确信你的nginx.conf文件可以包含执行的命令(例如,用于身份验证或者cgi),并且它们可能会以root身份执行(如果相同的配置文件如此命令) 。所以用这种方法你基本上打开了php用户以root身份运行任意命令的大门......

另一件可能工作的东西(我不确定它是可能的):你可能只想调整一个或配置文件中的两个参数。看看是否有可能从其他位置读取这些一个或两个参数(即php可写)。