Гид по технологиям

Как перечислить учётные записи пользователей в Linux

7 min read Linux Обновлено 24 Dec 2025
Перечисление пользователей Linux: команды и проверка
Перечисление пользователей Linux: команды и проверка

  • Быстро просмотреть все локальные и системные учётные записи можно с помощью команд: cat /etc/passwd, getent passwd, awk -F:'{print $1}' /etc/passwd, compgen -u.
  • Чтобы получить только «человеческие» учётные записи используйте диапазоны UID (UID_MIN..UID_MAX) из /etc/login.defs или фильтруйте по UID >= 1000; это упрощает анализ и снижает риск удаления системных аккаунтов.

Ключевые варианты поиска

  • Основная цель: получить список существующих учётных записей.
  • Варианты: просмотр полного файла, вывод только имён, фильтрация по UID, использование системного API через getent.

Быстрая навигация

  • Почему важно следить за лишними аккаунтами
  • Просмотр через cat
  • Вывод имён через awk
  • Вывод имён через cut
  • Использование compgen
  • UID_MIN и UID_MAX
  • Команда getent: безопасный и совместимый способ
  • Практические советы и шаблон действий

Почему важно следить за лишними аккаунтами

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

Короткое определение: учётная запись пользователя — это строка в системной базе (обычно /etc/passwd), содержащая имя, UID, GID, домашний каталог и оболочку.

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

Просмотр списка пользователей через cat

Файл /etc/passwd содержит записи обо всех локальных пользователях и некоторых системных аккаунтах. Это текстовый файл. Обычному пользователю не требуется sudo для чтения этого файла.

Обычная команда для просмотра:

cat /etc/passwd

Каждая строка разделена двоеточиями и содержит несколько полей. Пример строки для пользователя “dave”:

  • dave — логин пользователя.
  • x — маркер того, что зашифрованный пароль хранится в /etc/shadow.
  • 1000 — UID (numeric user identifier).
  • 1000 — GID (numeric group identifier по умолчанию).
  • dave,,, — поле GECOS: полный имя, офис, телефон (разделены запятыми).
  • /home/dave — домашняя директория.
  • /bin/bash — оболочка по умолчанию.

Если в файле много строк, посмотрите вывод через less:

less /etc/passwd

Используйте /? внутри less для поиска по имени.

Экран входа в систему на ноутбуке с Ubuntu Linux.

Подпись: Экран входа в Ubuntu — пример многопользовательской системы.

Вывод только имён пользователей: awk

Если нужно получить список только логинов (для скриптов или экспорта), используйте awk, указав ‘:’ как разделитель полей:

awk -F: '{print $1}' /etc/passwd

Это выведет только первое поле каждой строки — логин пользователя. Удобно перенаправлять в файл:

awk -F: '{print $1}' /etc/passwd > users.txt

Такой файл удобно импортировать в инструменты аудита или передать коллегам для проверки.

Содержимое passwd файла отображается в терминале

Подпись: Просмотр содержимого /etc/passwd показывает структуру записей.

Вывод имён через cut

Альтернатива — команда cut, которая проще и быстрее для простых задач:

cut -d: -f1 /etc/passwd

Флаги:

  • -d: — разделитель полей ‘:’;
  • -f1 — вывести первое поле.

cut полезен в скриптах, когда важна простота и скорость.

Использование cut для вывода имён пользователей

Подпись: Пример вывода имён командой cut.

Команда compgen

В bash есть встроенная команда compgen, которая может перечислять пользователей, группы и т.д. Для пользователей:

compgen -u | column

Это выведет список логинов в виде колонок. compgen читает системную базу через оболочку и может быть удобен для быстрой интерактивной проверки.

Использование compgen и column для вывода пользователей столбцами

Подпись: Вывод пользователей в колонках удобен для визуального обзора.

UID_MIN и UID_MAX — как отличить людей от системных аккаунтов

На многих дистрибутивах обычные (человеческие) учётные записи имеют UID, начинающиеся с 1000. Системные учётные записи обычно имеют малые UID (0 для root, другие — ниже 1000) или специфические высокие значения для служебных аккаунтов.

Файл /etc/login.defs содержит параметры UID_MIN и UID_MAX, которые задают диапазон UID для обычных пользователей. Посмотреть эти значения можно так:

grep -E '^UID_MIN|^UID_MAX' /etc/login.defs

Пример вывода: UID_MIN 1000 и UID_MAX 60000.

