suPHP以root身份执行PHP脚本

| 我已经创建了几个网站。现在我需要执行“ 0”任务。我创建了一个webplatform并安装了它。
root
拥有
/var/private-www/
中的所有脚本,并且它们被修改(0777)。在
/var/private-www/test.php
中站立:
<?php echo exec(\'whoami\'); ?>
。我的
suPHP
配置是这样的:
 [global]
;Path to logfile
logfile=/var/log/suphp/suphp.log

;Loglevel
loglevel=info

;User Apache is running as
webserver_user=root

;Path all scripts have to be in
docroot=/var/private-www

;Path to chroot() to before executing script
;chroot=/mychroot

; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true

;Send minor error messages to browser
errors_to_browser=false

;PATH environment variable
env_path=/bin:/usr/bin

;Umask to set, specify in octal notation
umask=0077

; Minimum UID
min_uid=0

; Minimum GID
min_gid=0


[handlers]
;Handler for php-scripts
application/x-httpd-suphp=\"php:/usr/bin/php-cgi\"

;Handler for CGI-scripts
x-suphp-cgi=\"execute:!self\"
当我在网络浏览器中执行
test.php
时,它会显示:
www-data
:(。不是
root
...即使在命令行中执行它,我也做了
a2enmod suphp
apachectl restart
,所以我认为它可以工作。如何解决这个?     
已邀请:
看一下这些已知的Web应用程序攻击:OWASP。以root用户身份运行和0777权限都是您应该避免的事情。     
简短的回答:不要这样做。 任何需要根运行的任务都应通过cron作业完成。 无论如何,您为什么要尝试这种方式?     
我会后悔这么说,但我不想成为推动者,但是: 您可能需要重新编译。最小UID和GID不是(仅)可配置项,在编译时也要进行最小检查。也不能保证没有以硬编码方式检查作为root用户运行的检查。 您确实应该考虑一种执行所需任务的替代方法,该方法不涉及公开以root用户身份运行的Web应用程序。定期运行的cron作业可以检查未完成的任务或工作队列服务,可以轻松实现这些目标。因此,在Web上公开的前端不需要以root用户身份运行。     
这不是您要寻找的答案,但是您应该考虑一下: 尽管在某些情况下您想这样做,但通常以root身份运行所有php脚本是不好的做法,并且您可能会遇到许多障碍。 避免这种情况的一种简单方法是使用sudo。将命令添加到用于www-data的sudoers中,并让脚本使用sudo执行外部命令。 甚至可以通过sudo以root身份运行外部php脚本。这样,您将实现特权分离。 否则,您将必须以root用户身份运行apache + modphp或破解suphp代码。     

要回复问题请先登录注册