Главная страница » Вывести список пользователей linux

Вывести список пользователей linux

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

1. Просмотр файла /etc/passwd

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

Bash

Cat /etc/passwd

Пример вывода:

Root:x:0:0:root:/root:/bin/bash

Daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

Bin:x:2:2:bin:/bin:/usr/sbin/nologin

Sys:x:3:3:sys:/dev:/usr/sbin/nologin

Your_username:x:1000:1000:Your Name,,,:/home/your_username:/bin/bash

Another_user:x:1001:1001:Another User,,,:/home/another_user:/bin/bash

Расшифровка полей (разделены двоеточием):

Имя пользователя (username): Уникальное имя пользователя. Пароль (password): Символ x означает, что хеш пароля хранится в файле /etc/shadow для безопасности. UID (User ID): Уникальный идентификатор пользователя. UID от 0 до 999 обычно зарезервированы для системных пользователей и сервисов. Пользователи с UID 1000 и выше (или другие значения в зависимости от дистрибутива и настроек) — это обычно обычные (человеческие) пользователи. GID (Group ID): Основной идентификатор группы пользователя. GECOS (General Electric Comprehensive Operating System): Дополнительная информация о пользователе (полное имя, номер комнаты, рабочий телефон и т. д.), часто пустое или содержит только имя. Домашний каталог (home directory): Путь к домашнему каталогу пользователя. Оболочка (shell): Путь к командной оболочке, которая запускается при входе пользователя в систему (например, /bin/bash, /bin/zsh, /usr/sbin/nologin для системных пользователей, которым не нужен вход в систему).

Фильтрация для обычных пользователей:

Чтобы отфильтровать только обычных пользователей (UID >= 1000, в большинстве современных дистрибутивов), можно использовать awk или grep:

Bash

Awk — F: ‘$3 >= 1000 && $3 < 60000 {print $1}’ /etc/passwd # Для UID от 1000 до 59999 (стандартный диапазон)

Или

Bash

Grep ":/home/" /etc/passwd | cut — d: — f1 # Ищет пользователей с домашним каталогом

2. Использование команды Getent

Команда getent запрашивает информацию из баз данных, настроенных в /etc/nsswitch. conf (например, /etc/passwd, NIS, LDAP). Это более универсальный способ, если у вас пользователи хранятся не только локально.

Bash

Getent passwd

Вывод будет таким же, как и у cat /etc/passwd. Вы также можете использовать фильтрацию, как показано выше.

3. Использование команды Compgen (для активных пользователей и групп)

Compgen используется в Bash для генерации возможных завершений команд, но с опцией — u она выводит список пользователей.

Bash

Compgen — u

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

4. Просмотр информации о группах (/etc/group)

Хотя это не список пользователей напрямую, файл /etc/group показывает, к каким группам принадлежат пользователи.

Bash

Cat /etc/group

Пример вывода:

Root:x:0:

Daemon:x:1:

Sudo:x:27:your_username

Your_username:x:1000:

Another_group:x:1002:another_user, your_username

Расшифровка полей:

Имя группы: Пароль группы (x): Если есть. GID (Group ID): Идентификатор группы. Члены группы: Список пользователей, которые являются членами этой группы (через запятую).

5. Использование команды Members (требует Libuser-tools на Debian/Ubuntu)

На некоторых дистрибутивах (Debian, Ubuntu) вы можете использовать команду members для вывода членов определенной группы или всех пользователей.

Bash

Members # Выводит всех пользователей (если вызван без аргументов)

Members sudo # Выводит членов группы sudo

Возможно, потребуется установить пакет:

Bash

Sudo apt install libuser-tools # Для Debian/Ubuntu

6. Использование команды Who или W (для текущих сессий)

Эти команды показывают, кто в данный момент вошел в систему.

Bash

Who

Пример вывода Who:

Your_username :0 2025-05-23 15:00 (:0)

Another_user pts/0 2025-05-23 14:55 (192.168.1.100)

Пример вывода W (более подробный):

15:10:00 up 2 days, 21:00, 2 users, load average: 0.00, 0.01, 0.05

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

Your_username :0 :0 15:00 ? 0.00s 0.00s /usr/lib/gdm3/gdm-x-session —run-script /usr/bin/gnome-session

Another_user pts/0 192.168.1.100 14:55 1:15 0.00s 0.00s bash

Эти команды полезны для мониторинга активных сессий, но не дают полный список всех зарегистрированных пользователей.

Какой способ выбрать?

    Для полного списка всех зарегистрированных пользователей (включая системных) используйте: cat /etc/passwd или getent passwd. Для фильтрации обычных пользователей используйте awk или grep на выводе /etc/passwd. Для просмотра текущих активных пользователей используйте who или w.

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх