Управление учётными записями — базовая задача администратора Linux. Разберём, где хранятся данные о пользователях, как создавать записи, настраивать sudo через /etc/sudoers.d и диагностировать типичные ошибки доступа. Примеры даны для Debian и Ubuntu: на RHEL-системах отличаются только имена групп.

Где живут учётные записи

Сведения разнесены по трём файлам. В /etc/passwd лежат имя, UID, GID, домашний каталог и оболочка. В /etc/group — группы и их участники. В /etc/shadow — хэши паролей и сроки, читать его может только root. Начинайте диагностику с них, а не с графических утилит.

# запись о конкретном пользователе
getent passwd deploy
# все интерактивные пользователи с UID от 1000
awk -F: '$3 >= 1000 && $3 < 65534 {print $1, $3, $6, $7}' /etc/passwd
# состояние пароля и сроки его жизни
sudo passwd -S deploy
sudo chage -l deploy

В выводе passwd -S первое слово означает статус: L — блокировка, NP — пароль не задан, P — установлен и действителен. Даты в chage считаются днями от эпохи Unix, удобнее смотреть их через chage -l.

Создание пользователя

На Debian-системах удобен adduser: он интерактивно спрашивает пароль и создаёт домашний каталог с правильными правами. На серверах без интерактива используют useradd с явными ключами — тогда процесс воспроизводим в скрипте.

# интерактивное создание на Debian, Ubuntu, Linux Mint
sudo adduser deploy --shell /bin/bash
# то же самое без интерактива, с двумя дополнительными группами
sudo useradd -m -s /bin/bash -G www-data,adm deploy
# сменить оболочку и добавить в группу без потери старых членов
sudo usermod -s /bin/bash -a -G sudo deploy

Ключ -a в usermod обязателен: без него -G перезаписывает список дополнительных групп, и пользователь внезапно теряет доступ к дисковой группе или к docker. Проверять результат удобно командой id: она показывает основную и дополнительные группы.

Группы и права доступа

Группа — основной способ раздавать права на каталоги. Вместо правки прав у каждого файла проще добавить нужных людей в группу и назначить каталогу бит setgid, чтобы новые файлы наследовали группу родителя.

# создать группу и посмотреть её членов
sudo groupadd -f webmasters
getent group webmasters
# добавить пользователя и проверить результат
sudo gpasswd -a deploy webmasters
id deploy
# назначить каталогу группу и бит наследования
sudo chown -R root:webmasters /srv/sites
sudo chmod -R 2775 /srv/sites
# увидеть новые членства можно только в новой сессии
newgrp webmasters

Открытая сессия не подхватывает новые членства: оболочка запоминает список при входе, помогает перелогин или команда newgrp. Для скриптов проверяйте принадлежность через id -nG.

Сроки паролей и блокировка

Серверные аккаунты должны иметь ограниченный срок жизни пароля, а уходящих сотрудников блокируют до полного удаления. Блокировка обратима: разблокировав аккаунт, вы вернёте доступ.

# запретить вход через 90 дней, предупреждать за 14
sudo chage -M 90 -W 14 deploy
# заблокировать аккаунт и назначить дату окончания
sudo usermod -L -e 2026-01-01 deploy
# разблокировать после разбора
sudo usermod -U deploy
# пароли, которые никогда не менялись
sudo awk -F: '$3 == 0 {print $1}' /etc/shadow

Аккаунт с нулевым UID в shadow — второй root, его быть не должно. Следите и за полем оболочки: /usr/sbin/nologin надёжнее пустого значения, оно явно запрещает интерактивный вход, оставляя возможность доставки почты.

# архив учётных данных перед изменениями
getent passwd > /root/archive/2026-11-05/passwd.txt
getent group > /root/archive/2026-11-05/group.txt
sudo chage -l deploy > /root/archive/2026-11-05/chage-deploy.txt
sudo cp -a /etc/ssh/sshd_config /root/archive/2026-11-05/sshd_config.bak

sudo через каталог sudoers.d

Правила sudo редактируются только через visudo: он проверяет синтаксис до записи и не позволит сохранить файл, после применения которого sudo перестанет работать. Готовые правила размещают отдельными файлами в /etc/sudoers.d/: так их удобно версионировать.

# /etc/sudoers.d/90-webmasters
Defaults:webmasters !requiretty
Cmnd_Alias SERVICECTL = /usr/bin/systemctl restart nginx.service, /usr/bin/systemctl reload nginx.service
webmasters ALL=(root) NOPASSWD: SERVICECTL
deploy ALL=(ALL:ALL) ALL
# проверить синтаксис всех правил без применения
sudo visudo -c

Имя файла не должно содержать тире или заканчиваться на тильду: sudo молча игнорирует такие файлы, и правило не работает. Ограничивайте список команд вместо общего NOPASSWD — разрешённый systemctl restart даёт больше прав, чем кажется, поэтому перечисляйте конкретные юниты.

Логирование действий sudo

Каждый запуск sudo пишет строку в журнал системы: кто, откуда и какую команду выполнил. Без этой информации разобраться в инциденте невозможно, а удалённая копия журнала защитит от правки локальных файлов.

# Debian, Ubuntu, Linux Mint
grep -h sudo /var/log/auth.log | tail -40
# системы с journald
journalctl -t sudo --since "7 days ago" | tail -40

Для важных серверов дублируйте события в удалённый журнал, а ротацию настройте через logrotate.

Диагностика типичных проблем

Половина обращений сводится к четырём ситуациям. Разберём каждую с точки зрения реальных сообщений об ошибках.

# «user is not in the sudoers file»
id alice && groups alice
sudo visudo -c
# пользователь в группе, но sudo её не видит
getent group sudo
# просроченный пароль: «Your account has expired»
sudo chage -l alice
# права на домашний каталог сломаны, вход обрывается
ls -ld /home/alice
sudo chown -R alice:alice /home/alice

Если пользователь добавлен в группу sudo, но sudo пишет об ошибке, чаще всего сессия просто не перезалогинилась. Вторая причина — правило в sudoers.d с запрещённым именем файла. Третья — опечатка в имени группы: на Debian это sudo, на RHEL wheel.

Чек-лист при передаче и отзыве доступа

  • Проверить список интерактивных пользователей и убрать лишние записи из /etc/passwd.
  • Отозвать ключи из /home/пользователь/.ssh/authorized_keys и из /etc/ssh/authorized_keys.
  • Заблокировать пароль через usermod -L и назначить дату окончания через chage -E.
  • Проверить членство в группах: id -nG для каждого оставшегося администратора.
  • Прогнать sudo visudo -c и убедиться, что конфиг синтаксически валиден.
  • Собрать последнюю активность: last -20 и журнал за прошедшую неделю.

Итог

Учётные записи в Linux прозрачны: /etc/passwd, /etc/group и /etc/shadow отвечают за всё, а chage, usermod и visudo закрывают большинство задач. Настраивайте sudo только через visudo и каталог sudoers.d, всегда используйте usermod -aG при добавлении в группы и проверяйте результат командами id и visudo -c. Регулярный аудит списка пользователей занимает пару минут, но предотвращает большинство проблем с доступом.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте