Управление группами
Тема дорожной карты · Linux & Unix Fundamentals
Управление группами в Linux является ключевым элементом организации доступа к ресурсам для различных пользователей. Группы позволяют объединять пользователей с одинаковыми правами доступа, что упрощает управление и конфигурацию системного доступа. Каждый пользователь может иметь одну основную группу, которая указана в файле /etc/passwd, и несколько дополнительных групп, перечисленных в файле /etc/group. Для управления группами используются команды groupadd, groupmod, и groupdel. Для добавления пользователя в группу используется команда usermod -aG <группа> <пользователь>, где флаг -a (append) критически важен, поскольку без него вы перезапишете список членств пользователя. Для просмотра информации о пользователях и группах можно использовать команды id, groups, или getent group.
Как это работает
Управление группами в Linux основывается на концепции пользовательских и групповых идентификаторов (UID и GID соответственно). Каждый пользователь определен в файле /etc/passwd, где хранится основная группа пользователя. Пароли (в виде хешей) хранятся в файле /etc/shadow. Группы, в свою очередь, определены в файле /etc/group. Каждый запущенный процесс имеет ассоциированный с ним пользователь (UID) и группы (GID), которые определяют его права доступа к различным ресурсам. Системные пользователи (обычно UID < 1000) используются для запуска демонов и служб, в то время как пользователи с UID > 1000 обычно используются для работы обычных пользователей и служб.
Для управления пользователями и группами используются команды useradd, usermod, и userdel. Команда sudo (конфигурация которой находится в файле /etc/sudoers, редактируется с помощью команды visudo) позволяет временно повышать привилегии пользователей.
Когда применять
Управление группами особенно полезно при организации доступа к ресурсам для различных сервисов и пользователей. Для каждого долгого сервиса рекомендуется создавать выделенного непривилегированного пользователя с помощью команды useradd -r -s /usr/sbin/nologin myapp, чтобы избежать запуска сервисов под учетной записью root. Это уменьшает риск повреждения системы в случае ошибок или атак.
Настройка sudo для требований ввода пароля и логирования действий пользователя также является важным аспектом управления доступом. В реальных рабочих окружениях следует избегать предоставления разработчикам безусловного доступа с использованием команды ALL=(ALL) NOPASSWD: ALL, так как это может привести к серьезным уязвимостям безопасности.
Для удаленного доступа к серверу рекомендуется использовать SSH-ключи вместо паролей. После настройки SSH-ключей следует отключить парольную аутентификацию в конфигурационном файле sshd_config.
Типичные ошибки
Существует несколько распространенных ошибок, связанных с управлением группами. Одной из них является правка файла /etc/sudoers без использования команды visudo, что может привести к неработоспособности системы или блокировке доступа к ней. Другой распространенной ошибкой является использование общего аккаунта для нескольких инженеров, что затрудняет аудит и отслеживание действий каждого пользователя. Также важно избегать добавления пользователей в группу wheel или sudo без предварительного раздумья, поскольку это может привести к несанкционированному доступу к системе. Наконец, не забывайте удалять SSH-ключи ушедших пользователей из файла ~/.ssh/authorized_keys, чтобы избежать угроз безопасности.