- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我对通过 PHP“exec”语句运行的命令的用户所有权感到非常困惑和担忧。我在带有 DSO/mod_ruid 处理程序的 cPanel/WHM 环境中运行 PHP 5.5/Apache 2.2/CENTOS 6。
在测试中,我有以下 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
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 命令来覆盖 HOME 目录,如下所示:exec('HOME=/home/cuser sh script.sh')。请注意,尽管 script.sh 中的 ${USER} 仍指向 ROOT,因此请注意!
关于以 root 无意中运行的 PHP exec 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36087259/
这个问题已经有答案了: Why do I get "AttributeError: NoneType object has no attribute" using Tkinter? Where did
我有一个列表,我想从中删除没有出现在另一个列表中的项目。我试过以下方法: for w in common: for i in range(1,n): if no
我遇到了一些自定义管理页面触发 Django 管理站点而不是显示我的自定义页面的问题。 我的 urls.py 如下: urlpatterns = patterns('', # ... trim
我尝试使用 href 方法下载 CSV 文件,但是将其设置为 href 标记时数据似乎被 chop 。对于 IE,我使用了 msSaveBlob,它似乎工作正常并且所有数据都已正确下载。
我是一名优秀的程序员,十分优秀!