Как сменить владельца и права папок и файлов в 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/путь_к_нужной_директории При запуске скрипта без параметров будут изменены права для всех файлов и директорий, располагающихся в DocumentRoot. Не забывайте, что на некоторых хостингах есть ограничение на права доступа, например 755 для каталогов, 644 и 755 для файлов. Выставление некорректных прав может привести к ошибкам в работе сайта. Поэтому, если Вы всё сделали правильно, а воз поныне там права не изменились, не поленитесь почитать FAQ/правила хостинга. Источник: Хостер01
14 сентября 2011 года
Комментарии (3)Добавить комментарий >>игорь 21 мая 2013 года 08:29:16 # комментировать
Работа в интернете, без вложений, для всех и каждого, минимум усилий, заходи быстрее, лучший заработок в интернете, свободный график и реальные деньги заходите http://rabotaopros.webservis.ru УДАЧИ… Все бесплатно…Успевай…
Алекс 26 декабря 2011 года 01:05:07 # комментировать
Здравствуйте.
А можно скрипт написать так, что бы директориям присваивалось 755, а файлам 644? То есть вы могли бы написать такой код? Буду очень признателен.
С уважением,
Алекс
Алекс 26 декабря 2011 года 01:04:29 # комментировать
Здравствуйте.
А можно скрипт написать так, что бы директориям присваивалось 755, а файлам 644? То есть вы могли бы написать такой код? Буду очень признателен.
С уважением,
Алекс
Добавить комментарий |