<?php echo `whoami`; ?>
因此,这将返回“root”,我不知道如何阻止它。我正在使用 WebHost Manager/CPanel,它应该创建多个用户/虚拟主机,并让 Apache 以该用户/组的身份生成其进程。但这并没有发生。
如果我登录 WHM 并打开 PHP 和 SuExec 配置部分,我的设置是:
Default PHP Version (.php files) 5
PHP 5 Handler cgi
PHP 4 Handler none
Apache suEXEC on
出了什么问题?如何让 Apache 以正确的用户身份而不是 root 身份运行?
答案1
如果您希望每个站点都以自己的用户身份运行,正确的 PHP 5 处理程序设置是“suPHP”而不是“CGI”。更改此设置后,您应该会看到报告了whoami
各个用户。
请注意,您可能必须运行 EasyApache 并在该过程中选择“Mod SuPHP”以重新编译 Apache / PHP,以便首先使用此选项。此操作如下:
主页 >> 软件 >> EasyApache (Apache 更新) 或在命令行上/scripts/easyapache
答案2
Apache 本身很可能以 apache 用户身份运行,但由于 SuExec,root 拥有的 PHP 脚本将以 root 身份运行。这就是您的whoami
命令返回 root 用户的原因。
如果您将文档根目录中文件的所有者更改为“apache”或“www-data”(无论您的服务器使用哪一个),那么相同的命令将返回文件的新所有者。
确保所有 PHP 脚本chmod 555
和目录不属于与文件相同的用户,这可能也是值得的。这将允许 CGI 执行脚本,但这意味着如果在某个 PHP 脚本中发现缺陷,它将无法修改自身或任何其他脚本,也无法在任何目录中创建新脚本。如果攻击者在 PHP 脚本中发现缺陷,他们仍然可以做很多事情,但您可以采取任何措施让他们更难得逞,这是值得的。