Права доступа CHMOD для пользователей и групп в Apache

Недавно мне довелось прочесывать интернет в надежде найти подробную информацию о том, как правильно выставить права доступа для пользователей и групп в Apache с помощью chmod. Что мне удалось найти:

Основы

Есть три группы прав доступа к файлам/директориям, о которых вам стоит позаботиться:

  • Пользователь – что может делать владелец файла;
  • Группа – что могут делать пользователи отдельных групп;
  • Другие – что могут делать остальные пользователи.

У пользователей есть логины (уникальные для каждого пользователя). Пользователи могут быть частью группы.

Примечание: команда chmod принимает целые числа (0664), и каждая из цифр отвечает за определенные права доступа.

Сегодня я расскажу вам о том, как правильно использовать chmod-настройки. Chmod используются для изменения прав доступа к директории или файлу.

Chmod cинтаксис:

chmod -flags permissions /path/to/dir/or/file

Флаги

-R

chmod –R позволит рекурсивно пройтись по всей указанной директории и изменить права доступа для всех файлов и вложенных директорий.

Изменяем права доступа

Вы можете определять, для кого изменяете права доступа:

  • u = пользователь;
  • g = группа;
  • o = другие.

Вы можете добавлять или удалять права доступа при помощи следующих команд chmod:

  • + добавить права доступа;
  • - удалить права доступа.

Можно задавать следующие права доступа:

  • r = чтение;
  • w = запись;
  • x = исполнение.

Эти знания можно использовать для настройки прав доступа в Apache:

  • Apache запущен как пользователь www-data в группе www-data;
  • Корневой каталог сервера: /var/www.

Для начала

Нам нужно установить владельца/группу для корневого каталога (и любых внутренних директорий и файлов):

$ sudo chown -R www-data:www-data /var/www

Нужно установить правильные права доступа для пользователей и групп. Запускаем несколько общих команд, которые закрывают доступ, а затем открываем доступ, насколько нам требуется.

Сначала сделайте так, чтобы никто кроме текущего пользователя (www-data) не имел доступа к содержимому директории web-root. Мы используем 'go', поэтому команда будет направлена к группам и другим пользователям ('group' и 'other'). Также мы используем '-' для отключения прав доступа. Затем используется параметр 'rwx', чтобы запретить чтение, запись и исполнение.

$ chmod go-rwx /var/www

Далее нужно разрешить пользователям из той же группы (и 'other') открывать директорию /var/www. Это делается без рекурсивного подхода. Мы указываем 'group' и 'other', но используем параметр '+', чтобы разрешить исполнение (chmod 'x').

$ chmod go+x /var/www

Далее изменяем права доступа всех директорий и файлов в корневом каталоге для той же группы (www-data). На случай, если в ней есть файлы:

$ chgrp -R www-data /var/www

Теперь нужно произвести некоторые «сбросы». C помощью команд chmod сделайте так, чтобы только один пользователь мог осуществлять доступ к контенту:

$ chmod -R go-rwx /var/www

Сделайте так, чтобы любой пользователь из той же группы мог читать/записывать и выполнять директории и файлы в корневом каталоге на сервере:

$ chmod -R g+rx /var/www

Лично я дал группе право записывать – это нужно для тех пользователей, которые редактируют контент. Выглядит это следующим образом:

$ chmod -R g+rwx /var/www

Зачастую вам даже не придется проделывать все это, но данная статья вполне способна помочь разобраться.