Добавить в корзинуПозвонить
Найти в Дзене

Linux список пользователей

В Linux существует несколько способов получить список пользователей системы. Вот наиболее распространенные и полезные команды: 1. /etc/passwd (основной файл): 2. getent passwd: 3. compgen -u: 4. awk -F: '$3 >= 1000 {print $1}' /etc/passwd (Фильтрация по UID): 5. id -u <имя_пользователя> (Проверка существования пользователя): 6. getent group (Список групп): Какой способ выбрать? Выбор зависит от того, какая информация вам нужна. Если вам нужен просто список имен пользователей, используйте compgen -u. Если вам нужна более подробная информация, используйте cat /etc/passwd или getent passwd.

В Linux существует несколько способов получить список пользователей системы. Вот наиболее распространенные и полезные команды:

1. /etc/passwd (основной файл):

  • Описание: Файл /etc/passwd содержит информацию о каждом пользователе в системе, включая имя пользователя, идентификатор пользователя (UID), идентификатор группы (GID), домашний каталог и командную оболочку.
  • Просмотр списка пользователей: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
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/usr/sbin/nologin
    man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
    lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
    mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
    news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
    ...
    john:x:1000:1000:John Doe:/home/john:/bin/bash
    jane:x:1001:1001:Jane Smith:/home/jane:/bin/bash
  • Разбор вывода: Каждая строка в файле /etc/passwd представляет собой запись об одном пользователе. Строка разделена на 7 полей, разделенных двоеточиями (:):Имя пользователя (username): Имя учетной записи.
    Пароль (password): В современных системах здесь обычно находится x, что означает, что пароль хранится в зашифрованном виде в файле /etc/shadow (доступ к которому имеет только root).
    UID (user ID): Уникальный числовой идентификатор пользователя.
    GID (group ID): Уникальный числовой идентификатор основной группы пользователя.
    Комментарий (comment): Обычно содержит полное имя пользователя или другую информацию.
    Домашний каталог (home directory): Путь к домашнему каталогу пользователя.
    Командная оболочка (login shell): Путь к командной оболочке, которая запускается при входе пользователя в систему. /bin/bash — обычная командная оболочка, а /usr/sbin/nologin означает, что пользователю запрещен интерактивный вход в систему.
  • Фильтрация результатов (только имена пользователей):cut -d: -f1 /etc/passwd
    Эта команда использует cut для извлечения только первого поля (имя пользователя) из файла /etc/passwd.
  • Фильтрация результатов (только пользователи с домашним каталогом):awk -F: '$7 != "/usr/sbin/nologin" {print $1}' /etc/passwd
    Эта команда использует awk для фильтрации строк, где седьмое поле (командная оболочка) не равно /usr/sbin/nologin, и выводит первое поле (имя пользователя). Это покажет только тех пользователей, которым разрешен интерактивный вход в систему.

2. getent passwd:

  • Описание: getent (get entries) - это команда, которая получает записи из различных баз данных системы, включая базу данных пользователей (passwd). Она учитывает различные источники информации о пользователях, такие как локальные файлы, LDAP, NIS и другие.
  • Синтаксис:getent passwd
  • Пример вывода: Вывод аналогичен команде cat /etc/passwd.
  • Преимущества: Более гибкий, чем cat /etc/passwd, так как он учитывает различные источники информации о пользователях.
  • Фильтрация результатов (только имена пользователей):getent passwd | cut -d: -f1

3. compgen -u:

  • Описание: compgen (completion generator) - это команда, которая используется для генерации возможных завершений командной строки. С опцией -u она генерирует список имен пользователей.
  • Синтаксис:compgen -u
  • Пример вывода:root
    daemon
    bin
    sys
    sync
    games
    man
    lp
    mail
    news
    ...
    john
    jane
  • Преимущества: Простой и лаконичный вывод, содержащий только имена пользователей.
  • Ограничения: Не отображает дополнительную информацию о пользователях (UID, GID, домашний каталог и т. д.).

4. awk -F: '$3 >= 1000 {print $1}' /etc/passwd (Фильтрация по UID):

  • Описание: В большинстве систем Linux обычные пользователи имеют UID, начиная с 1000. Эта команда использует awk для фильтрации файла /etc/passwd и вывода только имен пользователей с UID, равным или большим 1000.
  • Синтаксис:awk -F: '$3 >= 1000 {print $1}' /etc/passwd
  • Пример вывода:john
    jane
  • Преимущества: Позволяет отфильтровать системных пользователей и отобразить только обычных пользователей.
  • Ограничения: Предполагает, что обычные пользователи имеют UID, начиная с 1000. Это может быть неверно для всех систем.

5. id -u <имя_пользователя> (Проверка существования пользователя):

  • Описание: Команда id отображает информацию об указанном пользователе. Если пользователя не существует, она выдает ошибку. Это можно использовать для проверки существования пользователя.
  • Синтаксис:id -u <имя_пользователя>
  • Пример:id -u john
    1000
    id -u nonexistentuser
    id: ‘nonexistentuser’: no such user
  • Примечание: Эта команда не выводит список всех пользователей, а только проверяет существование конкретного пользователя.

6. getent group (Список групп):

  • Хотя эта команда не выводит список пользователей, она может быть полезна для понимания структуры групп в системе. getent group выводит список всех групп и участников каждой группы.

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

  • Для простого списка имен пользователей: compgen -u.
  • Для списка имен пользователей и другой информации (UID, GID, домашний каталог и т. д.): cat /etc/passwd или getent passwd.
  • Для фильтрации системных пользователей: awk -F: '$3 >= 1000 {print $1}' /etc/passwd.
  • Для проверки существования конкретного пользователя: id -u <имя_пользователя>.

Выбор зависит от того, какая информация вам нужна. Если вам нужен просто список имен пользователей, используйте compgen -u. Если вам нужна более подробная информация, используйте cat /etc/passwd или getent passwd.