2014-10-18 47 views
0

我的名字lebnik和信息自我介紹:從用戶WWW的數據的PHP腳本創建不是從用戶WWW的數據文件

# id lebnik 
uid=1000(lebnik) gid=1000(lebnik) groups=1000(lebnik),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev) 

我的Apache運行PHP的腳本,看看這個:

[email protected] /etc/apache2 # grep -R "APACHE_RUN_USER=" . 
./envvars:export APACHE_RUN_USER=www-data 

有關用戶WWW的數據信息:

# id www-data 
uid=33(www-data) gid=33(www-data) groups=33(www-data) 

我創建的PHP腳本file.php:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors',1); 

echo `whoami`; 

$file = __FILE__.'.tmp'; 

file_put_contents($file, 'Hi'); 

echo file_get_contents($file)."\n"; 

$dirname = dirname(__FILE__); 

echo `ls -la $dirname`; 
?> 

接下來,我嘗試把我的腳本與Apache:

# curl http://starsite.l/test/file.php 
www-data 
Hi 
total 16 
drwxrwxrwx 1 lebnik www-data 4096 Oct 18 00:49 . 
drwxrwxr-x 1 lebnik www-data 4096 Oct 18 00:36 .. 
-rw-rw-r-- 1 lebnik www-data 225 Oct 18 00:46 file.php 
-rw-r--r-- 1 lebnik www-data 2 Oct 18 00:49 file.php.tmp 

你看到了嗎? PHP創建文件file.php.tmp來自用戶lebnik。我的配置有什麼問題?

+0

這種行爲是非常奇怪的。你使用什麼操作系統? – 2014-10-18 05:32:53

+0

你很可能有一個共享的託管帳戶。您的apache安裝程序使用[suexec](http://httpd.apache.org/docs/2.4/suexec.html)(通過Fast-CGI或類似方法)將PHP腳本作爲文件的所有者(而不是apache)運行以確保安全原因。當您在PHP腳本外部調用whoami命令時,whoami命令將作爲apache用戶www-data運行。 – kums 2014-10-19 00:25:39

+0

您可能可以更改一些配置文件,甚至使外部命令作爲用戶帳戶運行。 – kums 2014-10-19 00:32:52

回答

0

對不起,我從錯誤的用戶安裝在VirtualBox中的文件夾:

mount -t vboxsf -o uid=1000,gid=33 starsite.l /var/www/starsite.l 

正確安裝:

mount -t vboxsf -o uid=33,gid=33 starsite.l /var/www/starsite.l