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

1887

Apach

Столкнулся с проблемой, после установки joomla на хостинг не смог изменить шаблон сайта, т.к. владельцем файлов является apach. Можно, конечно, установить файл-мененджер под joomla и править из-под нее файлы. Но это не очень удобно. Гараздо приятней работать с файлами через фтп-клиент.

И все же есть несколько способов решения данной проблемы. Воспользуемся Unix командами.

1. Изменяем права для файлов и папок командой chmod с помощью SSH-доступа.

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

chmod -R 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.

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

chown -R 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.

4. Как решить проблемы с доступом к файлам площадки, созданным 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) веб-сервера (то бишь в верхней, корневой директории сайта), и вставьте в него вышеприведенный скрипт.

Вызывать скрипт нужно так: путь_к_нужной_директории

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

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