← Назад к вопросам

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

1.3 Junior🔥 151 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Отличный вопрос! Проверка активных сессий других пользователей — одна из стандартных задач системного администратора и DevOps-инженера для мониторинга активности, выявления подозрительных действий или просто понимания текущей нагрузки на сервер. Существует несколько классических способов сделать это в Linux-системах.

Основные команды и утилиты

1. w (who & what)

Самая простая и информативная команда. Она показывает: кто в системе, откуда подключился, когда вошел, время простоя, общую нагрузку на систему и какую команду выполняет в данный момент.

$ w
 23:15:03 up 45 days,  8:22,  3 users,  load average: 0.08, 0.03, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
alex     pts/0    192.168.1.100    22:30    5.00s  0.05s  0.00s sshd: alex [priv]
svc_user :0       :0               10Jan23 ?xdm?  45:22m  0.01s /usr/lib/gdm3/gdm-x-session
ivan     pts/1    10.20.30.40      23:10    1.00s  0.02s  0.00s w
  • USER: Имя пользователя.
  • TTY: Терминал. pts/ — это pseudo-terminal (обычно SSH-сессия), :0 — графическая сессия.
  • FROM: IP-адрес или хост, с которого выполнено подключение.
  • WHAT: Текущая выполняемая команда (очень полезно!).

2. who и who -a

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

$ who
alex     pts/0        2024-03-15 22:30 (192.168.1.100)
ivan     pts/1        2024-03-15 23:10 (10.20.30.40)
svc_user :0           2024-01-10 10:23 (:0)

$ who -a
           system boot  2024-01-30 14:53
           run-level 5  2024-01-30 14:53
svc_user  + :0          2024-01-10 10:23   ?          3578 (:0)
alex      + pts/0       2024-03-15 22:30   .          11245 (192.168.1.100)
LOGIN      tty1         2024-01-30 14:53              1154 id=tty1

Знак + указывает на сессию, которая позволяет запись (т.е. интерактивный логин).

3. last и lastlog

Команда last показывает историю входов в систему (читает /var/log/wtmp). Полезно для аудита. lastlog выводит дату последнего входа для всех пользователей системы.

# Показать последние 5 активных входов
$ last -5
alex     pts/1        10.20.30.40      Fri Mar 15 23:10   still logged in
alex     pts/0        192.168.1.100    Fri Mar 15 22:30   still logged in
svc_user :0           :0               Wed Jan 10 10:23   still logged in
reboot   system boot  5.15.0-94-generi Wed Jan 10 10:22   still running

# Показать последний логин всех пользователей
$ lastlog | head -5
Username         Port     From             Latest
root                                       **Never logged in**
alex             pts/1    10.20.30.40      Fri Mar 15 23:10:22 +0300 2024
svc_user         :0                        Wed Jan 10 10:23:15 +0300 2024

Мониторинг процессов и сессий

4. ps и pstree с фильтрацией

Пользовательские сессии часто связаны с процессами sshd (для SSH) или login. Можно отфильтровать процессы по пользователю или имени.

# Показать все процессы, связанные с SSH демоном
$ ps -ef | grep sshd
root     11234     1  0 Jan30 ?        00:00:12 /usr/sbin/sshd -D
root     11245 11234  0 22:30 ?        00:00:00 sshd: alex [priv]
alex     11247 11245  0 22:30 ?        00:00:00 sshd: alex@pts/0
root     11310 11234  0 23:10 ?        00:00:00 sshd: ivan [priv]
ivan     11312 11310  0 23:10 ?        00:00:00 sshd: ivan@pts/1

# Показать дерево процессов (очень наглядно видна связь сессий)
$ pstree -a -p | grep -A 2 sshd

5. Просмотр с использованием loginctl (для систем с Systemd)

На современных дистрибутивах, использующих systemd, менеджер сессий logind отслеживает все пользовательские сессии.

$ loginctl list-sessions
SESSION  UID USER   SEAT  TTY
      1  1000 alex   seat0 pts/0
      2  1001 ivan   seat0 pts/1
c1     1002 svc_user seat0

$ loginctl session-status 1
1 - alex (1000)
           Since: Fri 2024-03-15 22:30:15 MSK; 45min ago
          Leader: 11247 (sshd)
             TTY: pts/0
          Remote: yes (192.168.1.100)
         Service: sshd; type tty; class user
        ... (много другой технической информации)

Работа с сетевыми подключениями

6. netstat или ss (Socket Statistics)

Эти команды показывают активные сетевые подключения. SSH-сессии используют порт 22.

# Показать SSH соединения
$ sudo netstat -tnpa | grep :22
tcp        0      0 10.0.0.10:22         192.168.1.100:54321    ESTABLISHED 11245/sshd: alex [p
tcp        0      0 10.0.0.10:22         10.20.30.40:12345      ESTABLISHED 11310/sshd: ivan [p

# Более современная альтернатива - команда `ss`
$ sudo ss -tpn src :22
State      Recv-Q Send-Q Local Address:Port  Peer Address:Port
ESTAB      0      0      10.0.0.10:22        192.168.1.100:54321  users:(("sshd",pid=11245,fd=3))
ESTAB      0      0      10.0.0.10:22        10.20.30.40:12345    users:(("sshd",pid=11310,fd=3))

7. Прямой просмотр псевдотерминалов (ptys)

Большинство интерактивных сессий (SSH, terminal emulator) работает через псевдотерминалы (/dev/pts/*). Их владельцы — это текущие активные пользователи.

$ ls -la /dev/pts/
total 0
crw--w----  1 alex  tty  136, 0 Mar 15 22:30 0  # Сессия пользователя alex
crw--w----  1 ivan  tty  136, 1 Mar 15 23:10 1  # Сессия пользователя ivan

Практический совет и предостережение

В реальной работе я чаще всего пользуюсь связкой w для быстрого взгляда и ps auxf | grep sshd или ss -tpn src :22, чтобы понять, какие конкретно процессы и сетевые соединения отвечают за сессии.

Важное предостережение: просмотр сессий других пользователей, особенно с помощью команд, требующих sudo (как ss или ps с детальным выводом), — это операция, затрагивающая безопасность и приватность. Она должна выполняться только в рамках служебных обязанностей (мониторинг, расследование инцидентов) и, желательно, в соответствии с политикой безопасности компании. Все эти команды оставляют записи в системных логах (/var/log/auth.log, /var/log/secure), поэтому ваши действия также могут быть проаудитированы.

Как посмотреть активные сессии других пользователей сервера | PrepBro