
Управление пользователями в Linux требует точного понимания, какие учетные записи существуют и кто активен в системе. Список пользователей хранится в нескольких системных файлах, таких как /etc/passwd и /etc/shadow, а активные сессии можно отслеживать через команды who и w.
Файл /etc/passwd содержит информацию о каждом пользователе, включая логин, UID, GID и домашний каталог. Использование командного просмотра через cat или фильтрацию с помощью awk позволяет быстро выделить системные и обычные учетные записи.
Для анализа текущей активности пользователей применяются команды who и w, которые показывают, кто вошел в систему, с каких терминалов и когда. Дополнительно команда id позволяет получить детальные данные о конкретной учетной записи, включая группы и идентификаторы.
Комбинирование работы с файлами и командами дает полный контроль над списком пользователей. Это особенно важно при администрировании серверов и управлении безопасностью, когда необходимо точно определить активные учетные записи и их права доступа.
Использование команды who для отображения текущих пользователей

Основной синтаксис команды:
who [опции]
Простейший вызов who без аргументов показывает стандартную таблицу активных сессий.
| Логин | Терминал | Дата и время входа | IP-адрес или хост |
|---|---|---|---|
| user1 | tty1 | 2025-12-21 08:15 | localhost |
| admin | pts/0 | 2025-12-21 09:02 | 192.168.1.5 |
Ключевые опции команды:
- -u – показывает время последней активности пользователя на терминале.
Для анализа активности нескольких терминалов рекомендуется использовать who -uH, что позволяет одновременно видеть логины, терминалы, время входа и последнюю активность, упрощая аудит аудит пользователей на сервере.
Просмотр всех зарегистрированных пользователей через команду cat /etc/passwd

Файл /etc/passwd содержит информацию обо всех учетных записях Linux, включая системные и пользовательские. Каждая строка описывает одну учетную запись и состоит из семи полей, разделенных двоеточиями:
логин:пароль:UID:GID:описание:домашний_каталог:шелл
Пример строки:
user1:x:1001:1001:User One:/home/user1:/bin/bash
cat /etc/passwd | awk -F: ‘$3 >= 1000 {print $1}’
Эта команда покажет только пользователей с UID 1000 и выше, обычно соответствующих реальным учетным записям людей. Для просмотра всех полей конкретного пользователя удобно использовать grep:
grep ‘^user1:’ /etc/passwd
Использование cat /etc/passwd позволяет быстро получить полный список зарегистрированных учетных записей и проверить параметры их конфигурации, включая домашние каталоги и используемые оболочки.
Фильтрация системных и обычных пользователей с помощью awk
Команда awk позволяет выделять пользователей из файла /etc/passwd по UID, отделяя системные учетные записи от обычных.
Системные пользователи обычно имеют UID меньше 1000, а обычные – 1000 и выше. Пример фильтрации:
awk -F: ‘$3 < 1000 {print $1}' /etc/passwd
awk -F: ‘$3 >= 1000 {print $1}’ /etc/passwd
Дополнительно можно вывести домашний каталог и используемый шелл:
- awk -F: ‘$3 >= 1000 {print $1, $6, $7}’ /etc/passwd
Для сортировки по имени пользователя удобно добавить | sort:
awk -F: ‘$3 >= 1000 {print $1}’ /etc/passwd | sort
Использование awk позволяет быстро анализировать состав пользователей, отделяя системные и рабочие учетные записи и контролируя настройки их профилей.
Команда getent позволяет получать сведения о пользователях из стандартных баз данных системы, включая passwd, group и другие, поддерживаемые NSS (Name Service Switch).
getent passwd
Формат строки совпадает с /etc/passwd:
- логин
- хэш пароля
- UID
- GID
- описание
- домашний каталог
- оболочка
Для получения информации о конкретном пользователе используется:
getent passwd user1
Это позволяет проверить наличие учетной записи в системе и внешних источниках, например LDAP.
Дополнительно можно комбинировать с awk для фильтрации:
Использование getent обеспечивает актуальный список пользователей, включая учетные записи из внешних источников, что важно для администрирования крупных систем.
Проверка активных сессий через команду w
Команда w показывает текущих пользователей системы, их терминалы, время входа, длительность бездействия и выполняемые процессы. Она объединяет информацию команд who и uptime.
Простейший вызов:
w
- USER – имя пользователя;
- TTY – терминал или псевдотерминал;
- FROM – удаленный хост или IP;
- LOGIN@ – время входа;
- IDLE – время бездействия;
- JCPU – время процессов терминала;
- PCPU – время текущего процесса;
- WHAT – выполняемый процесс.
w | grep pts
Команда w позволяет оперативно отслеживать нагрузку на систему, активность пользователей и их текущие задачи, что важно для администрирования и контроля доступа.
Использование команды id для получения данных о конкретном пользователе
Простейший вызов:
id user1
- uid – идентификатор пользователя;
- gid – идентификатор основной группы;
- groups – все группы, к которым относится пользователь.
Для получения только UID используется ключ -u:
id -u user1
- id -g user1 – основной GID;
- id -G user1 – все GID пользователя.
Использование id помогает точно определить права доступа конкретного пользователя, проверить членство в группах и подготовить конфигурацию системных прав.
Чтение и анализ файла /etc/shadow для проверки наличия учетных записей

