Приветствую начинающих сайто-строителей!
Тема сегодня очень своеобразная и узкоспециальная, как это часто случается здесь. Речь пойдет о том, как управлять правами для вашего сайта на сервере хостера.
Более конкретно, о хостинге под управлением Unix-OS, где у вас есть доступ посредством SSH. Отсюда следует, что текст приведенный далее адаптирован для людей, имеющих небольшой опыт создания своих web-страниц и хотя бы непродолжительном тесном общении с Unix-подобными операционными системами.
Поехали.
Ситуация следующая. Вы распаковали на сервер хостинга ваш движек сайта (Joomla, WordPress или что-либо другое из готовых решений для разворачивания сайта), и вам нужно, чтобы у файлов и каталогов системы управления сайтом появились нужные и соответствующие права в файловой системе удаленной юникс-машины. Как известно многим посвященным, в подобных операционных системах для присвоения нужных прав в файловой системе (EXT3, Reiser…) используется консольная утилита chmod.
Эта небольшая утилита позволяет гибко изменять права для любого файла и/или каталога. Не буду здесь давать развернутое описание данной системы прав, отмечу лишь, что для большинства случаев, права для файлов (скрипты, индексные файлы — index.php, index.html и т.п.) должны быть равны значению 0644, а для каталогов 0755, если не оговорено иное.
Если кратко, то 0644 означает что владелец файла может изменять и читать, а все остальные лишь читать файл. Для каталогов 0755 означает, что атрибуты такие же как в предыдущем случае с 0644, только дополнительно доступен запуск, что является обязательным критерием для каталогов в юникс-системе, если содержимое каталогов должно быть доступно для общего обозрения.
С правами для отдельных файлов и каталогов вроде более или менее ясно, осталось лишь разобраться, как установить все права на весь каталог вашего сайта/CMS.
В случае с единичными файлами / каталогами, достаточно в консольном окне ssh-клиента набрать команду типа:
chmod 644 file.html
или
chmod 755 ./katalog
Но как быть, если каталогов и файлов в них скажем, пара сотен? Думаю вас не прельщает идея выполнять столь простую команду для каждого объекта в каталоге. Меня вобщем-то аналогично. Потому мы пойдем более простым путем.
Будучи «залогиненым» в своем каталоге пользователя хостинга, создайте текстовый файл без расширения такого содержания:
#!/bin/bash # Recursively chmod for files (644) and directories (755) in www directory # Do "cd ~/hosting_dir/home_dir/www_dir" and run this script (from www_dir) find -type f -exec chmod 644 {} ; find -type d -exec chmod 755 {} ; #
Затем сохраните, например под именем rchmod (или иное удобное, которое вызывает ответ «command not found» у вашего шелл-клиента) у себя вкаталоге и, далее не выходя из каталога задайте права самому файлу скрипта:
chmod 755 rchmod
Теперь ваш файл готов к «бою». Для его использования достаточно скопировать скрипт в нужную директорию:
cp rchmod ~/www/mysite
перейти в директорию
cd ~/www/mysite
и выполнить исполняемый файл:
sh ./rchmod
После данной нехитрой операции, все ваши каталоги будут иметь права 755, а файлы 644. Мелочь, а приятно.
Если для каких-то отдельных скриптов или конфигурационных файлов нужны отдельные права, например 600 (чтение и запись ТОЛЬКО для владельца), то выполните для них:
chmod 600 file.php
Кому что непонятно — пишите.
Пока все вроде 🙂