无意中以root用户身份运行的PHP exec命令

无意中以root用户身份运行的PHP exec命令,php,linux,apache,Php,Linux,Apache,我对通过PHP“exec”语句运行的命令的用户所有权感到非常困惑和担心。我在cPanel/WHM环境中使用DSO/modruid处理程序运行php5.5/apache2.2/CENTOS 6 在测试中,我有以下php脚本: <?php echo 'whoami: ',exec('whoami'),'<br />'; echo 'user: ',exec('echo ${USER}'),'<br />'; echo 'home: ',exec('echo

我对通过PHP“exec”语句运行的命令的用户所有权感到非常困惑和担心。我在cPanel/WHM环境中使用DSO/modruid处理程序运行php5.5/apache2.2/CENTOS 6

在测试中,我有以下php脚本:

<?php
  echo 'whoami: ',exec('whoami'),'<br />';
  echo 'user: ',exec('echo ${USER}'),'<br />';
  echo 'home: ',exec('echo ${HOME}'),'<br />';
?>
其中cuser是我的系统的cPanel ID和我域的虚拟主机httpd.conf配置中suPHP、mod_ruid和mpm itk指令中的用户ID

此外,我的httpd.conf文件将“nobody”指定为用户和组,实际上,我的httpd进程(从“ps-ef | grep httpd”返回)归“nobody”所有

我的问题是,为什么exec命令会为“whoami”和“echo${USER}”命令返回不同的结果,以及是否因为Apache配置中的错误而存在安全风险。最理想的情况是,我希望我的exec命令以cuser用户的身份运行。我能做到吗


非常感谢您提供的任何信息。

根据Gralgrathor的评论,以下是我的工作:


我可以通过如下方式输入exec命令来覆盖主目录:exec('HOME=/HOME/cuser sh script.sh')。请注意,尽管script.sh中的${USER}仍然指向ROOT,但要小心

我发现,尽管用户和主目录在通过PHPExec运行的bash脚本中指向root,但特权和上下文实际上是suPHP/cPanel ID的特权和上下文,exec命令没有root特权。这是件好事。但是HOME变量指向/root,这是一个问题。我需要通过exec命令运行libreofficeheadless,libreoffice需要访问当前主目录,不幸的是,它指向根目录。谢谢你的提示。我想好了:我可以通过输入exec命令来覆盖主目录,如下所示:exec('HOME=/HOME/cuser sh script.sh')。很抱歉打开了此问题。对于有相同问题的人可能是有用的信息。请务必提供上述解决方案作为此问题的答案,并将其标记为已回答。
whoami: cuser
user: root
home: /root