Права доступа 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
Зачастую вам даже не придется проделывать все это, но данная статья вполне способна помочь разобраться.