Php chown user and group

Not tested, but after creating the folder, you can run another line of code to change the owner/group

// define user and group
$owner = "dropbox";
$group = "dropbox";
$folder = "/home/dropbox/New_Project_Name/new_folders";

// change the owner and group
chown($folder, $owner);
chgrp($folder, $group);

Keep in mind, that it might throw an error, because there are subfolders and the operation fails. A while loop should solve the problem.

There might be an issues with the permissions, up to the server-config

There is another way to run it recursively with the "exec" command.

you can go like this:

exec("chown -R ".$owner.":".$group." ".$folder);

This will change user and group for the folder and all sub-folders. But beware, using system is "dangerous". You can run any shell-commands. Don't play around with it too much.

(PHP 4, PHP 5, PHP 7, PHP 8)

chownChanges file owner

Description

chown(string $filename, string|int $user): bool

Parameters

filename

Path to the file.

user

A user name or number.

Return Values

Returns true on success or false on failure.

Examples

Example #1 Simple chown() usage

// File name and username to use
$file_name"foo.php";
$path "/home/sites/php.net/public_html/sandbox/" $file_name ;
$user_name "root";// Set the user
chown($path$user_name);// Check the result
$stat stat($path);
print_r(posix_getpwuid($stat['uid']));?>

The above example will output something similar to:

Array
(
    [name] => root
    [passwd] => x
    [uid] => 0
    [gid] => 0
    [gecos] => root
    [dir] => /root
    [shell] => /bin/bash
)

Notes

Note: This function will not work on remote files as the file to be examined must be accessible via the server's filesystem.

Note: On Windows, this function fails silently when applied on a regular file.

martijn at sigterm dot nl

19 years ago

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).

Mikevac at yahoo dot com

14 years ago

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.

Klaus Zierer

19 years ago

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");

njs+php at scifi dot squawk dot com

22 years ago

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.

rickard at 0x539 dot se

13 years ago

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.

Tayfun Bilsel

16 years ago

Simple usage of the chown:

$file_name

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

greg _at_ rhythmicdesign d.o.t com

18 years ago

function recurse_chown_chgrp($mypath, $uid, $gid)
{
   
$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.

Does chown change group?

The chown() function changes the owner and primary group of a file. If the named file is a symbolic link, chown() resolves the symbolic link.

What does chown user :$ user do?

Description. chown sets the user ID (UID) to owner for the files and directories named by pathname arguments. owner can be a user name from the user data base, or it can be a numeric user ID. (If a numeric owner exists as a user name in the user data base, the user ID number associated with that user name is used.)

How do you use chown to set the group owner to a file?

Use the following procedure to change the ownership of a file..
Become superuser or assume an equivalent role..
Change the owner of a file by using the chown command. # chown new-owner filename. new-owner. ... .
Verify that the owner of the file has changed. # ls -l filename..

How do I change chown permissions?

The chown command changes the owner of a file, and the chgrp command changes the group. On Linux, only root can use chown for changing ownership of a file, but any user can change the group to another group he belongs to. The plus sign means “add a permission,” and the x indicates which permission to add.