Просмотр поведения пользователей под Linux — это не только задача сетевых администраторов, но и один из основных навыков, которыми должны обладать разработчики. Зачем? Потому что иногда другие коллеги занимаются ресурсоемкими делами, например компиляцией больших программ, что может привести к очень медленной работе сервера, что повлияет на нашу нормальную работу. В это время мы можем использовать метод, описанный в этой статье, чтобы узнать этого коллегу, жестоко избить его, а затем восстановить нормальное использование сервера.
кто я?
"Кто я? Откуда я? Куда я иду?" Три главных вопроса у классиков философии. Точно так же и на работе мы иногда часто переключаемся между учетными записями, а иногда забываем, на какого пользователя переключиться. В это время вам нужно знать, кто в данный момент находится в системе. мы можем использоватьwhoami
смотреть.
[alvin@VM_0_16_centos ~]$ whoami
alvin
Кто в настоящее время зарегистрирован в системе?
Обычно в компании всего несколько серверов, и программисты обычно работают на этих серверах. мы можем использоватьwho
команда, чтобы увидеть, какие пользователи в настоящее время вошли на сервер.
[alvin@VM_0_16_centos ~]$ who
alvin pts/0 2018-12-09 07:25 (116.199.***.***)
root pts/1 2018-12-09 11:05 (116.199.***.***)
alvin pts/2 2018-12-09 11:05 (116.199.***.***)
harry pts/3 2018-12-09 11:06 (116.199.***.***)
kate pts/4 2018-12-09 11:08 (116.199.***.***)
alvin pts/5 2018-12-09 11:53 (116.199.***.***)
В отображаемых результатах первый столбец — это имя пользователя, второй столбец — подключенный терминал, tty — дисплей, pts — удаленное подключение, третий столбец — время входа в систему.
Здесь немного больше информации, но что, если мы просто хотим знать, кто в сети? просто используйтеusers
команду для просмотра.
[alvin@VM_0_16_centos ~]$ users
alvin alvin alvin harry kate root
Что делают люди, которые входят в систему?
Зная, кто вошел в систему, мы можем дополнительно исследовать, что они делают.w
Команда используется для отображения имен пользователей, вошедших в систему, и того, что они делают. Информация, используемая этой командой, поступает из файла /var/run/utmp.
[alvin@VM_0_16_centos ~]$ w
16:25:54 up 29 days, 6:05, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
alvin pts/0 116.199.***.** 07:25 2.00s 0.11s 0.00s w
root pts/1 116.199.***.** 11:05 5:20m 0.02s 0.02s -bash
alvin pts/2 116.199.***.** 11:05 5:20m 0.04s 0.05s sshd: alvin [priv]
harry pts/3 116.199.***.** 11:06 4:33m 18.08s 18.06s watch date
kate pts/4 116.199.***.** 11:08 4:33m 10.51s 10.48s top
alvin pts/5 116.199.***.** 11:53 4:32m 0.02s 0.02s -bash
Первая строка на самом деле такая же, какuptime
Результат команды тот же, но выражен в следующем порядке: текущее время, время работы системы, текущее количество зарегистрированных пользователей в системе и средняя нагрузка.
Начиная со второй строки формируется таблица, всего 8 столбцов, которые соответственно отображают, чем занимается каждый пользователь и какие системные ресурсы он занимает.
USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。
TTY:用户登陆所用的终端。
FROM:显示用户在何处登陆系统。
LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。
IDLE:用户空闲时间,从用户上一次任务结束后,开始记时。
JCPU:一终端代号来区分,表示在某段时间内,所有与该终端相关的进程任务所耗费的CPU时间。
PCPU:指WHAT域的任务执行后耗费的CPU时间。
WHAT:表示当前执行的任务
Если мы хотим видеть только текущее поведение пользователя, мы можем напрямуюw
Далее следует это имя пользователя:
[alvin@VM_0_16_centos ~]$ w alvin
16:34:21 up 29 days, 6:14, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
alvin pts/0 116.199.***.** 07:25 5.00s 0.12s 0.06s sshd: alvin [priv]
alvin pts/2 116.199.***.** 11:05 5:28m 0.04s 0.05s sshd: alvin [priv]
alvin pts/5 116.199.***.** 11:53 4:40m 0.02s 0.02s -bash
Как узнать информацию о пользователях, которые входили в систему в настоящее время и в прошлом?
Некоторые люди хитры и отказываются признаваться в совершении плохих поступков. Однако в Linux информация для входа в систему каждого пользователя записывается, так что ответственность за поиск соответствующего лица основывается.
Последнюю команду можно использовать для отображения истории входа конкретного пользователя в систему. Если параметр не указан, отображается информация об истории всех пользователей. По умолчанию информация (отображаемая информация) будет поступать из файла /var/log/wtmp. Вывод этой команды содержит следующие столбцы информации:
-
имя пользователя
-
номер телетайпа
-
Дата и время входа в историю
-
дата и время выхода
-
общее рабочее время
[alvin@VM_0_16_centos ~]$ last alvin pts/5 116.199.. Sun Dec 9 11:53 still logged in kate pts/4 116.199.. Sun Dec 9 11:08 still logged in harry pts/3 116.199.. Sun Dec 9 11:06 still logged in alvin pts/2 116.199.. Sun Dec 9 11:05 still logged in root pts/1 116.199.. Sun Dec 9 11:05 still logged in alvin pts/0 116.199.. Sun Dec 9 07:25 still logged in alvin pts/0 116.199.. Sat Dec 8 20:42 - 23:10 (02:28) alvin pts/0 119.33.. Mon Dec 3 20:50 - 23:51 (1+03:01) alvin pts/0 119.33.. Thu Nov 29 20:20 - 22:45 (02:24) alvin pts/0 223.104.. Thu Nov 29 06:46 - 07:00 (00:14) alvin pts/0 223.104.. Wed Nov 28 20:45 - 22:27 (01:42) alvin pts/1 14.25..* Sun Nov 25 19:50 - 21:09 (01:18) alvin pts/0 119.33.*. Sun Nov 25 16:32 - 21:40 (05:07)
Если мы хотим увидеть только историю человека, просто следуйте соответствующему имени пользователя после последнего:
[alvin@VM_0_16_centos ~]$ last alvin
alvin pts/5 116.199.***.** Sun Dec 9 11:53 still logged in
alvin pts/2 116.199.***.** Sun Dec 9 11:05 still logged in
alvin pts/0 116.199.***.** Sun Dec 9 07:25 still logged in
alvin pts/0 116.199.***.** Sat Dec 8 20:42 - 23:10 (02:28)
alvin pts/0 119.33.***.** Mon Dec 3 20:50 - 23:51 (1+03:01)
alvin pts/0 119.33.***.** Thu Nov 29 20:20 - 22:45 (02:24)
alvin pts/0 223.104.***.** Thu Nov 29 06:46 - 07:00 (00:14)
alvin pts/0 223.104.***.** Wed Nov 28 20:45 - 22:27 (01:42)
пнуть плохого парня
С помощью приведенных выше команд мы можем примерно узнать поведение некоторых пользователей. Если мы хотим пнуть преступника, мы можем использоватьpkill -u
Заказ.
pkill -u alvin
Но эта команда довольно опасна и может привести к перезагрузке системы, поэтому использовать эту команду не рекомендуется. Безопаснее использоватьpkill
Заказ.
[alvin@VM_0_16_centos ~]$ sudo pkill -kill -t pts/3
#harry用户已经被踢除了
[alvin@VM_0_16_centos ~]$ w
17:04:37 up 29 days, 6:44, 5 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
alvin pts/0 116.199.102.65 07:25 5.00s 0.12s 0.00s w
root pts/1 116.199.102.65 11:05 5:59m 0.02s 0.02s -bash
alvin pts/2 116.199.102.65 11:05 5:59m 0.04s 0.05s sshd: alvin [priv]
kate pts/4 116.199.102.65 11:08 5:12m 11.94s 11.91s top
alvin pts/5 116.199.102.65 11:53 5:10m 0.02s 0.02s -bash