我的Mac上安装了XAMP,我尝试运行命令 -
ps axo user,group,comm | grep httpd
了解用户apache正在运行的内容。
我得到多个结果一个用于root,另一个用作没有人。那么apache运行的是什么?一个根或没有人,为什么我得到root和nobody?是因为httpd以root身份开始,然后变成了没人?
我得到ps axo user,group,comm | grep httpd
的结果是 -
root 20 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/httpd nobody -1 /Applications/XAMPP/xamppfiles/bin/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。
谢谢, 普拉特。
答案 0 :(得分:1)
主Apache进程以root身份运行 - 其他进程以nobody身份运行。处理请求的唯一进程是那些作为nobody运行的进程,因此如果有人试图访问没有人无法访问的文件,他们将收到错误(而root将能够访问该文件)。
如果您需要执行该文件,您可以执行以下操作: