【发布时间】:2015-04-09 22:27:01
【问题描述】:
我目前正在努力使我的 WordPress 插件与 nginx 兼容。此插件需要访问wp-content/uploads 目录中的.conf 文件,以便它可以添加所需的规则。目前,它更新了同一目录下的一个.htaccess文件,并且更改立即生效,无需干预。因为 nginx 需要service nginx reload 才能使配置更改生效,所以我正在寻找一种在我的脚本中执行此操作的方法。我不确定即使exec() 也能解决这个问题,因为service nginx reload 需要以root 身份运行或使用sudo。我在 StackExchange、Google 以及我所知道的所有其他地方进行了广泛搜索,但我什至找不到起点。
【问题讨论】:
-
安全灾难就在那里。不要这样做。即使您设法安全地允许 PHP 应用程序重新启动 Nginx(通过编辑 sudoers 文件并只允许一个重新启动命令),它仍然会打开一个 DoS 漏洞,因为任何恶意 PHP 脚本现在都能够通过不断地对服务器进行 DoS Nginx 重新加载。
-
@AndréDaniel,当然,我不同意你的观点;我不希望任何与 Web 服务器相关的用户能够以 sudo 的身份执行命令。但是,我的目标是找到一种“好”的方法来实现这一点,它不会带来巨大的安全漏洞(比如
exec(),允许www-data用户拥有sudo 访问权限等)。我要提到的一点是,即使exec()该命令也无法使用,因为它需要以 sudo/root 身份运行。