我很困惑并且关心通过PHP中的"exec"语句运行的命令的用户所有权。我在一个cPanel/WHM环境下运行PHP 5.5/Apache 2.2/CENTOS 6,并使用DSO/mod_ruid处理程序。
在测试中,我有以下php脚本:
当我通过浏览器运行脚本时,我看到以下结果:
在测试中,我有以下php脚本:
<?php
echo 'whoami: ',exec('whoami'),'<br />';
echo 'user: ',exec('echo ${USER}'),'<br />';
echo 'home: ',exec('echo ${HOME}'),'<br />';
?>
当我通过浏览器运行脚本时,我看到以下结果:
whoami: cuser
user: root
home: /root
这里的是我系统cPanel ID中suPHP、mod_ruid和mpm-itk指令在域名虚拟主机httpd.conf配置中的用户ID。
此外,我的httpd.conf文件将“nobody”指定为用户和组,并且我的httpd进程(从“ps-ef | grep httpd”返回)确实由“nobody”所拥有。
我的问题是,为什么执行命令对于“whoami”和“echo${USER}”命令返回不同的结果?是否由于Apache配置错误而存在安全风险?最理想的情况是,我希望我的exec命令以用户身份运行。我能实现吗?
非常感谢您提供的任何信息。