Используйте эти границы, чтобы фильтровать только «живых» пользователей:

getent passwd {1000..60000} | cut -d: -f1

В некоторых системах полезнее сузить диапазон (например, до 1500), если известно, что новых пользователей не так много. Это ускорит выполнение команд.

getent — чтение системных баз правильно и кросс-платформенно

Команда getent читает информацию из NSS (Name Service Switch). Это значит, что она учитывает локальный /etc/passwd, LDAP, NIS и другие источники, настроенные в вашей системе. Поэтому getent чаще даёт корректный и полный список пользователей в средах с централизованной аутентификацией.

Основные примеры:

getent passwd            # список всех записей, как в /etc/passwd
getent passwd sarah      # запись для пользователя sarah (учёт имени чувствительна к регистру)
getent passwd {1000..1500} | cut -d: -f1

Примечание: конструкции с фигурными скобками {1000..1500} выполняет Bash-расширение; некоторые оболочки или окружения могут требовать кавычек или другого синтаксиса.

Если нужно посчитать число «реальных» пользователей:

getent passwd {1000..1500} | wc -l

Это вернёт количество записей с UID в указанном диапазоне.

Примеры типовых рабочих сценариев

  1. Быстрый просмотр всех логинов:
cut -d: -f1 /etc/passwd | less
  1. Экспорт только человекоподобных аккаунтов в файл:
getent passwd {1000..60000} | cut -d: -f1 > human-users.txt
  1. Найти запись конкретного пользователя через getent:
getent passwd alex
  1. Подсчитать всех пользователей (включая системные):
cat /etc/passwd | wc -l

Когда эти методы не сработают

  • Если система использует централизованную аутентификацию (LDAP, Active Directory) и вы забыли учитывать её в NSS — тогда cat /etc/passwd покажет не всё. Используйте getent.
  • Если у вас нет доступа к сетевым источникам (например, сервер LDAP недоступен), getent может частично или полностью не вернуть данные.
  • На минималистичных контейнерах может отсутствовать команда getent; в таком случае используйте cat /etc/passwd.

Важно: никогда не удаляйте аккаунт, не проверив, не используется ли он службой, задачей cron или процессом. Перед удалением делайте бэкап данных и снимайте список процессов владельца.

Безопасная процедура (SOP) — обзорный план действий

  1. Соберите список всех аккаунтов:
getent passwd | cut -d: -f1 > all-users.txt
  1. Соберите список «человеческих» аккаунтов по UID:
getent passwd {1000..60000} | cut -d: -f1 > human-users.txt
  1. Сравните списки и выясните, какие аккаунты неактивны (старые). Примеры критериев неактивности:
  • нет входов в систему за последние N дней (проверьте lastlog);
  • домашний каталог пуст или не менялся долго;
  • учётная запись создана для временной задачи, завершённой деплоймента.
  1. Перед удалением проверьте процессы владельца:
ps -u username
  1. Архивируйте домашние каталоги и связанные данные.

  2. Удаляйте аккуратно с сохранением логов действий:

sudo userdel -r username   # -r удаляет домашний каталог
  1. После удаления проверьте: не сломались ли cron, службы, доступы.

Критерии приёмки

  • Все удалённые учётные записи были подтверждены как неактивные.
  • Архивы данных сохранены и доступны при необходимости восстановления.
  • Логи операций сохранены минимум 30 дней.

Роль-ориентированные чеклисты

  • Администратор сервера:

    • Проверил /etc/passwd и getent.
    • Сравнил UIDs с login.defs.
    • Создал резервные копии перед массовыми изменениями.
  • Системный инженер / DevOps:

    • Убедился, что централизованная аутентификация учтена.
    • Проверил зависимости служб от системных аккаунтов.
  • Оператор безопасности:

    • Убедился, что не осталось аккаунтов с пустыми паролями или с правами root.
    • Проверил неиспользуемые sudo-префиксы.

Быстрый шаблон команд для проверки и отчёта

# 1) Список всех локальных аккаунтов
awk -F: '{print $1" (UID:"$3")"}' /etc/passwd

# 2) Список возможных «человеческих» аккаунтов
UID_MIN=$(grep '^UID_MIN' /etc/login.defs | awk '{print $2}')
UID_MAX=$(grep '^UID_MAX' /etc/login.defs | awk '{print $2}')
getent passwd {${UID_MIN}..${UID_MAX}} | cut -d: -f1 > human-users.txt

