环境
- PHP -V输出: PHP 5.3.5-1ubuntu7.2用了Suhosin贴片(CLI)(建:2011年5月2日23点00分17秒)版权所有(C)1997-2009 PHP的集团Zend引擎V2.3.0,版权所有(C)1998-2010 Zend技术
- 猫的/ etc /输出问题:的Ubuntu 11.04
- 的Apache2 -V输出中:服务器版本:阿帕奇/ 2.2.17 (Ubuntu)服务器内置:Sep 1 2011 09:31:14
- 浏览器关于输出:火狐6.0.2
PS -AUX
输出继电器
root 2943 0.0 0.3 206420 12428 ? Ss Sep19 0:20 /usr/sbin/apache2 -k start
www-data 18658 0.0 0.2 208552 11096 ? S Sep25 0:00 /usr/sbin/apache2 -k start
www-data 18659 0.0 0.3 208976 12036 ? S Sep25 0:00 /usr/sbin/apache2 -k start
www-data 18660 0.0 0.3 210532 12476 ? S Sep25 0:00 /usr/sbin/apache2 -k start
www-data 18661 0.0 0.3 210276 11820 ? S Sep25 0:00 /usr/sbin/apache2 -k start
www-data 18662 0.0 0.2 206948 10236 ? S Sep25 0:00 /usr/sbin/apache2 -k start
www-data 20037 0.0 0.3 208976 12128 ? S 08:22 0:00 /usr/sbin/apache2 -k start
www-data 20039 0.0 0.3 209132 11748 ? S 08:23 0:00 /usr/sbin/apache2 -k start
www-data 20120 0.0 0.3 209004 12000 ? S 09:04 0:00 /usr/sbin/apache2 -k start
文件权限
drwxr-xr-x 2 www-data www-data 4096 2011-09-26 15:24 .
drwxr-xr-x 4 www-data www-data 4096 2011-08-26 11:31 ..
-rw-r--r-- 1 root root 161976 2011-08-26 16:26 market.txt
-rw-r--r-- 1 root root 0 2011-09-26 14:55 test1.txt
-rw-r--r-- 1 root root 0 2011-09-26 14:55 test2.txt
-rw-r--r-- 1 root root 0 2011-09-26 14:55 test3.txt
-rw-r--r-- 1 root root 0 2011-09-26 14:55 test4.txt
-rw-r--r-- 1 root root 0 2011-09-26 15:02 test5.txt
代码
rename($file, "$dest/$file");
问题
当我在上面的文件权限部分中列出的文件上运行上述代码时,它将文件从其当前位置正确移动到新位置并删除原始文件。当apache2作为www-data运行并且这些文件由root拥有并且只对非root用户具有读访问权时,这怎么可能?在PHP文件,它说:PHP rename()忽略权限?
如果目标文件系统不允许CHOWN警告可能会产生()或搭配chmod()系统调用要对文件所做的 - 例如,如果目标文件系统是FAT文件系统。
rename()在调用过程中调用其中的哪一个系统函数?如果是这样,为什么?不管怎样,www数据不应该能够chown/chmod root拥有的文件。
任何人都可以向我解释这是怎么发生的?
其他信息
- 我已经通过根和WWW的数据拥有的PHP脚本尝试这样做,它的工作原理。
我试图提供尽可能多的相关信息,但让我知道你是否需要其他东西。
这是有道理的。我测试了将文件夹chown到root:root,我无法移动该文件。谢谢! –