Chmod
Для тех, кто ищет быстрый способ парой командой массово поменять права доступа на файлы и папки:
cd /var/www/sheensay.ru find ./ -type f -exec chmod 0644 <> \; find ./ -type d -exec chmod 0755 <> \;
Если не в курсе, что это, подробности далее
Что такое Chmod
Это UNIX-утилита, с помощью которой можно быстро через консоль изменить права на доступ для определённых владельцев (owner) и групп (group) для указанных категорий и файлов.
Зачем использовать Chmod
В UNIX-системах — FreeBSD, Ubuntu, Debian, Centos — у каждого файла и папки (каталога) есть свои владелец и группа, к которым они относятся. Сделано это с целью разграничения прав доступа на чтение (r, read), запись (w, write) и исполнение (x, execute) для разных пользователей: владельцев (u), пользователей, входящих в группу владельца (g) и остальных (o).
Например, если вы пользуетесь хостингом, то должны знать, что ваш сайт физически находится на одном сервере рядом со множеством других сайтов таких же, как вы, пользователей со своими сайтами. Чтобы вы не смогли помешать друг другу, у каждой директории с сайтами свой владелец и группа пользователей, к которым они относятся.
На shared хостинге о вас позаботятся профессиональные системные администраторы. А если вы имеете свой сервер VDS/VPS, то просто обязаны следить за прописанными правами на доступ к файлам. Например, если вдруг с помощью уязвимости на сайте злоумышленник сможет записать backdoor в директорию для загрузки файлов, то с правильно прописанными правами доступа он не сможет причинить большого вреда файловой системе. Конечно, в директории для загрузки файлов должно быть принудительно отключено исполнение скриптов, но это тема уже для другого разговора.
Синтаксис Chmod
chmod [-Rvf] [Правила доступа] [Файл/Файлы/Каталог, директория файлов]
В части [Правила доступа] могут быть либо числовые, либо символьные значения.
[Файл/Файлы/Каталог файлов] — путь к файлу, файлам или к каталогу файлов, абсолютный или относительный.
Ключи -R, -v, -f
- -R
Рекурсивное изменение прав доступа для каталога и вложенных файлов и подкаталогов - -v
Подробное описание применения изменения прав доступа или невозможности этого действия - -f
Не выдавать сообщение об ошибке для тех файлов и каталогов, для которых невозможно изменить права доступа
Правила доступа Chmod
Как вы уже знаете, права доступа определяются тем, как пользователь может взаимодействовать с файлами и каталогами, а именно r — read (чтение), w — write (запись), x — execute (выполнение).
А также, вы знаете, что эти права должны быть прописаны для трёх групп пользователей:
- Владелец файла или каталога;
- Пользователи, входящие в группу владельца;
- Остальные.
Теперь посмотрим в таблицу определения прав:
Три варианта записи прав пользователей
То есть, для того, чтобы записать правило для владельца дать доступ на чтение и запись, остальным дать права только на чтение, мы должны дать права ( rw-r—r— )
Теперь обратите внимание на столбец Символьная и Восьмеричная . Там визуально показано, что то, что выглядит символьно как ( rw-r—r— ), в восьмеричном виде выглядит как ( 644 ). Это выражение и будем использовать как числовую запись в команде.
Теперь осталось собрать всё воедино в одну запись. Для примера, изменим права на доступ «всем дать права на чтение, владельцу право изменять содержимое» для файла index.php :
Как проверить права Chmod
где index.php — файл или каталог, который нужно проверить.
Пример правильного использования Chmod
Правила доступа по умолчанию для каталогов 755 , для файлов 644 . Поэтому, в подавляющем большинстве случаев, вам понадобятся только эти права.
Ниже пример того, как в каталоге /var/www/sheensay.ru на все файлы рекурсивно поставить права 0644 , а на все каталоги и подкаталоги 0755
cd /var/www/sheensay.ru find ./ -type f -exec chmod 0644 <> \; find ./ -type d -exec chmod 0755 <> \;
Первой командой переходим в нужную директорию, далее с помощью команды find ищем нужный тип: файлы -f (files) и каталоги -d (directories) — и запускаем chmod с нужными правами.
После использования Chmod появились ошибки
Если после правильной настройки Chmod перестали открываться некоторые страницы сайта, открывается белый экран, не загружаются файлы на сайт, проверьте, правильно ли вы установили Chown для всех каталогов и файлов сайта, возможно, права доступа стоят слишком строгие. Либо или php, или Apache запускаются не от того пользователя.