Просмотр списка пользователей в Linux командой и через файлы

Как посмотреть пользователей в linux

Как посмотреть пользователей в linux

Управление пользователями в Linux требует точного понимания, какие учетные записи существуют и кто активен в системе. Список пользователей хранится в нескольких системных файлах, таких как /etc/passwd и /etc/shadow, а активные сессии можно отслеживать через команды who и w.

Файл /etc/passwd содержит информацию о каждом пользователе, включая логин, UID, GID и домашний каталог. Использование командного просмотра через cat или фильтрацию с помощью awk позволяет быстро выделить системные и обычные учетные записи.

Для анализа текущей активности пользователей применяются команды who и w, которые показывают, кто вошел в систему, с каких терминалов и когда. Дополнительно команда id позволяет получить детальные данные о конкретной учетной записи, включая группы и идентификаторы.

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

Использование команды who для отображения текущих пользователей

Использование команды 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

Просмотр всех зарегистрированных пользователей через команду 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 для проверки наличия учетных записей

Файл /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. Если поле пароля пустое или начинается с !, учетная запись заблокирована.

Ссылка на основную публикацию