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).
(PHP 4, PHP 5, PHP 7, PHP 8)
chown — Изменяет владельца файла
Осуществляет попытку изменения владельца файла с именем
filename
на владельца, чьё имя передано
в параметре user
(в виде числа или строки).
Только суперпользователь может изменять владельца файла.
filename
Путь к файлу.
user
Имя пользователя или число.
Функция возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Пример простого использования chown()
<?php
// Используемое имя файла и имя пользователя
$file_name= "foo.php";
$path = "/home/sites/php.net/public_html/sandbox/" . $file_name ;
$user_name = "root";
// Устанавливаем пользователя
chown($path, $user_name);
// Проверяем результат
$stat = stat($path);
print_r(posix_getpwuid($stat['uid']));
?>
Вывод приведённого примера будет похож на:
Array ( [name] => root [passwd] => x [uid] => 0 [gid] => 0 [gecos] => root [dir] => /root [shell] => /bin/bash )
Замечание: Эта функция неприменима для работы с удалёнными файлами, поскольку файл должен быть доступен через файловую систему сервера.
Замечание: В Windows функция молча завершается ошибкой при применении к обычному файлу.
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).
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.
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");
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.