Пользователь и группа www-data
После установки Apache нужно установить правильные права доступа для пользователей и групп. В этом нам помогут команды chown (изменить владельца) и chmod (изменить права доступа). Рассмотрим эти команды, а потом установим владельца для директории /var/www и права доступа к ней.
В Linux существует всего три вида прав — право на чтение ( read ), запись ( write ) и выполнение ( execute ), а также три категории пользователей, к которым они могут применяться — владелец файла ( user ), группа владельца ( group ) и все остальные ( others ).
Команда chmod
Изменяет прав доступа к файлу или директории.
- Опция -R позволяет рекурсивно изменять права доступа для каталога
- Владелец — права доступа в числовом виде для владельца
- Группа — права доступа в числовом виде для группы
- Другие — права доступа в числовом виде для других
Команда chown
Изменяет владельца и/или группу файла или директории.
Опция -R — позволяет рекурсивно изменять владельца каталога.
Исходные данные
После установки web-сервера
- Apache запущен под пользователем и группой www-data
- Директории виртуальных хостов расположены в /var/www
Нам нужно обеспечить минимальные права для web-сервера (чтение директорий и файлов), чтобы он мог работать. И предоставить необходимые права на создание, редактирование и удаление файлов и директорий разработчику.
Создадим пользователя developer и назначим ему основную группу www-data :
Зададим пароль для нового пользователя:
Изменяем владельца
Устанавливаем владельца и группу для всех директорий /var/www :
Устанавливаем владельца и группу для всех файлов /var/www :
Здесь можно обойтись одной командой (но с двумя нагляднее):
Устанавливаем права
Устанавливаем права для всех директорий /var/www :
Теперь ситуация такая:
- Пользователь developer (разработчик) имеет право на чтение и запись директорий, потому что является их владельцем
- Пользователь www-data (web-сервер) имеет право на чтение директорий, потому что принадлежит к группе www-data
Устанавливаем права для всех файлов /var/www :
Теперь ситуация такая:
- Пользователь developer (разработчик) имеет право на чтение и запись файлов, потому что является их владельцем
- Пользователь www-data (web-сервер) имеет право на чтение файлов, потому что принадлежит к группе www-data
Для наглядности посмотрим на права всех файлов и директорий:
Команда chown Linux
Основа философии Linux — все объекты операционной системы — это файлы, для предоставления доступа к тем или иным возможностям системы мы просто даем доступ пользователю к нужным файлам или убираем. Я более подробно рассказывал обо всех правах в статье права доступа к файлам в Linux, здесь же скажу только что у каждого файла есть три группы прав: для владельца, группы и всех остальных.
При создании файла ему тот пользователь, от имени которого он был создан становится его владельцем, а группой устанавливается основная группа владельца. Но владельца файла и группу можно менять, для этого используются команды chown и chgrp. В этой статье будет рассмотрена команда chown linux, а также основные примеры её использования.
Команда chown Linux
1. Синтаксис и опции
Синтаксис chown, как и других подобных команд linux очень прост:
$ chown пользователь опции /путь/к/файлу
В поле пользователь надо указать пользователя, которому мы хотим передать файл. Также можно указать через двоеточие группу, например, пользователь:группа. Тогда изменится не только пользователь, но и группа. Вот основные опции, которые могут вам понадобиться:
- -c, —changes — подробный вывод всех выполняемых изменений;
- -f, —silent, —quiet — минимум информации, скрыть сообщения об ошибках;
- —dereference — изменять права для файла к которому ведет символическая ссылка вместо самой ссылки (поведение по умолчанию);
- -h, —no-dereference — изменять права символических ссылок и не трогать файлы, к которым они ведут;
- —from — изменять пользователя только для тех файлов, владельцем которых является указанный пользователь и группа;
- -R, —recursive — рекурсивная обработка всех подкаталогов;
- -H — если передана символическая ссылка на директорию — перейти по ней;
- -L — переходить по всем символическим ссылкам на директории;
- -P — не переходить по символическим ссылкам на директории (по умолчанию).
Утилита имеет ещё несколько опций, но это самые основные и то большинство из них вам не понадобится. А теперь давайте посмотрим как пользоваться chown.
2. Использование chown
Например, у нас есть несколько папок dir и их владелец пользователь sergiy:
Давайте изменим владельца папки dir1 на root:
Если вы хотите поменять сразу владельца и группу каталога или файла запишите их через двоеточие, например, изменим пользователя и группу для каталога dir2 на root:
chown root:root ./dir2
Если вы хотите чтобы изменения применялись не только к этому каталогу, но и ко всем его подкаталогам, добавьте опцию -R:
chown -R root:root ./dir3
Дальше давайте изменим группу и владельца на www-data только для тех каталогов и файлов, у которых владелец и группа root в каталоге /dir3:
chown —from=root:root www-data:www-data -cR ./
Для обращения к текущему каталогу используйте путь ./. Мы его использовали и выше. Далее указываем нужную группу с помощью опции —from и просим утилиту выводить изменения, которые она делает в файловой системе с помощью опции -c.
Выводы
Команда chown очень простая и позволяет только менять владельца и группу. Если вы хотите более подробно настроить права для владельца, группы и всех остальных, вам понадобится команда chmod. Права — довольно частая проблема при настройке работы различных программ, знание двух этих команд плюс ls и namei может помочь исправить много ошибок.
Как задать права для linux user и www-data?
chown -R www-data:www-data folder дал права
folder находится в корне юзера.
У юзера нет доступа к folder
Я понимаю, что в идеале нужно закидывать пользователя в группу www-data и использовать 775 и 664 настройки прав.
Но при создании одним юзером файла. Создается 644 и у www-data Нет прав. Также и наоборот
Я вижу что на хостингах, мы заходим под юзером и редактируем файлы и параллельно www-data может их редактировать.
Как сделать так на локалке?
Про пользователя user в группе www-data все верно.
Теперь необходимо выставить правильный umask для пользователя user.
Таким образом, чтобы при создании файла права выставлялись 0664.
Базовые права для директорий, это 0777 (rwxrwxrwx) и для файлов 0666 (rw-rw-rw).
umask позволяет формировать права при создании для каждого пользователя отдельно.
Пример создания файла с маской 0022:
Права по умолчанию: 0666
Вычитаемое значение umask: 0022 (-)
Итоговые права: 0644
Чтобы получились правильные права, необходимо установить маску равной 0002
Пример создания файла с маской 0002:
Права по умолчанию: 0666
Вычитаемое значение umask: 0002 (-)
Итоговые права: 0664
Команда Chown в Linux
В этой статье мы покажем вам, как использовать команду chown с помощью простых примеров.
Синтаксис команды Chown
Прежде чем перейти к использованию команды chown, давайте начнем с рассмотрения базового синтаксиса.
Выражения команд chown имеют следующий вид:
- USER это имя пользователя или идентификатор пользователя (UID) нового владельца,
- GROUP имя новой группы или идентификатор группы (GID) и
- FILE(s) имя одного или нескольких файлов, каталогов или ссылок.
Используйте команду ls -l, чтобы узнать, кому принадлежит файл или какая группа.
Чтобы иметь возможность изменять права собственности на файл, пользователь, выполняющий команду chown, должен иметь привилегии sudo.
Как изменить владельца файла
Чтобы изменить владельца файла, используйте команду chown, за которой следует имя пользователя нового владельца и целевой файл.
Например, следующая команда изменит право собственности на файл с именем file1 нового владельца с именем andreyex:
Чтобы изменить право собственности на несколько файлов или каталогов, укажите их как список, разделенный пробелами. Например, приведенная ниже команда изменяет право собственности на файл с именем file1 и каталогом dir1 на нового владельца с именем andreyex:
Вместо имени пользователя можно использовать числовой идентификатор пользователя (UID). Следующий пример изменит право собственности на файл с именем file2 нового владельца с UID 1000:
Если числовой владелец существует как имя пользователя, то право собственности будет передано на имя пользователя.
Как изменить владельца и группу файла
Чтобы изменить владельца и группу файла, используйте команду chown, за которой следуют новый владелец и группа, разделенные двоеточием ( без промежуточных пробелов и целевого файла.
Следующая команда изменит право собственности на файл с именем file1 на нового владельца с именем andreyex и группой users:
Если вы опустите имя группы после двоеточия (, группа файла будет изменена на указанную группу пользователя.
Как изменить группу файла
Команда chown может выполнять ту же функцию, что и команда chgrp, т. е. Она может изменять группу файлов.
Чтобы изменить только группу файла, используйте команду chown, за которой следует двоеточие (, и новое имя группы и целевой файл.
Следующая команда изменит владеющую группу файла с именем , file1 чтобы www-data:
Как рекурсивно изменить владельца файла
Чтобы рекурсивно работать со всеми файлами и каталогами в каталоге ввода, используйте параметр -r (–recursive):
Например, следующая команда изменит права собственности на все файлы и каталоги в подкаталогах /var/www на нового владельца и группу с именем www-data:
Заключение
К настоящему моменту вы должны хорошо понимать, как использовать команду chown в Linux. Если вы хотите узнать больше о команде chown, посетите страницу chown man.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.