Настройка пользовательских и групповых прав доступа с помощью 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.

Комментарии

5
Sergey, 2 года назад
1

"Теперь разрешим всем пользователям, входящим в одну группу, чтение и запись в каталоги: sudo chmod -R g+rx /var/www"

Здесь разрешение на чтение и выполнение

devacademy, 2 года назад
0

исправлено

Каменский Геннадий, 10 месяцев назад
1

Спасибо, а то после установки WP на VPS, при установке плагинов или обновления на WP, все время запрашивал пароль к FTP и были ошибки при создании каталога на сервере при добавлении плагина. Добавил группу www-data через консоль и всё стало нормально работать, без подтверждения прав. Хотя права установлены на все папки 755. Кстати, связка Nginx + HHVM также заработала только после указания в конфиге NGINX пользователя www-data.