Вообще, когда мы говорим о каталогах или файлах, нас интересует три набора прав:
- Пользовательские — касающиеся владельца файла
- Групповые — права, касающиеся участников одной группы
- Все остальные — разрешения для тех, кто не подходит к первым двум группам
Соответственно, каждый пользователь имеет своё уникальное имя и, как правило, принадлежит к одной или нескольким группам. Более того в одну группу может входить несколько пользователей.
Заметка: команда chmod в качестве одного из параметров принимает целочисленное значение, которое отвечает за набор прав. По ссылке вы найдете более подробную информацию по теме.
Я расскажу, как использовать chmod — команда, предназначенная для управления разрешениями (правами доступа) для работы с директориями и файлами.
Использование
chmod -ключи права путь/к/директории/файлу
Ключи
Команда chmod -R
будет рекурсивно применена ко всем вложенным файлам и каталогам.
Изменение разрешений
Указать к кому применяется тот или иной набор прав вы можете при помощи следующих ключей:
- u — пользователь
- g — группа
- o — все остальные
Добавлять и удалять права можно следующим образом:
+
— добавит права (знак плюс)-
— удалит права (знак минус)
Сами же права задаются вот так:
- r — чтение
- w — запись
- x — выполнение
Применим все это, чтобы настроить права доступа для Apache.
Основные моменты
- Apache запущен под пользователем и группой
www-data
- Корень сервера располагается по адресу
/var/www
Первое
Изменим владельца корневого каталога сервера:
sudo chown -R www-data:www-data /var/www
Добавить пользователя к группе www-data можно следующей командой:
sudo usermod -a -G www-data username
Удалить пользователя из группы www-data можно командой:
sudo gpasswd -d username www-data
Второе
Необходимо задать соответствующие права пользователям и группам. Сначала мы полностью закроем доступ, а потом разрешим только то, что необходимо.
Для начала закроем доступ к корневому каталогу для всех кроме его владельца, а именно — www-data
. Мы используем ключ -go
, чтобы изменения затронули группу и всех остальных пользователей, -
означает удаление прав, а rwx
означает, что мы запрещаем им читать, писать и запускать файлы из этого каталога.
sudo chmod go-rwx /var/www
Чтобы проверить какие права установлены на директорию выполните в командной строке: ls -la /var/www
Затем разрешим пользователям группы www-data
и всем остальным просматривать корневой каталог. Команда работает не рекурсивно. Опять таки мы используем +
, чтобы добавить права, а х
отвечает за право выполнять файлы.
sudo chmod go+x /var/www
Теперь изменим группу, к которой принадлежит корневой каталог, применив рекурсивный вариант команды.
sudo chgrp -R www-data /var/www
Сделаем очередной сброс прав, таким образом только один пользователь имеет доступ к каталогу и всем входящим в него файлам.
sudo chmod -R go-rwx /var/www
Теперь разрешим всем пользователям, входящим в одну группу, чтение и запись в каталоги:
sudo chmod -R g+rw /var/www
На самом деле я выдаю права записи пользователям, входящим в одну группу, которую потом использую для всех, кто может изменять код на веб сервере. Делаю я это следующим образом:
chmod -R g+rwx /var/www
Очень часто нам не требуется выполнять все эти шаги, и базовой настройки сервера вполне достаточно, но, зато на примере настройки прав для Apache мы рассмотрели возможности команды chmod
.