2011-04-13 156 views
0

我創建了多個網站。現在我需要執行root任務。我創建了一個網絡平臺並安裝。 root擁有/var/private-www/中的所有腳本,並且它們是chmodded(0777)。在/var/private-www/test.php看臺上:<?php echo exec('whoami'); ?>。我suPHP配置是這樣的:suPHP以root身份執行PHP腳本

[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 suphpapachectl restart ,所以我想它會工作,我怎樣才能解決這個

+0

我假設你知道如何**非常危險**它是以root身份運行任何可通過web訪問的應用程序,以及你將要多少次聽到這個消息? – Charles 2011-04-13 21:11:45

+0

是的,但是如何在web平臺上做'adduser'這樣的東西? :( – 2011-04-13 21:13:59

+0

守護進程和工作隊列和/或cron作業可以很容易地執行這些任務。 – Charles 2011-04-13 21:15:41

回答

1

在這些已知的Web應用程序的攻擊看看:?OWASP以root運行和0777的權限是兩件事,你應該儘量避免

1

。簡短的回答:唐'不要這樣做。

任何需要運行根目錄的任務都應該通過cron作業完成。

爲什麼你試圖這樣呢?

1

我會後悔這樣說,我不希望成爲一個推動者,但:

你可能會需要recompile。最小的UID和GID不是(只)可配置的項目,也有在編譯時進行的最小檢查。也不能保證沒有以root身份運行的硬編碼檢查。

您真的應該考慮執行所需任務的另一種方法,它不涉及公開以root用戶身份運行的Web應用程序。定期運行的cron作業檢查未完成的任務或工作隊列服務,可以輕鬆實現這些目標。網絡暴露的前端不需要以root身份運行。

0

這是不是你正在尋找的答案,但你應該考慮這一點:

儘管有這樣的情況,你想這樣做,運行所有的PHP腳本以root身份一般是不好的做法你可能會遇到一些障礙。

避免這種情況的一個簡單方法是使用sudo。將您的命令添加到sudoers以獲得www-data,並讓您的腳本使用sudo執行外部命令。

即使外部php腳本也可以通過sudo作爲root運行。這樣你將實現特權分離。

否則你將不得不以root身份運行apache + modphp或破解suphp的代碼。

相關問題