Как сменить владельца и права папок и файлов в UNIX/LINUX

Категории: Программирование

Иногда на хостинге может появиться такая проблема, когда Вы не можете стандартным способом сменить права на папки и файлы, если не являетесь их владельцем. Например, если их владельцем оказался Apache при распаковке архива непосредственно на сервере.

Не хотите заморачиваться SSH, можете перейти к решению проблемы при помощи PHP-скрипта.

1. Как изменить права для таких файлов и папок

Командой chmod с помощью SSH-доступа. Например, следующей командой UNIX shell:

chmod -R 777 /var/www/isbircom/data/temp

будут установлены рекурсивно права 777 на все поддиректории и файлы директории /var/www/isbircom/data/temp

Если нужно изменить права только файлам, но не трогать папки, или наоборот, можно это реализовать следующими Unix командами:

find /www. -type f -exec chmod 644 {} \; - изменяет только файлы

find /www/ -type d -exec chmod 755 {} \; - изменяет только папки

2. Как изменить владельца у файлов и папок

Командой chown в UNIX shell. Например командой:

chown -R webadmin:psacln /var/www/isbircom/data/www/

будут установлены рекурсивно владельцем файлов и директорий пользователь webadmin и группа psacln директории /var/www/isbircom/data/www/

Если нужно сменить владельца файлов или папок:

find /www/ -type f -exec chown user:group {} \; - изменяет только файлы

find /www/ -type d -exec chown user:group {} \; - изменяет только папки

3. Есть ли возможность изменения приоритета прав у пользователя и apache

Нет. Т.к. веб-сервер Apache запускается стандартно в Plesk из под пользователя и одноименной группы apache, то изменить этого нельзя. Для периодичекого изменения прав на необходимые директории можно составить Cron-задание с той же командой UNIX shell.

Как решить проблемы с доступом к файлам площадки, созданным PHP-скриптами?

Дело в том, что PHP-сценарии, запущенные модулем mod_php, выполняются от имени пользователя wwwserver. Соответственно, если на чтение/модификацию не были выставлены разрешения для всех (достаточно 666 — для файлов, 777 — для каталогов), то модификация созданных такими скриптами файлов (каталогов) пользователю uXXXX (id площадки) будет запрещена (при доступе по SSH, по FTP).

Исключить проблему можно, установив достаточные права файлов/каталогов посредством функции chmod.

Сделать это рекурсивно можно, исполнив PHP-сценарий:

<?php
function chmod_R($path, $perm) {
 $handle = opendir($path);
 while ( false !== ($file = readdir($handle)) ) {
 if ( ($file !== "..") ) {
 @chmod($path . "/" . $file, $perm);
 if ( !is_file($path."/".$file) && ($file !== ".") )
 chmod_R($path . "/" . $file, $perm);
 }
 }
 closedir($handle);
}
$path = $_SERVER["QUERY_STRING"];
if ( $path{0} != "/" )
 $path = $_SERVER["DOCUMENT_ROOT"] . "/" . $path;
// измените права доступа здесь, если не выставляются права 777
chmod_R($path, 0777);
echo $path;
?>

Создайте файл chmod.php в корневой директории (DocumentRoot) веб-сервера (то бишь в верхней, корневой директории сайта domain.tld), и вставьте в него вышеприведенный скрипт.

Вызывать скрипт нужно так: http://domain.tld/chmod.php?путь_к_нужной_директории

или так: http://domain.tld/chmod.php?/home/uXXXXX/domain.tld/www/путь_к_нужной_директории
В первом случае указывается путь относительно корневой директории вашего сайта. Например, http://hoster01.ru/chmod.php?/sites - изменить права во всех подпапках /sites

Во втором случае - абсолютный путь от корневой директории сервера (где uXXXXX — идентификатор вашей площадки, присвоенный вашим хостинг-провайдером, если не помните, посмотрите в панели управления).

При запуске скрипта без параметров будут изменены права для всех файлов и директорий, располагающихся в DocumentRoot.

Не забывайте, что на некоторых хостингах есть ограничение на права доступа, например 755 для каталогов, 644 и 755 для файлов. Выставление некорректных прав может привести к ошибкам в работе сайта. Поэтому, если Вы всё сделали правильно, а воз поныне там права не изменились, не поленитесь почитать FAQ/правила хостинга.

Источник: Хостер01

Ключевые слова: unix, linux, права доступа, chown, chmod

Комментарии (3)

Добавить комментарий >>
игорь 21 мая 2013 года 08:29:16 # комментировать
Работа в интернете, без вложений, для всех и каждого, минимум усилий, заходи быстрее, лучший заработок в интернете, свободный график и реальные деньги заходите http://rabotaopros.webservis.ru УДАЧИ… Все бесплатно…Успевай…
Алекс 26 декабря 2011 года 01:05:07 # комментировать
Здравствуйте. А можно скрипт написать так, что бы директориям присваивалось 755, а файлам 644? То есть вы могли бы написать такой код? Буду очень признателен. С уважением, Алекс
Алекс 26 декабря 2011 года 01:04:29 # комментировать
Здравствуйте. А можно скрипт написать так, что бы директориям присваивалось 755, а файлам 644? То есть вы могли бы написать такой код? Буду очень признателен. С уважением, Алекс

Добавить комментарий


Share |