Настройка пользовательских и групповых прав доступа с помощью chmod

Вообще, когда мы говорим о каталогах или файлах, нас интересует три набора прав:

  • Пользовательские — касающиеся владельца файла
  • Групповые — права, касающиеся участников одной группы
  • Все остальные — разрешения для тех, кто не подходит к первым двум группам

Соответственно, каждый пользователь имеет своё уникальное имя и, как правило, принадлежит к одной или нескольким группам. Более того в одну группу может входить несколько пользователей.

Заметка: команда 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.