Получить информацию о работающих пользователях подсчитать их количество и запомнить в файле linux

Обновлено: 06.07.2024

Эта глава описывает команды печатают информацию о пользователе: логины, группы и т.д.

`id' печатает информация о указанном пользователе или работающем, если пользователь не указан. Синтаксис:

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

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

Параметры указывают `id' печатать только часть этой информации. См. также раздел 2. Общие параметры. `-g' `--group' Печатать только идентификатор группы. `-G' `--groups' Печатать только дополнительные группы. `-n' `--name' Печатать имя пользователя или группы вместо идентификатора. Требует `-u', `-g', or `-G'. `-r' `--real' Печатать действительный, вместо эффективного, идентификатор пользователя или группы. Требует `-u', `-g', or `-G'. `-u' `--user' Печатать только идентификатор пользователя.

Параметрами являются `--help' и `--version'. См. раздел 2. Общие параметры.

`whoami' печатает имя пользователя, ассоциированное с текущим эффективным идентификатором пользователя. Это эквивалент команды `id -un'.

Параметрами являются `--help' и `--version'. См. раздел 2. Общие параметры.

`groups' печатает имена основной и дополнительных групп для каждого указанного ИМЕНИ-ПОЛЬЗОВАТЕЛЯ, или текущего процесса, если имена не даны. Если имена указаны, имя каждого пользователя печатается перед списком пользовательских групп. Синтаксис:

Списки групп эквивалентны выводу команды `id -Gn'.

Параметрами являются `--help' и `--version'. См. раздел 2. Общие параметры.

`users' печатает единственную строку разделенного пробелами списка пользователей, работающих в данной системе в данный момент времени. Каждое имя пользователя соответсвует сессии, т.о. если пользователь имеет более одной сессии, его имя появится соответсвующее число раз в выводе. Синтаксис:

Без аргумента ФАЙЛ, `users' извлекает информацию из файла `/var/run/utmp'. Если файловый аргумент задан, `users' использует этот файл. Основной выбор это `/var/run/wtmp'.

Параметрами являются `--help' и `--version'. См. раздел 2. Общие параметры.

`who' печатает информацию и пользователях, работающих в данное время в системе. Синтаксис:

Если аргументы не переданы, `who' печатает следующую информацию о работающих в системе пользователях: логин, линии терминала, время работы и имя удаленного хоста или X дисплея.

Если задан непараметрический аргумент, `who' использует его вместо `/var/run/utmp' в качестве имени файла, содержащего записи работающих в системе пользователей. `/var/run/utmp' в основном передается как аргумент для `who', чтобы посмотреть, кто ранее зашел в систему.

Если переданы два непараметрических аргумента, `who' печатет только запись для запустившего ее пользователя (определяется из стандартного ввода), предваренной именем хоста. Традиционно, два передаваемых аргумента это `am i', как в `who am i'.

Вы когда-нибудь хотели перечислить всех пользователей в вашей системе Linux или подсчитать количество пользователей в системе? Есть команды для создания пользователя, удаления пользователя, вывода списка пользователей, вошедших в систему, но какова команда для вывода списка всех пользователей в Linux?

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

Получите список всех пользователей с помощью файла /etc/passwd

Информация о локальном пользователе хранится в /etc/passwd . Каждая строка в этом файле представляет информацию для входа в систему для одного пользователя. Чтобы открыть файл, вы можете использовать cat или less :

Каждая строка в файле содержит семь полей, разделенных двоеточиями, которые содержат следующую информацию:

  • Имя пользователя.
  • Зашифрованный пароль ( x означает, что пароль хранится в /etc/shadow ).
  • Идентификационный номер пользователя (UID).
  • Идентификационный номер группы пользователя (GID).
  • Полное имя пользователя (GECOS).
  • Домашний каталог пользователя.
  • Оболочка входа (по умолчанию /bin/bash ).

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

Получите список всех пользователей с помощью команды getent

Команда getent отображает записи из баз данных, настроенных в файле /etc/nsswitch.conf , включая базу данных passwd , которую можно использовать для запроса списка всех пользователей.

Чтобы получить список всех пользователей Linux, введите следующую команду:

Как видите, вывод такой же, как и при отображении содержимого файла /etc/passwd . Если вы используете LDAP для аутентификации пользователей, getent отобразит всех пользователей Linux как из файла /etc/passwd и из базы данных LDAP.

Вы также можете использовать awk или cut для печати только первого поля, содержащего имя пользователя:

Проверить, существует ли пользователь в системе Linux

Теперь, когда мы знаем, как составить список всех пользователей, чтобы проверить, существует ли пользователь в нашем Linux-сервере, мы можем просто отфильтровать список пользователей, передав его по конвейеру команде grep .

Например, чтобы узнать, существует ли в нашей системе Linux пользователь с именем jack мы можем использовать следующую команду:

Если пользователь существует, приведенная выше команда распечатает информацию для входа в систему. Нет вывода, что означает, что пользователь не существует.

Мы также можем проверить, существует ли пользователь, не используя команду grep как показано ниже:

Как и раньше, если пользователь существует, команда отобразит информацию для входа в систему.

Если вы хотите узнать, сколько учетных записей пользователей у вас в системе, getent passwd вывод getent passwd команде wc :

Как видно из вышеприведенного вывода, в моей системе Linux 33 учетных записи пользователей.

Системные и обычные пользователи

Технической разницы между системой и обычными (обычными) пользователями нет. Обычно пользователи системы создаются при установке ОС и новых пакетов. В некоторых случаях вы можете создать системного пользователя, который будет использоваться некоторыми приложениями.

У каждого пользователя есть числовой идентификатор пользователя, называемый UID. Если не указан при создании нового пользователя с помощью команды useradd , UID будет автоматически выбран из файла /etc/login.defs зависимости от UID_MIN и UID_MIN .

Чтобы проверить значения UID_MIN и UID_MIN в вашей системе, вы можете использовать следующую команду:

Из выходных данных выше мы видим, что все обычные пользователи должны иметь UID от 1000 до 60000. Знание минимального и максимального значения позволяет нам запрашивать список всех обычных пользователей в нашей системе.

Команда ниже перечислит всех обычных пользователей в нашей системе Linux:

UID_MIN и UID_MIN вашей системы могут отличаться, поэтому более общая версия приведенной выше команды будет:

Если вы хотите распечатать только имена пользователей, просто направьте вывод в команду cut :

Выводы

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

Те же команды применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint.

Название команды who Linux полностью отображает ее функциональность — она служит для получения информации о пользователях, которые подключены к системе, в том числе и об терминальных сессиях, через которые происходит подключение.

При выполнении команды используются данные из файла /etc/utmp, хотя можно прописать в терминале и другой файл (как правило, используют /etc/wtmp либо /etc/inittab).

Синтаксис who

Синтаксис этой команды достаточно прост и выглядит так:

who опции имя_файла аргументы

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

Также можно прописывать команду в виде who am i — тогда она будет идентифицировать конкретно того пользователя, который работает сейчас в терминале (аналогично опции -m).

Опции who

Используя различные опции, можно получать именно ту информацию, которая нужна здесь и сейчас:

  • -a (--all) — включает в себя все основные опции.
  • - b (--boot) — показывает время загрузки операционной системы.
  • -d (--dead) — выводит перечень зомби-процессов.
  • - H (--heading) — никак не влияет на получаемую информацию, зато добавляет колонкам заголовки и помогает понять что где находится.
  • -m — показать пользователя, который сейчас работает в терминале.
  • -r — вывести текущий уровень запуска (runinit);
  • -t — показать последнее изменение системных часов;
  • -s— вывести только имя, терминальную сессию и время.
  • -q— вывести количество авторизованных пользователей.
  • -T — данные о терминальной сессии.
  • -u — показать активных пользователей.
  • --ips — вместо названия хостов показывает ips.
  • --lookup — используется в сочетании с --ips, выводит данные, которые основываются на сохраненном IP, если он доступен, а не на названии хоста.

Примеры использования who

Используя опцию -a, мы получаем максимум данных, которыми команда готова снабдить нас без каких-либо дополнительных указаний. В состав этой опции входят опции -b, -d, --login, -p, -r, -t, -T, -u:


Этих данных больше, чем при простом использовании who:


Чтобы узнать только время загрузки системы, достаточно написать в терминале:


Нужно узнать текущий уровень запуска (runinit)? Для этого служит команда who в сочетании с опцией -r:


При использовании опции -s выводятся значения NAME, LINE и TIME — информация, идентичная той, что будет получена без использования каких-либо опций. Все то же самое, но уже с добавлением данных о состоянии терминальной сессии, показывает опция -T.


Не упоминается в мануале опция -q, тем не менее, она работает, выводя информацию о количестве пользователей в системе:


С помощью -u можно узнать информацию о тех пользователях, которые активны в данный момент:


На этом же скрине видны изменения, которые происходят при использовании опции -H — у колонок с данными появились заголовки.А вот и зомби-процессы, которые показывает опция -d:

Кстати, поле EXIT при использовании этой опции не выводится. Чтобы увидеть его, следует использовать -a.

Выводы

Команда who Linux — это интересный и полезный инструмент для пользователей Linux. С ее помощью можно узнать всю доступную информацию о пользователях, которые активны в системе сейчас или были активны раньше. Мы постарались как можно подробнее рассказать вам о правилах и нюансах использования who, однако, если у вас остались вопросы, задавайте их в комментариях.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Вы когда-нибудь хотели перечислить всех пользователей в вашей системе Linux или подсчитать количество пользователей в системе? Есть команды для создания пользователя, удаления пользователя, вывода списка пользователей, вошедших в систему, но какова команда для вывода списка всех пользователей в Linux?

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

Список всех пользователей Linux с помощью файла /etc/passwd

Информация о локальных пользователях хранится в файле /etc/passwd. Каждая строка в этом файле представляет информацию для входа в систему для одного пользователя. Чтобы открыть файл, вы можете использовать cat или less:


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

  • Имя пользователя.
  • Зашифрованный пароль (x означает, что пароль хранится в файле /etc/shadow).
  • Идентификационный номер пользователя (UID).
  • Идентификационный номер группы пользователя (GID).
  • Полное имя пользователя (GECOS).
  • Домашний каталог пользователя.
  • Оболочка входа (по умолчанию /bin/bash).

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


Получение списка всех пользователей с помощью команды getent

Команда getent отображает записи из баз данных, настроенных в файле /etc/nsswitch.conf, включая базу данных passwd, которую можно использовать для запроса списка всех пользователей.

Чтобы получить список всех пользователей Linux, введите следующую команду:


Как видите, вывод такой же, как и при отображении содержимого файла /etc/passwd. Если вы используете LDAP для аутентификации пользователей, getent будет отображать всех пользователей Linux как из файла /etc/passwd, так и из базы данных LDAP.

Вы также можете использовать awk или cut для печати только первого поля, содержащего имя пользователя:


Аналогичный результат можно получить с помощью команды compgen:

Как проверить, существует ли пользователь в системе Linux

Теперь, когда мы знаем, как составить список всех пользователей, чтобы проверить, существует ли пользователь в нашем Linux-сервере, мы можем просто отфильтровать список пользователей, передав его по конвейеру команде grep.

Например, чтобы узнать, существует ли в нашей системе Linux пользователь с именем mial, мы можем использовать следующую команду:

Если пользователь существует, приведённая выше команда распечатает краткую информацию о нём. Если нет вывода, что означает, что пользователя не существует.


Мы также можем проверить, существует ли пользователь, не используя команду grep, как показано ниже:


Как и раньше, если пользователь существует, команда отобразит информацию для входа в систему.

Если вы хотите узнать, сколько учётных записей пользователей у вас в системе, передайте вывод getent passwd команде wc:


Как видно из вывода выше, на удалённом сервере Linux 510 учётных записи пользователей.

Системные и обычные пользователи

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

Обычные пользователи — это пользователи, созданные пользователем root или другим пользователем с привилегиями sudo. Обычно у обычного пользователя есть настоящая оболочка входа в систему и домашний каталог.

У каждого пользователя есть числовой идентификатор пользователя, называемый UID. Если не указан при создании нового пользователя с помощью команды useradd, UID будет автоматически выбран из файла /etc/login.defs в зависимости от значений UID_MIN и UID_MIN.

Чтобы проверить значения UID_MIN и UID_MIN в вашей системе, вы можете использовать следующую команду:

Из выходных данных выше мы видим, что все обычные пользователи должны иметь UID от 1000 до 60000. Знание минимального и максимального значения позволяет нам запрашивать список всех обычных пользователей в нашей системе.

Команда перечислит всех обычных пользователей в нашей системе Linux:


Значения UID_MIN и UID_MIN вашей системы могут отличаться, поэтому более общая версия приведённой выше команды будет:

Если вы хотите распечатать только имена пользователей, просто направьте вывод в команду cut:

Как показать пользователей, имеющих оболочки входа

Чтобы вывести список только пользователей с оболочками входа, используйте одну из следующих команд:

Обратите внимание, что эти команды не равнозначны.

Как вывести всех пользователей, имеющих домашний каталог

Если вы хотите составить список пользователей, у которых есть своя папка в директории /home, то используйте следующую команду:

Заключение

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

Те же команды применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian, Linux Mint, Arch Linux и Manjaro.

Читайте также: