junior
Как устроено управление пользователями и группами в Linux?
Linux — многопользовательская система. Каждый пользователь имеет уникальный идентификатор (UID), каждая группа — GID.
Ключевые файлы
| Файл | Описание |
|---|---|
/etc/passwd |
Информация о пользователях: username:x:UID:GID:comment:home:shell. Пароль хранится не здесь (символ x). |
/etc/shadow |
Хеши паролей пользователей. Доступен только root. |
/etc/group |
Информация о группах: groupname:x:GID:members. |
Управление пользователями
Пример
# Создать пользователя с домашним каталогом и оболочкой bash
sudo useradd -m -s /bin/bash developer
# Более удобная команда (интерактивная, задаёт пароль и другие данные)
sudo adduser developer
# Задать/изменить пароль
sudo passwd developer
# Изменить параметры пользователя
sudo usermod -aG docker developer # Добавить в группу docker
sudo usermod -s /bin/zsh developer # Изменить оболочку
sudo usermod -L developer # Заблокировать учётную запись
# Удалить пользователя
sudo userdel developer # Удалить (оставить домашний каталог)
sudo userdel -r developer # Удалить вместе с домашним каталогом
Управление группами
Пример
# Создать группу
sudo groupadd developers
# Добавить пользователя в группу
sudo usermod -aG developers developer
# Посмотреть группы пользователя
groups developer
id developer
# Удалить группу
sudo groupdel developers
Специальные пользователи
- root (UID=0) — суперпользователь с неограниченными правами
- Системные пользователи (UID 1-999 в Ubuntu) — создаются для запуска сервисов:
www-data,postgres,mysql,nobody - Обычные пользователи (UID >= 1000) — учётные записи людей
Пример строки из /etc/passwd
Пример
developer:x:1001:1001:Java Developer:/home/developer:/bin/bash
Формат: имя:пароль(в shadow):UID:GID:комментарий:домашний_каталог:оболочка
На собеседовании: интервьюер хочет убедиться, что вы понимаете модель безопасности Linux. Ключевое — флаг
-aGприusermod(Append to Group). Частая ошибка — использоватьusermod -Gбез-a, что удалит пользователя из всех предыдущих групп.