В Linux каждый файл и процесс имеет владельца (пользователя) и группу. Группа позволяет предоставить одинаковые права нескольким пользователям без раздачи индивидуальных разрешений. Например, группа www-data объединяет веб-сервер и PHP-FPM, чтобы оба имели права на чтение файлов сайта.
Управление группами
# Создать группу
groupadd developers
# Добавить пользователя в группу
usermod -aG developers username
# Посмотреть группы пользователя
groups username
id username
# Изменить группу файла
chgrp www-data /var/www/html -R
# Права файла: rwxr-x--- (owner=rwx, group=r-x, others=---)
chmod 750 /var/www/html
Права доступа
Права задаются для трёх уровней: u (user/owner), g (group), o (others). Для каждого: r (read=4), w (write=2), x (execute=1). Числовой формат: 755 = rwxr-xr-x. Команды: chmod (права), chown (владелец), chgrp (группа).
Системные группы в хостинге
www-data— группа веб-сервера Apache/Nginx в Ubuntu/Debian.nginx— группа Nginx в RHEL-системах.mysql— группа MySQL-сервера.sudo/wheel— группа с правами sudo.docker— группа для запуска Docker без sudo.
История
Модель пользователь/группа/остальные появилась в Unix Version 7 (AT&T, 1979). В ранних Unix системах у каждого файла было только два уровня прав (owner/world). ACL (Access Control Lists) добавили более гранулярное управление в 2003–2004 годах.
Связь с хостингом
Правильная настройка групп критична для безопасности сервера. Файлы сайта принадлежат пользователю-владельцу и группе www-data; права 640/750. PHP-FPM запускается от имени пользователя сайта — изолируя разные сайты друг от друга. Группа sudo предоставляет административные права без прямого доступа к root.
История групп в Unix/Linux
Концепция групп пользователей введена в Unix System V в 1983 году как расширение модели DAC (Discretionary Access Control). В Linux группы реализованы в ядре с 1991 года (Linus Torvalds, версия 0.01). Файл /etc/group хранит список групп. GID (Group ID) — числовой идентификатор группы. Supplementary groups позволяют пользователю состоять одновременно в нескольких группах (до 32 в большинстве дистрибутивов, до 65536 в ядре 4.9+).
Практическое применение на хостинге
На общем виртуальном хостинге каждый аккаунт изолирован через группы и suexec/php-fpm. Веб-сервер Nginx работает от группы www-data. Для WordPress права на директорию wp-content/ должны позволять запись от группы веб-сервера. Группа sudo предоставляет права администратора без передачи root-пароля.
Основные команды управления группами
groupadd developers # создать группу
usermod -aG docker user # добавить user в группу docker
id user # показать группы пользователя
chown user:www-data /var/www/site # сменить группу файла
chmod g+rw /var/www/site # права для группы
Типичные ошибки
- Добавление пользователя в группу
dockerбез перелогина — изменения вступают в силу только в новой сессии. - Права 777 вместо настройки групп — грубая ошибка безопасности на VPS.
- Использование
usermod -gвместо-aGзаменяет основную группу, удаляя все supplementary.
Системные группы в Linux: wheel (sudo-доступ в RHEL/CentOS), sudo (sudo-доступ в Debian/Ubuntu), docker (запуск Docker без sudo), www-data (веб-сервер Nginx/Apache). Правильная настройка групп — основа безопасности многопользовательского VPS.