Файл /etc/shadow хранит зашифрованные пароли пользователей и дополнительные параметры учетных записей, включая дату последней смены пароля, минимальный и максимальный срок действия, а также блокировки.
Доступ к файлу ограничен пользователем root для защиты конфиденциальных данных. Основной формат строки:
логин:хэш_пароля:последняя_смена:min:max:предупр:неактивность:истечение
Для проверки существования конкретного пользователя можно использовать grep:
sudo grep ‘^user1:’ /etc/shadow
Если команда возвращает строку, учетная запись присутствует, а поле хэша показывает, установлен ли пароль. Пустой или символ ! в начале хэша указывает на заблокированную учетную запись.
Анализ /etc/shadow помогает выявить неактивные или заблокированные пользователи, контролировать сроки действия паролей и поддерживать безопасность системы.
Объединение команд для создания удобного списка пользователей

Для формирования наглядного списка пользователей в Linux часто комбинируют несколько команд и фильтров. Это позволяет получить только нужные данные и сортировать их по логину, UID или домашнему каталогу.
Пример создания списка обычных пользователей с их UID и домашними каталогами:
awk -F: ‘$3 >= 1000 {print $1, $3, $6}’ /etc/passwd | sort
Если необходимо проверить активность пользователей на сервере, можно объединить who и awk:
who | awk ‘{print $1, $2, $3}’ | sort | uniq
Для включения информации о внешних учетных записях применяется getent:
getent passwd | awk -F: ‘$3 >= 1000 {print $1, $3, $6}’ | sort
Использование конвейеров позволяет:
- фильтровать системные и обычные учетные записи;
- отслеживать активные сессии;
- формировать структурированные списки с UID, домашними каталогами и используемыми оболочками.
Такие комбинации обеспечивают быстрый и точный контроль пользователей, особенно при администрировании серверов с большим количеством учетных записей.
Вопрос-ответ:
Как с помощью команды who узнать, кто сейчас вошел в систему?
Команда who выводит список активных пользователей, их терминалы, время входа и источник подключения. Простейший вызов who без аргументов покажет все текущие сессии. Для более наглядного отображения можно использовать who -uH, что добавляет заголовки и время бездействия пользователей.
Какая разница между просмотром пользователей через /etc/passwd и getent?
Файл /etc/passwd содержит локальные учетные записи, включая системные и обычные. Команда getent passwd дополнительно учитывает внешние источники, подключенные через NSS, например LDAP. Это позволяет получить полный список пользователей, независимо от того, где хранится учетная запись.
Как с помощью awk отделить системных пользователей от обычных?
Системные учетные записи обычно имеют UID меньше 1000, а обычные — 1000 и выше. Пример для обычных пользователей: awk -F: ‘$3 >= 1000 {print $1}’ /etc/passwd. Для системных пользователей используют awk -F: ‘$3 < 1000 {print $1}' /etc/passwd. Дополнительно можно выводить домашний каталог и оболочку: awk -F: ‘$3 >= 1000 {print $1, $6, $7}’ /etc/passwd.
Как проверить наличие конкретной учетной записи и ее активность?
Для проверки существования пользователя используют grep ‘^user1:’ /etc/passwd или getent passwd user1. Для проверки заблокированных или неактивных паролей можно просмотреть /etc/shadow через sudo grep ‘^user1:’ /etc/shadow. Если поле пароля пустое или начинается с !, учетная запись заблокирована.