# 3) Количество человекоподобных аккаунтов
wc -l human-users.txt

# 4) Последний вход по пользователю
lastlog -u username

Используйте этот набор как заготовку при аудите.

Примеры ошибок и как их избежать

  • Ошибка: «удалил системный аккаунт» — всегда проверяйте GID/UID и документацию пакета перед удалением.
  • Ошибка: «посчитал пользователей, но не учёл LDAP» — используйте getent, а не только /etc/passwd.
  • Ошибка: «удалил, но не сохранил данные» — архивируйте домашние директории перед удалением.

Совместимость и миграция

  • cat, awk, cut, getent доступны на большинстве дистрибутивов Linux и POSIX-совместимых систем. В контейнерах может отсутствовать getent и column — установите glibc/busybox аналоги или используйте awk/cut.
  • В системах с NSS (LDAP/AD) настройка находится в /etc/nsswitch.conf.
  • При миграции на централизованную аутентификацию предварительно протестируйте getent passwd на пустой тестовой среде.

Безопасность и конфиденциальность

  • Не публикуйте полный список пользователей в публичных репозиториях или в открытых логах.
  • Обрабатывайте персональные данные (GECOS-поля) в соответствии с политиками конфиденциальности и местными требованиями (например, GDPR для ЕС).
  • Ограничьте доступ к /etc/passwd и /etc/shadow правами файловой системы: /etc/passwd обычно читаем всем, /etc/shadow — только root.

Краткий чек-лист для ревью учётных записей

  • [ ] Собран список всех аккаунтов (getent passwd).
  • Выделены аккаунты с UID >= UID_MIN.
  • Проверены последние входы (lastlog).
  • Архивированы домашние директории перед удалением.
  • Проверены зависимости служб и cron.
  • Логи операций сохранены.

Ментальные модели и эвристики

  • Правило 80/20: сначала удаляйте явно неиспользуемые аккаунты (временные, тестовые, старые), затем исследуйте спорные случаи.
  • «UID как фильтр»: используйте UID для быстрой фильтрации людей от системных аккаунтов.
  • «Завтра может понадобиться» — если не уверены, лучше заморозить аккаунт (lock) вместо удаления:
sudo usermod -L username   # блокирует вход

Краткий глоссарий

  • UID — идентификатор пользователя (число).
  • GID — идентификатор группы.
  • GECOS — поле с дополнительной информацией о пользователе.
  • NSS — Name Service Switch, механизм выбора источников учётных данных.

Заключение

Перечисление учётных записей — базовая, но важная операция для администрирования и безопасности. Правильный выбор инструмента зависит от окружения: для локальных систем хватит cat/cut/awk, для систем с централизованной аутентификацией используйте getent. Всегда проверяйте UID-диапазоны и создавайте резервные копии перед удалением.

Важно: сначала объедините результаты, затем принимайте решения. Автоматизация полезна, но человек должен одобрить удаление.

Ключевые шаги в одном предложении: получить список (getent), отфильтровать по UID, проверить активность, архивировать данные, удалить или заблокировать.

Сводка

  • Регулярно проверяйте учётные записи для уменьшения поверхности атаки.
  • getent учитывает централизованные источники; cat /etc/passwd показывает только локальные записи.
  • Используйте UID_MIN/UID_MAX для фильтрации людей от системных аккаунтов.

Дополнительно: короткое объявление для команды

Если нужно быстро оповестить команду об аудите пользователей, используйте готовое сообщение (пример ниже).

“Внимание: завтра в 10:00 начнётся аудит локальных и централизованных учётных записей. Ожидается, что будут помечены и удалены неиспользуемые временные аккаунты. Пожалуйста, сохраните важные данные в /srv/backups и подтвердите наличие активных сервисных учётных записей до 09:30.”

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Авторазблокировка BitLocker — как включить
Windows

Авторазблокировка BitLocker — как включить

Дешёвые турпакеты — лучшие сайты и советы
Путешествия

Дешёвые турпакеты — лучшие сайты и советы

Как создать инди-игру: пошаговый гид
Геймдев

Как создать инди-игру: пошаговый гид

Комбинированные диаграммы в Excel — шаг за шагом
Excel

Комбинированные диаграммы в Excel — шаг за шагом

Отменить резервирование обновления до Windows 10
Windows

Отменить резервирование обновления до Windows 10

Ускорение медленных загрузок на PS4
Игры

Ускорение медленных загрузок на PS4