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

Иногда на хостинге может появиться такая проблема, когда Вы не можете стандартным способом сменить права на папки и файлы, если не являетесь их владельцем. Например, если их владельцем оказался 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/правила хостинга.

А как поменять владельца

А как поменять владельца файла в ISP manager у меня стоит там apache и не могу удалить этот файл ни изменять.
тех поддержка уже 2 раза пересоздали аккаунт и не хотят больше пересоздать.
Проблема появляется тогда когда я устанавливаю joomla 2/5 создается файл конфигурации с владельцем apache

молодца, а то virtuemart

молодца, а то virtuemart права выставил от www юзера и нелзя было менять файлы

Спасибо, как раз то, что надо

Спасибо, как раз то, что надо :)

Вот здесь еще статейка на

Вот здесь еще статейка на этуже тему http://infobsd.ru/content/%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C-%D0%BF%D1%80%D0%B0%D0%B2%D0%B0-find-chmod

В указанной Вами статье

В указанной Вами статье приводится руководство для владельцев виртуального хостинга VDS/VPS. Когда у меня VDS, я такой полноправный хозяин файлов, что без проблем могу поменять всё, что захочу при помощи встроенного в панель менеджера файлов. А в данной статье приводится случай обхода ограничений, когда ты бесправный клиент супердешевого хостинга. В общем это разные вещи.

спасибо за скрипт. мой хостер

спасибо за скрипт. мой хостер цука 93w.ru совсем охренел, на ISP все переставил и начались глюки с правами.

Зачем 777 на файлы?

лучше так: function chmod_R($path) { $handle = opendir($path); while ( false !== ($file = readdir($handle)) ) if ( ($file !== "..") && $file !== ".") { if ( is_dir($path . "/" . $file) ){ @chmod($path . "/" . $file, 0777); chmod_R($path . "/" . $file); }else @chmod($path . "/" . $file, 0666); } closedir($handle); } я живу тут

НЕ ПОЛУЧАЕТСЯ!!!

НАПИШИ ПОЖАЛУЙСТА, КАК ДЛЯ БЛОНДИНОК!!!
ЧТОБЫ ДАЖЕ ЧЕЛОВЕКИ КОТОРЫЕ ДУД-ДУБОМ СЕЛ И СДЕЛАЛ
КАК СКРИПТ ВЫЗЫВАТЬ!!! ЧЕГО И ГДЕ ИМЕННО ПИСАТЬ?????????????
НУЖНО УДАЛЯТЬ ТЕКСТ ["DOCUMENT_ROOT"] ИЗ ФАЙЛА ИЛИ НЕТ??? ИЛИ РЯДОМ ПУТЬ ПИСАТЬ???
ПОЖАЛУЙСТА????????????????????????????????????????????????????????????????????????

Для блондинок

Для блондинок:
Открываешь блокнот. Вставляешь в него код
-----------------
<?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;
// измените права доступа здесь, если не выставляются права 755
chmod_R($path, 0755);
echo $path;
?>
------------------
сохраняешь под именем chmod.php. Закачиваешь полученный файл в корень сайта. Открываешь Firefox, пишешь адрес http://мойсай.ру/chmod.php
В результате имеешь все папки и файлы с правами 0755. И после этого можешь их изменять и удалять.

это все папки в корневой

это все папки в корневой деректории. А чтоб поменять пипки которые лежат в натри корневых, что писать то ???????????????????????? (((((((((((((
прим: есть в корне папка admin в ней папка uzer и в этой папки мне надо всем вложениям задать права 777 НУ КАК ЭТО ЗДЕЛАТЬ ?

ну ты сука даун

ну ты сука даун

Помогите пожалуста

Я на одном хостинге уже давно,теперь они поменяли панель на ISP Manager что теперь невозможно не поменять права на файлы или папки или загрузить файлы,потому что невозможно сбросить пользователя на папки или файлы,я написал хостеру так он мне написал что теперь сброс пользователя стоит денег,что то хитрый он стал,теперь я как понял с вашей статьи что можно самому сбросить с помощью этого скрипта,пробую у меня не получается,пишет все время ошибка
Помогите я принципиально не хочу платить денег,когда я заказывал у него хостинг нечего такого оговорено не было,да и панель была нормальная

Мегаспасибо

Низкий вам поклон, добрый человек. С вашим скриптом ушло 99% проблем...

Спасибо Вам большое

Спасибо Вам большое пребольшое!!! Этот скрипт как бальзам на душу, я не то что ночь, я весь день промучался, пока прочитал у Вас как все сделать за 1 минуту )))

Аналогичное спасибо!

Аналогичное спасибо!

Спасибо вам большое. Я

Спасибо вам большое. Я полночи промучился чтобы права у файлов поменять, пока на вашу статью не наткнулся.

Огромное спасибо!

Огромное спасибо! Статья супер.
Помогло!