【发布时间】:2012-06-30 20:44:50
【问题描述】:
我在我的 Mac 上安装了 XAMP,我尝试运行命令 -
ps axo user,group,comm | grep httpd 知道 apache 正在以什么用户身份运行。
我得到了多个结果,一个是root,另一个是nobody。那么 apache 是作为什么运行的呢?一个root或nobody,为什么我得到root和nobody?是不是因为httpd一开始是root,后来变成nobody了?
ps axo user,group,comm | grep httpd 我得到的结果是 -
其次,当我执行以下脚本时 -
echo shell_exec('whoami');(来自https://stackoverflow.com/questions/2509334/finding-out-what-user-apache-is-running-as)
我得到的结果是 - nobody
我想知道用户的原因是因为 php 引擎实际上能够执行 web 服务器根目录之外的 php 文件(mysql_details.php)。而这个 mysql_details.php 具有以下权限 - rwxr--r-- 即仅读取其他和组的权限。所以如果apache用户是nobody,那么它如何执行mysql_details.php。
谢谢, 普拉特。
【问题讨论】:
-
权限问题我无法回答,但我会说目标可执行文件在文件系统中的位置无关紧要,这里只有权限。目标可执行文件位于 DocRoot 之外这一事实与 PHP 是否可以访问它没有关系,除非您应用 chroot
-
这是否意味着phpengine可以执行文件系统中的任何文件,如果它设置了可执行位?
-
如果 PHP 可以命名文件(参见 chroot 链接)并且可执行位设置为 world、PHP 用户所属的组或所有者并且 PHP 用户拥有脚本,那么可以。文件系统位置对此规则没有影响