Столкнулся с проблемой, после установки 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 для файлов. Выставление некорректных прав может привести к ошибкам в работе сайта.