php 修改文件所有者,PHP 改变文件的所有者

这篇博客讨论了如何在不以root权限运行Apache的情况下,允许其更改文件所有权。提到了通过sudo和修改系统设置来解决这个问题,同时也警告了这样做的潜在安全风险。还包含了关于使用PHP的chown()函数来改变文件所有权的例子。
摘要由CSDN通过智能技术生成

用户评论:

rickard at 0x539 dot se (2009-06-18 14:04:51)

For most modern Linux systems your apache user should not be run as root, and in order to change the ownership of a file or directory, you need to be root. To get around this problem you can use sudo, but be careful with what permissions you give. Here is an example which is working for me:

www-data ALL = NOPASSWD: /bin/chown 1[1-9][0-9][0-9]\:1[1-9][0-9][0-9] /home/www/[a-zA-Z0-9]*

This allows the apache server to change ownership of files in /home/www with name containing a-z, A-Z or numbers (note: no subdirectories). The only valid input of userid is a four digit numeric id, between 1100 and 1999.

Hope this helps.

Mikevac at yahoo dot com (2008-02-01 11:42:43)

I've only tested this on Solaris 10 so your mileage may vary.

To allow the apache daemon to change file ownership without being root, add the following line to /etc/system:

set rstchown=0

Reboot the server.

There are security concerns doing this as this modification allows any user to change ownership of their files to anyone else.

Tayfun Bilsel (2006-01-11 08:13:32)

Simple usage of the chown:

$file_name="test";$path="/var/www/html/test/".$file_name;$user_name="root";chown($path,$user_name);?>

Jens Vieler (2005-05-23 00:38:03)

for some reason i was searching for chown() with an "on this mashine"-unknown userid and found martijn's hint very interesting. the main problem is, that if the numerical uid is used within a variable, it is checked against the /etc/passwd and returns "unknown user". a little note:

use intval(), not inval()! so all in all it is:

chown($path_to_dir,intval($uidnumber));

greg _at_ rhythmicdesign d.o.t com (2004-02-23 16:00:10)

{$d=opendir($mypath) ;

while(($file=readdir($d)) !==false) {

if ($file!="."&&$file!="..") {$typepath=$mypath."/".$file;//print $typepath. " : " . filetype ($typepath). "
" ;if (filetype($typepath) =='dir') {recurse_chown_chgrp($typepath,$uid,$gid);

}chown($typepath,$uid);chgrp($typepath,$gid);

}

}

}recurse_chown_chgrp("uploads","unsider","unsider") ;?>

for older versions.. unfortunately, it seems I do not have permission to perform these functions.

Klaus Zierer (2003-06-27 08:37:51)

If you want to chown a symlink, PHP will follow the symlink and change the target file.

If you want to chown the symlink, you have to use shell_exec("/bin/chown user.group symlink");

martijn at sigterm dot nl (2003-06-20 07:28:24)

If chown is filled with a variable ( chown ("myfile", $uid) the uid will be looked up through pwget_uid.

So if you need to set a non existing uid use inval($uid).

njs+php at scifi dot squawk dot com (2000-09-21 23:28:33)

If you allow sudo execution for chmod by "nobody" (www, webdaemon, httpd, whatever user php is running under)in this manner, it had better be a system on which the owner is able to be root and no one else can run code, else your whole system is compromised. Someone could change the mode of /etc/passwd or the shadow password file.

Other system commands (sudo mount) and so forth are similar.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值