Web-ломастеру на заметку: права на хостинге

Приветствую начинающих сайто-строителей!

Тема сегодня очень своеобразная и узкоспециальная, как это часто случается здесь. Речь пойдет о том, как управлять правами для вашего сайта на сервере хостера.

Более конкретно, о хостинге под управлением 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

Кому что непонятно — пишите.

Пока все вроде 🙂

Share
Запись опубликована в рубрике ЭВТ ИТ с метками , , , , , , , , , , , , , , , , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *