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

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/UserandGroupManagementGroup -.-> linux/whoami("User Identifying") subgraph Lab Skills linux/cat -.-> lab-558775{{"Как проверить, вошел ли пользователь в систему Linux в данный момент"}} linux/ps -.-> lab-558775{{"Как проверить, вошел ли пользователь в систему Linux в данный момент"}} linux/whoami -.-> lab-558775{{"Как проверить, вошел ли пользователь в систему Linux в данный момент"}} end

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

На этом этапе вы узнаете, как вывести список пользователей, в данный момент вошедших в систему, с использованием команды who. Это фундаментальная команда, полезная как системным администраторам, так и обычным пользователям для определения активных пользователей в системе.

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

Давайте попробуем это. Если терминал еще не открыт, откройте его. Вы можете найти значок Xfce Terminal слева на рабочем столе.

Введите следующую команду и нажмите Enter:

who

Вы должны увидеть вывод, похожий на следующий:

labex    :0           <timestamp> (:0)

Разберем вывод по частям:

  • labex: Это имя пользователя, вошедшего в систему. В среде LabEx пользователем по умолчанию является labex.
  • :0: Это указывает на используемую терминал (терминальную линию) или дисплей. :0 обычно относится к основному графическому дисплею.
  • <timestamp>: Здесь показаны дата и время входа пользователя. Точный формат и содержание временной метки могут немного отличаться.
  • (:0): Часто это предоставляет дополнительную информацию о сеансе входа, в данном случае подтверждая используемый дисплей.

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

Помните, практика - ключ к успеху! Попробуйте выполнить команду несколько раз, чтобы привыкнуть к ней.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка сеансов пользователей с помощью команды w

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

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

Давайте запустим команду w в вашем терминале. Если вы его закрыли, откройте Xfce Terminal снова.

Введите следующую команду и нажмите Enter:

w

Вы должны увидеть вывод, похожий на следующий:

 <timestamp> up <uptime>,  <users> users,  load average: <load_avg>
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
labex    :0       :0               <login_time>   <idle_time>   <jcpu_time>   <pcpu_time> w

Разберем разные части вывода:

  • Первая строка представляет собой сводку:
    • <timestamp>: Текущее время.
    • up <uptime>: Сколько времени система работает с момента последней загрузки.
    • <users> users: Количество пользователей, вошедших в систему в данный момент.
    • load average: <load_avg>: Средняя загрузка системы за последние 1, 5 и 15 минут. Это показывает среднее количество процессов, ожидающих выполнения.
  • Строка заголовка (USER, TTY, FROM, LOGIN@, IDLE, JCPU, PCPU, WHAT) описывает столбцы, которые следуют для каждого вошедшего пользователя.
  • USER: Имя пользователя.
  • TTY: Терминал (терминальная линия), которую использует пользователь.
  • FROM: Удаленный хост, с которого пользователь выполнил вход (если это применимо). Для локального графического сеанса, как в этом случае, часто показывается :0.
  • LOGIN@: Время входа пользователя в систему.
  • IDLE: Время простоя терминала.
  • JCPU: Время, использованное всеми процессами, связанными с терминалом.
  • PCPU: Время, использованное текущим процессом.
  • WHAT: Командная строка текущего процесса пользователя. В данном случае показано w, так как это та команда, которую вы только что запустили.

Команда w дает более динамическое представление по сравнению с командой who, показывая не только, кто вошел в систему, но и то, что они активно делают.

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

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка записей о входах в системе в файле /var/run/utmp

На этом этапе вы узнаете о файле /var/run/utmp и о том, как команды типа who и w получают из него информацию. Этот файл является важной частью механизма отслеживания в Linux пользователей, вошедших в систему.

Файл /var/run/utmp представляет собой бинарный файл, содержащий информацию о пользователях, в данный момент вошедших в систему. Он постоянно обновляется при входе и выходе пользователей. Команды, такие как who, w и users, читают этот файл для отображения текущей информации о входах.

Поскольку /var/run/utmp - это бинарный файл, вы не можете просто просмотреть его содержимое с помощью команд, такими как cat или less, как вы бы делали с текстовым файлом. В этом случае вы увидите непонятные символы.

Давайте попробуем просмотреть его с помощью команды cat, чтобы увидеть, что произойдет (и понять, почему мы так делать не должны):

cat /var/run/utmp

Вы увидите множество нечитаемых символов, что ожидаемо для бинарного файла.

<binary_output>

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

Еще одна команда, которая специально читает и отображает содержимое файла /var/run/utmp, - это utmpdump. Эта команда полезна для отладки или изучения исходных данных в файле.

Давайте используем команду utmpdump для просмотра содержимого файла /var/run/utmp.

utmpdump /var/run/utmp

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

Utmp dump of /var/run/utmp
[<type>] [<pid>] [<line>] [<id>] [<user>] [<host>] [<exit>] [<session>] [<tv_sec>] [<tv_usec>] [<addr_v6>]
...
[7] [ <pid> ] [ :0 ] [ :0 ] [ labex  ] [ :0 ] [  0,  0 ] [ <session_id> ] [ <timestamp> ] [ <usec> ] [ <ipv6_address> ]
...

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

Понимание файла /var/run/utmp помогает вам понять, как Linux отслеживает сеансы пользователей и как работают команды типа who и w "под капотом".

Нажмите Продолжить, чтобы завершить этот практический урок.

Резюме

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

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