Учётные записи пользователей и групп

Рейтинг: 74.1% · 11 голосов
Полный курс LPIC-1 (экзамены 101-500 и 102-500): архитектура, загрузка, пакеты, команды и текст, ФС и права, шелл-скрипты, пользователи, сервисы, сеть, безопасность. Debian и RHEL.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Учётные записи пользователей и групп

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-1 и как устроен путь администратора
  2. Железо, устройства и модули ядра [101.1]
  3. Загрузка системы: от BIOS до systemd [101.2]
  4. systemd, цели и уровни выполнения [101.3]
  5. План разметки диска и swap [102.1]
  6. Загрузчик GRUB 2 [102.2]
  7. Разделяемые библиотеки [102.3]
  8. Управление пакетами в Debian: dpkg и apt [102.4]
  9. Управление пакетами RPM, DNF и Zypper [102.5]
  10. Linux как гость виртуализации [102.6]
  11. Командная строка Bash [103.1]
  12. Обработка текста фильтрами [103.2]
  13. Базовое управление файлами [103.3]
  14. Потоки, конвейеры и перенаправление [103.4]
  15. Процессы: создание, мониторинг, сигналы [103.5]
  16. Приоритеты выполнения процессов [103.6]
  17. Регулярные выражения [103.7]
  18. Редактор vi и vim [103.8]
  19. Разделы и создание файловых систем [104.1]
  20. Целостность и обслуживание ФС [104.2]
  21. Монтирование файловых систем [104.3]
  22. Урок 21. Права доступа и владение: rwx, chmod, umask и специальные биты
  23. Жёсткие и символические ссылки
  24. FHS и поиск файлов в системе [104.7]
  25. Окружение и кастомизация оболочки [105.1]
  26. Урок 25. Написание простых bash-скриптов [105.2]
  27. Графика, рабочие столы и доступность
  28. Учётные записи пользователей и групп (вы здесь)
  29. Автоматизация задач: cron, at, таймеры [107.2]
  30. Локализация и интернационализация [107.3]
  31. Системное время и синхронизация [108.1]
  32. Системное логирование [108.2]
  33. Основы почтового агента (MTA) [108.3]
  34. Печать и CUPS [108.4]
  35. Основы интернет-протоколов [109.1]
  36. Постоянная конфигурация сети [109.2]
  37. Диагностика сети [109.3]
  38. DNS на стороне клиента [109.4]
  39. Задачи администрирования безопасности [110.1]
  40. Настройка безопасности хоста [110.2]
  41. Шифрование данных: SSH и GnuPG [110.3]
Урок 27. Учётные записи пользователей и групп

Любой вход в систему, любой процесс и каждый файл привязаны к учётной записи. Администратор постоянно заводит новых пользователей, объединяет их в группы, ставит сроки на пароли и разбирается, почему кто-то не может войти. В этом уроке мы разберём, в каких файлах физически хранятся аккаунты, какие поля там лежат, и какими утилитами всё это создавать и менять, не трогая файлы руками. Это база, на которой стоит вся модель прав доступа.

Изображение

Как это работает

Linux не хранит пользователей в какой-то базе данных - это обычные текстовые файлы, разделённые двоеточиями. Главный из них - /etc/passwd. Несмотря на имя, паролей там давно нет. Каждая строка - один аккаунт из семи полей: имя входа, символ x (заглушка вместо пароля), числовой UID, основной GID, поле GECOS (полное имя и комментарии), домашний каталог и оболочка входа. Файл читают все программы, поэтому хеши пароля держать в нём небезопасно.

Сами хеши и правила старения вынесены в /etc/shadow, который читает только root. Тут девять полей: имя, хеш пароля, день последней смены, минимальный и максимальный срок жизни пароля, окно предупреждения, льготный период после истечения, дата отключения аккаунта и резервное поле. Даты считаются в днях от 1 января 1970 года. Если в поле хеша стоит ! или *, войти по паролю нельзя - аккаунт заблокирован или служебный.

Группы устроены так же. /etc/group хранит имя группы, GID и список дополнительных участников. Основная группа пользователя прописана в passwd, а в group человек попадает только как дополнительный член. Парный закрытый файл /etc/gshadow держит пароли групп и список администраторов группы - на практике им почти не пользуются.

Числа UID и GID распределяют по диапазонам. UID 0 - всегда root. Дальше идут системные учётки для служб (на современных системах это примерно 1-999), а живым людям выдают UID от 1000 и выше. Эти границы заданы в /etc/login.defs (UID_MIN, UID_MAX) и одинаковы по смыслу в Debian и RHEL, хотя числа служебного диапазона могут отличаться.

Когда заводишь пользователя, система копирует ему заготовку домашнего каталога из /etc/skel - туда кладут стандартные .bashrc, .profile и прочее, что должно быть у каждого нового человека. Меняешь skel - меняется стартовый набор для всех будущих аккаунтов.

Команды и примеры

Создание пользователя. Низкоуровневая утилита useradd одинакова в обоих семействах, но ведёт себя по умолчанию по-разному, поэтому ключи лучше указывать явно.

Код: Выделить всё

sudo useradd -m -s /bin/bash -c "Anna Ivanova" anna
# -m создать домашний каталог и скопировать /etc/skel
# -s оболочка входа, -c поле GECOS
sudo passwd anna   # задать пароль (без него вход заблокирован)
В Debian и Ubuntu есть ещё интерактивная обёртка adduser (Perl-скрипт), которая сама спросит пароль и данные. В RHEL и Fedora её нет - там работают напрямую useradd. По умолчанию в Debian useradd без -m может не создать домашний каталог, в RHEL CREATE_HOME обычно включён - ещё одна причина писать -m всегда.

Изменение и удаление:

Код: Выделить всё

sudo usermod -aG docker,wheel anna  # ДОБАВИТЬ в доп.группы (-a обязателен!)
sudo usermod -L anna                # заблокировать вход по паролю
sudo usermod -s /usr/sbin/nologin anna  # запретить интерактивный вход
sudo userdel -r anna                # удалить вместе с домашним каталогом
Группы:

Код: Выделить всё

sudo groupadd -g 1500 devs    # создать группу с конкретным GID
sudo groupmod -n developers devs  # переименовать группу
sudo gpasswd -a anna devs     # добавить участника (альтернатива usermod)
sudo groupdel devs            # удалить (нельзя, если это чья-то основная)
Пароли и старение. passwd меняет сам пароль, chage управляет сроками:

Код: Выделить всё

chage -l anna             # показать все сроки по аккаунту
sudo chage -M 90 -W 7 anna  # макс. срок 90 дней, предупреждать за 7
sudo chage -E 2026-12-31 anna  # дата отключения учётки
sudo passwd -e anna       # заставить сменить пароль при следующем входе
Посмотреть, кто есть кто. id показывает UID/GID и группы, getent тянет запись из всех источников (файлы плюс LDAP/SSSD, если подключены):

Код: Выделить всё

id anna                       # uid=1001(anna) gid=1001(anna) groups=...
getent passwd anna            # строка из passwd (или из каталога)
getent group docker           # кто входит в группу
Команды одинаковы в Debian и RHEL. Различия - в наличии adduser и в дефолтах useradd, а не в синтаксисе.

Частые грабли
  • usermod -G без -a стирает все прежние дополнительные группы и оставляет только указанные. Чтобы ДОБАВИТЬ, всегда пиши -aG. Классическая ошибка, после которой человек теряет sudo.
  • Изменения в группах подхватываются только при новом входе. Добавил себя в docker - выйди и зайди заново (или newgrp), в текущей сессии группы старые.
  • Правка /etc/passwd и /etc/shadow обычным редактором без vipw/vigr опасна: нет блокировки от одновременной записи и проверки синтаксиса. Одна лишняя двоеточная колонка - и вход ломается.
  • userdel без -r оставляет домашний каталог и файлы, а их владелец теперь - голый UID. Новый пользователь с тем же UID нечаянно унаследует чужие файлы.
  • Путают -L/-U (usermod) и -l/-u (passwd) для блокировки. И то и другое ставит ! перед хешем, но запомни флаги, чтобы не разблокировать вместо блокировки.
  • Меняют /etc/skel и ждут, что у существующих пользователей появятся новые файлы. skel копируется только в момент создания аккаунта, задним числом не применяется.
Мини-лаба
  • Создай пользователя test с домашним каталогом и оболочкой bash, задай ему пароль.
  • Посмотри его строки в /etc/passwd и /etc/shadow (через sudo) и разбери все поля по столбцам.
  • Создай группу project и добавь в неё test через usermod -aG, проверь результат командой id.
  • Командой chage -l test посмотри текущие сроки, затем поставь максимальный срок пароля 60 дней.
  • Заставь test сменить пароль при следующем входе и проверь, что поле даты в shadow обнулилось.
  • Сравни вывод getent passwd test и id test - что показывает каждая команда.
  • Удали пользователя вместе с домашним каталогом и убедись, что строки в passwd и shadow исчезли.
Контрольные вопросы
  • Сколько полей в строке /etc/passwd и что означает символ x во втором поле?
  • Почему хеши паролей хранят в /etc/shadow, а не в /etc/passwd, и кто может его читать?
  • Чем отличается основная группа пользователя от дополнительной и где каждая прописана?
  • Какой ключ usermod нужен, чтобы добавить пользователя в группу, не потеряв прежние?
  • Что делает userdel -r и чем опасно удаление без него?
  • В чём разница между командами id и getent при просмотре учётной записи?
👍2 ❤️1 🔥1 😄 🤔1
Аватара пользователя
markm123
Сообщения: 1
Зарегистрирован: 26 май 2026, 13:35

Re: Учётные записи пользователей и групп

Сообщение markm123 »

Подскажите, а зачем тогда вообще нужен gshadow, если им никто не пользуется? Пароль на группу это вообще про что
👍2 ❤️1 🔥 😄 🤔
Аватара пользователя
tancredi
Сообщения: 1
Зарегистрирован: 28 май 2026, 12:22

Re: Учётные записи пользователей и групп

Сообщение tancredi »

Поймал грабли с usermod -G ровно как описано: добавил юзера в одну группу и он внезапно вылетел из sudo, минут двадцать не мог понять что случилось. Теперь только -aG
👍2 ❤️2 🔥 😄 🤔
Ответить
← Предыдущая глава
Графика, рабочие столы и доступность
Следующая глава →
Автоматизация задач: cron, at, таймеры [107.2]

Все главы курса «LPIC-1: администратор Linux (101 + 102)»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-1: администратор Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость