Как узнать, кто сейчас вошёл в Linux

Linux — многопользовательская система. Несколько пользователей могут одновременно входить и запускать программы. Иногда нужно быстро узнать, кто сейчас в системе: для устранения проблем с производительностью, мониторинга активности или просто из любопытства.
В этой статье перечислены команды и приёмы, которые помогут получить эту информацию и понять, что именно делают пользователи.
Ключевые варианты использования
- Быстрый список имён: users
- Детали сессий (терминал, время, хост): who
- Активность и процессы: w
- История входов/выходов: last
- Расширенная информация о пользователе: finger
- Процессы пользователя в реальном времени: top -u
1. Команда users
Команда users выводит список всех текущих вошедших пользователей в алфавитном порядке. Если у пользователя несколько сессий, имя повторяется.
Пример использования:
usersПримечание: users удобна для быстрого просмотра, но не показывает терминалы, время входа или откуда подключён пользователь.
2. Команда who — кто подключён и откуда
who показывает список вошедших пользователей и дополнительную информацию: терминал (TTY), дату и время входа, а также IP-адрес или имя хоста при удалённых сессиях.
Базовый вызов:
whoПолезные флаги:
who -a -H- -a — показывает все доступные записи (включая idle, PID и др.).
- -H — включает заголовок в выводе.
Совет: who читает файл /var/run/utmp (или /run/utmp). Если этот файл повреждён, who может не показывать актуальные данные.
3. Команда w — кто и что делает
w показывает вошедших пользователей и их активность. Заголовок содержит текущее время, время работы системы, число вошедших пользователей и load average.
Вывод для каждого пользователя включает: имя, tty, время входа, время простоя (idle), JCPU (время всех процессов на tty), PCPU (время текущего процесса) и текущий процесс.
Вызов:
wПрименяйте w, чтобы быстро увидеть, кто активно использует систему и какие комманды выполняет.
4. Команда last — история входов и текущие сессии
last читает файл /var/log/wtmp и показывает историю вошедших и вышедших пользователей, а также перезагрузки системы.
Чтобы отобразить только текущие сессии (по состоянию на сейчас):
last -p nowlast полезен, когда нужно выяснить, когда пользователь входил ранее, или отследить перезагрузки и аварийные завершения.
5. Команда finger — подробности о пользователе
finger выводит расширенную информацию о вошедших пользователях: логин, tty, время входа и IP/хост. Finger обычно не предустановлен; установите через пакетный менеджер.
Debian/Ubuntu:
sudo apt-get install fingerRHEL/CentOS:
sudo yum install fingerЗапуск без аргументов показывает всех вошедших пользователей:
fingerДля подробной информации о конкретном пользователе передайте имя:
finger usernameВажно: finger может раскрывать информацию (GECOS), поэтому на серверах с высокими требованиями к безопасности его часто не устанавливают.
6. Команда top — процессы пользователя в реальном времени
top показывает сводную информацию о системе и активные процессы. Чтобы отобразить процессы конкретного пользователя:
top -u usernametop полезен, когда вы видите пользователя в who/w и хотите понять, какие процессы он запустил и сколько ресурсов они потребляют.
Когда команды дают неверные или неполные данные
- Повреждённые /var/run/utmp или /var/log/wtmp приведут к неполному выводу who и last.
- GUI сессии (например, Display Manager) могут не отображаться в тех же утилитах как ожидается. Для GUI-сессий смотрите systemd-logind или менеджер дисплея (gdm/lightdm).
- SSH-сессии отображаются с хоста/IP, но NAT/бастион могут скрыть реальный источник.
- Неполадки с правами доступа: journalctl и некоторые файлы логов требуют root.
Альтернативы и дополнительные источники информации
- journalctl -u sshd — логи входов по SSH.
- ss -tnpa | grep sshd — текущие SSH-соединения.
- lastlog — показывает последнее время входа для каждого пользователя.
- systemctl status getty@tty1 — проверка локальных виртуальных терминалов.
Краткая шпаргалка (cheat sheet)
- users — короткий список имён
- who — терминалы, время, хосты
- w — активность и процессы
- last — история входов/выходов
- finger — детальная информация о пользователе
- top -u username — процессы пользователя
- journalctl -u sshd — логи SSH
Ролевые чеклисты
Для системного администратора:
- Проверьте who и w для реального времени.
- Просмотрите last для истории и аномалий.
- Используйте journalctl и /var/log/auth.log для расследования входов.
- Проанализируйте процессы через top/ps и измерьте нагрузку.
Для обычного пользователя:
- Используйте users или who, чтобы увидеть, кто ещё вошёл.
- Если замечена чужая сессия — свяжитесь с админом.
Наблюдательные модели и эвристики
- Если load average вырос и w показывает активного пользователя с интенсивным процессом — вероятно, именно он нагрузил систему.
- Повторяющиеся однотипные входы с разных IP могут указывать на автоматизированные подключения.
- Если who не показывает никого, а load большой — проверьте фоновые демоны и планировщик задач.
Главные ограничения и безопасность
- Многие утилиты читают системные файлы (utmp/wtmp) и логи. Их целостность влияет на корректность вывода.
- Finger раскрывает дополнительные данные о пользователях; на проде его обычно не устанавливают.
- Доступ к журналам и некоторым утилитам требует привилегий root.
Важно: всегда соблюдайте политики компании и законы о приватности при мониторинге активности пользователей.
Мердмайд: простое решение-дерево выбора команды
flowchart TD
A[Нужно быстро — кто вошёл?] -->|коротко| B[users]
A -->|детали сессии| C[who]
A -->|что делает пользователь| D[w]
A -->|история входов| E[last]
A -->|детали профиля| F[finger]
A -->|процессы пользователя| G[top -u]Критерии приёмки
- Вы можете назвать всех текущих вошедших пользователей (users/w/who).
- Вы можете показать, с какого хоста подключён удалённый пользователь (who/last).
- Вы можете отобразить процессы выбранного пользователя (top -u или ps -u).
1-строчный глоссарий
- TTY — терминал, устройство ввода/вывода сессии.
- utmp/wtmp — системные файлы для текущих и исторических сессий.
- JCPU/PCPU — суммарное/текущее процессорное время в выводе w.
Заключение
Эти команды покрывают большинство задач по обнаружению и анализу вошедших пользователей в Linux. Начните с простого — users или who — и углубляйтесь с помощью w, last, finger и top, когда нужны детали. Для расследований используйте логи (journalctl, /var/log/auth.log) и следите за целостностью системных файлов.
Important: при работе с пользовательскими данными соблюдайте требования приватности и внутренние политики безопасности.