Как найти последних вошедших в систему пользователей в Linux
В этом руководстве мы увидим, как найти последних вошедших в систему пользователей в Linux с помощью last
, lastb
и lastlog
. команды с примерами.
Введение
Как системный администратор Linux вы должны регулярно проверять дату и время входа пользователей на ваш сервер Linux. Он дает вам некоторую полезную информацию, например, сколько пользователей активны, сколько пользователей неактивны, когда они входят в систему и как долго и т. д.
Если некоторые учетные записи пользователей не использовались в течение длительного времени, вы можете просто заблокировать их, если они больше не нужны. Вы также можете использовать даты последнего входа в систему при аудите серверов Linux и выяснить, какой пользователь мог вызвать проблему.
К счастью, операционная система GNU/Linux включает тройные команды, а именно: last
, lastb
и lastlog
для отображения дат входа последних пользователей. .
1. Отобразить список последних вошедших в систему пользователей в Linux с помощью последней команды.
Как следует из названия, команда last
используется для просмотра последних вошедших в систему пользователей в Linux и Unix-подобных системах. Он считывает файл /var/log/wtmp
и находит всех вошедших в систему и вышедших из системы пользователей с момента создания этого файла. Вы также можете перечислить даты недавнего входа в систему конкретного пользователя и даже найти кто перезагрузил систему Linux с помощью команды last
.
Обратите внимание, что ваша система записывает информацию только в файл wtmp
. Если этот файл по какой-либо причине недоступен, просто создайте его с помощью команды touch
, как показано ниже:
sudo touch /var/log/wtmp
Теперь давайте узнаем дату и время недавнего входа в систему с помощью команды last
.
Чтобы просмотреть последние входы в систему, их продолжительность и другую информацию в вашей системе Linux, просто запустите:
last
Пример вывода:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in
ostechni tty1 Thu Jan 7 08:29 still logged in
reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running
reboot system boot 5.4.0-48-generic Fri Nov 20 10:13 - 11:44 (01:31)
.
.
.
reboot system boot 5.4.0-33-generic Wed Jul 8 08:49 - 11:41 (02:52)
ostechni web console Mon Jul 6 08:19 - 08:20 (00:00)
ostechni pts/2 192.168.225.37 Mon Jul 6 08:14 - 08:30 (00:15)
ostechni pts/0 192.168.225.37 Mon Jul 6 07:41 - 12:27 (04:45)
reboot system boot 5.4.0-33-generic Mon Jul 6 07:21 - 12:27 (05:06)
ostechni pts/3 192.168.225.37 Sat Jul 4 12:01 - 12:12 (00:10)
ostechni pts/2 192.168.225.37 Sat Jul 4 11:14 - 13:01 (01:46)
ostechni pts/0 192.168.225.37 Sat Jul 4 07:55 - 13:01 (05:05)
reboot system boot 5.4.0-33-generic Sat Jul 4 07:53 - 13:03 (05:09)
ostechni tty1 Fri May 29 10:07 - down (00:00)
reboot system boot 5.4.0-33-generic Fri May 29 10:06 - 10:07 (00:01)
ostechni pts/0 192.168.225.37 Fri May 29 09:36 - 10:06 (00:29)
ostechni tty1 Fri May 29 09:36 - down (00:29)
reboot system boot 5.4.0-31-generic Fri May 29 09:35 - 10:06 (00:30)
ostechni tty1 Sun May 24 13:17 - down (00:02)
reboot system boot 5.4.0-31-generic Sun May 24 13:16 - 13:20 (00:03)
wtmp begins Sun May 24 13:16:52 2020
Список последних вошедших в систему пользователей Linux с помощью последней команды
Как вы видите в приведенном выше выводе, последняя команда показывает следующие сведения о недавних входах в систему:
- Имя пользователя. Если какой-либо пользователь все еще вошел в систему, он также отобразит эту информацию.
- Тип терминального устройства (например, tty или pts), на котором состоялся сеанс.
- Исходный IP-адрес или имя хоста, с которого пользователь вошел в систему.
- Дата и время входа в систему (т. е. время начала и окончания сеанса входа в систему).
- Общая продолжительность сеанса.
- Последняя строка указывает дату и время самого раннего записанного сеанса в файле журнала
wtmp
.
В приведенном выше выводе вы могли заметить, что есть запись для входа в систему специального пользователя с именем reboot
. Команда last
сохраняет записи этого пользователя каждый раз при загрузке компьютера.
Когда мы запускаем команду last
без каких-либо параметров, она отображает весь вывод журнала. Он имеет множество опций для фильтрации, форматирования и ограничения вывода по вашему вкусу. Я включил примеры для наиболее распространенных вариантов.
1.1. Ограничить вывод конкретным пользователем
Как уже говорилось, команда last
выводит список всех последних входов в систему, записанных в файле wtmp
. Если вы хотите отобразить последние входы определенного пользователя (т. е. просмотреть все входы определенного пользователя), например ostechnix, команда будет такой:
last ostechnix
Пример вывода:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in
ostechni tty1 Thu Jan 7 08:29 still logged in
ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28)
[...]
Отобразить недавние входы в систему конкретного пользователя с помощью последней команды
Вы также можете указать несколько имен пользователей через запятую, как показано ниже:
last ostechnix sk
1.2. Ограничить вывод определенным tty или точками
Команда last
сохраняет запись типа терминального устройства (например, tty или pts), на котором состоялся сеанс.
Скажем, например, что пользователи могли войти на компьютер с Linux либо локально, либо через ssh. Если вы хотите ограничить вывод определенным tty
, просто запустите:
last tty1
Пример вывода:
ostechni tty1 Thu Jan 7 08:29 still logged in
ostechni tty1 Wed Jan 6 11:00 - down (02:31)
ostechni tty1 Fri Nov 20 11:52 - down (00:38)
[...]
Имена tty можно сокращать. Например, вы можете запустить last 1
вместо last tty1
.
Аналогично, чтобы получить список только входов в сеансы pts
, выполните:
$ last pts/0
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in
ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28)
sk pts/0 192.168.225.37 Wed Jan 6 11:02 - 11:02 (00:00)
[...]
Вы также можете указать несколько имен пользователей с помощью tty, как показано ниже:
last ostechnix sk pts/0 tty1
1.3. Ограничить вывод определенным количеством строк
Файл журнала wtmp
может содержать большое количество записей. Если вы хотите ограничить вывод команды last
определенным количеством строк, используйте флаг -n
, как показано ниже:
last -n 5
Или,
last -5
Приведенная выше команда отобразит только 5 строк вывода:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in
ostechni tty1 Thu Jan 7 08:29 still logged in
reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running
ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28)
sk pts/0 192.168.225.37 Wed Jan 6 11:02 - 11:02 (00:00)
wtmp begins Sun May 24 13:16:52 2020
1.4. Показывать имя хоста вместо IP-адреса
По умолчанию команда last
показывает исходный IP-адрес, с которого пользователь выполнил вход. Если вы хотите отображать имя хоста вместо IP-адреса, используйте опцию -d
(или --dns
):
last -d -5
Вы также можете отображать полные имена пользователей и имена доменов в выводе с помощью опции -w
(или --fullnames
).
1,5. Скрыть имя хоста и IP-адрес
Чтобы скрыть поле имени хоста или IP, используйте опцию -R
.
last -5 -R
Пример вывода:
ostechni pts/0 Thu Jan 7 08:30 still logged in
ostechni tty1 Thu Jan 7 08:29 still logged in
reboot system boot Thu Jan 7 08:20 still running
ostechni pts/0 Wed Jan 6 11:02 - 13:31 (02:28)
sk pts/0 Wed Jan 6 11:02 - 11:02 (00:00)
wtmp begins Sun May 24 13:16:52 2020
1.6. Показывать записи входа пользователей в определенное время
Опция -p
(или --present
) используется для определения того, кто вошел в систему в настоящее время или в указанное время.
Например, запустите следующую команду, чтобы просмотреть список последних вошедших в систему пользователей сегодня в 8:30:
last -p 08:30
Пример вывода:
ostechni tty1 Thu Jan 7 08:29 still logged in
reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running
wtmp begins Sun May 24 13:16:52 2020
Чтобы просмотреть список тех, кто в данный момент находится в системе (т. е. во время выполнения этой команды), запустите:
last -p now
Найти вошедших в систему пользователей в определенное время
1.7. Отображение вошедших в систему пользователей в течение определенного интервала времени
Команда last
имеет две опции, а именно -s
(--since
) и -t
(- -until
) для отображения вошедших в систему пользователей в течение определенного периода времени. Опция -s
используется для отображения состояния входов в систему с указанного времени, а опция -t
используется для отображения состояния входов в систему до указанного времени.
Например, если вы хотите отобразить последние входы в систему, произошедшие с 2021-01-07
по 2021-01-11
, введите следующую команду:
last -s 2021-01-07 -t 2021-01-11
Пример вывода:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 - 13:16 (04:46)
ostechni tty1 Thu Jan 7 08:29 - down (04:47)
reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 - 13:16 (04:56)
wtmp begins Sun May 24 13:16:52 2020
Чтобы просмотреть последние входы в систему с вчера по сегодня, выполните:
last -s yesterday -t today
Если вы хотите вывести список записей входа только с 7 января 2021 г. по настоящее время, выполните:
$ last -s 2021-01-07
ostechni pts/0 192.168.225.37 Mon Jan 11 06:39 still logged in
reboot system boot 5.4.0-59-generic Mon Jan 11 06:37 still running
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 - 13:16 (04:46)
ostechni tty1 Thu Jan 7 08:29 - down (04:47)
reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 - 13:16 (04:56)
wtmp begins Sun May 24 13:16:52 2020
1.8. Отображение последних вошедших в систему пользователей с полной датой и временем.
Параметр -F
(--fulltimes
) используется для отображения полной даты и времени входа и выхода из системы в выходных данных команды last
.
last -5 -F
Пример вывода:
ostechni pts/0 192.168.225.37 Mon Jan 11 06:39:29 2021 still logged in
[...]
1.9. Отображать имя хоста в последнем столбце
Параметр -a
(--hostlast
) используется для отображения последнего столбца имени хоста во избежание усечения.
$ last -d -a
ostechni pts/0 Mon Jan 11 06:39 still logged in ostechnix
[...]
1.10. Просмотр записей последнего входа псевдопользователя «перезагрузка»
Как я упоминал ранее, последняя команда ведет учет специальных псевдопользователей с именами «перезагрузка» и «выключение».
Чтобы просмотреть данные последнего входа в систему для пользователей «перезагрузки» и «выключения», используйте следующие команды:
last reboot
last shutdown
2. Отображение неудачных попыток входа в систему с помощью Lastb в Linux.
Команда lastb
аналогична команде last
, но она перечисляет только все неудачные попытки входа в систему. Он получает данные о неудачном входе в файл /var/log/btmp
.
Обратите внимание, что ваша система записывает информацию в файл btmp
только в том случае, если он присутствует. Если этот файл по какой-либо причине недоступен, просто создайте его с помощью команды touch
, как показано ниже:
sudo touch /var/log/btmp
Теперь мы можем отобразить неудачные попытки входа в систему с помощью команды Lastb, как показано ниже:
sudo lastb
Пример вывода:
UNKNOWN tty1 Mon Jan 11 07:51 - 07:51 (00:00)
sk tty1 Mon Jan 11 07:51 - 07:51 (00:00)
UNKNOWN tty1 Mon Jan 11 07:51 - 07:51 (00:00)
sk tty1 Mon Jan 11 07:51 - 07:51 (00:00)
ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00)
ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00)
ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00)
UNKNOWN tty1 Wed Jan 6 10:59 - 10:59 (00:00)
btmp begins Wed Jan 6 10:59:57 2021
Отображать неудачные попытки входа в систему с помощью команды Lastb в Linux
В приведенных выше командах перечислены все неудачные попытки входа в систему всех пользователей системы Linux. Он также показывает неудачные попытки входа в систему через SSH.
3. Найдите последних вошедших в систему пользователей в Linux с помощью команды Lastlog.
Команда lastlog показывает последний вход в систему всех пользователей или конкретного пользователя в Linux и Unix-подобных операционных системах. Он извлекает список последних вошедших в систему пользователей из файла /var/log/lastlog
и отображает результат в стандартном выводе.
Чтобы отобразить последний вход всех пользователей, запустите:
lastlog
Пример вывода:
Username Port From Latest
root **Never logged in**
daemon **Never logged in**
bin **Never logged in**
[...]
systemd-coredump **Never logged in**
ostechnix tty1 Mon Jan 11 07:51:46 +0000 2021
lxd **Never logged in**
dnsmasq **Never logged in**
libvirt-qemu **Never logged in**
libvirt-dnsmasq **Never logged in**
cockpit-ws **Never logged in**
cockpit-wsinstance **Never logged in**
libvirtdbus **Never logged in**
_flatpak **Never logged in**
sk pts/0 192.168.225.37 Wed Jan 6 11:02:17 +0000 2021
root **Never logged in**
nobody **Never logged in**
Найдите последних вошедших в систему пользователей в Linux с помощью команды Lastlog
Как вы видите в приведенном выше выводе, команда lastlog
отображает записи последнего входа в систему системных учетных записей пользователей, а также других учетных записей служб, таких как bin
, daemon
, sys
, mail
, никто
и т. д.
Команда lastlog
выводит имя пользователя, порт, исходный IP-адрес, с которого пользователь вошел в систему, а также дату и время последнего входа. Если пользователь никогда не входил в систему, вместо порта и времени в выходных данных будет напечатано сообщение ** Никогда не входил в систему**
.
Вам может быть интересно, почему многие сервисные учетные записи никогда не входили в систему. Это связано с тем, что оболочки входа для этих учетных записей имеют значение /sbin/nologin
. Это обычная практика безопасности, используемая для ограничения прямого доступа к оболочке.
3.1. Отображение данных о последнем входе в систему конкретного пользователя
Если вы хотите отобразить последнюю запись журнала определенного пользователя, например ostechnix, команда будет такой:
lastlog -u ostechnix
Пример вывода:
Username Port From Latest
ostechnix tty1 Mon Jan 11 07:51:46 +0000 2021
3.2. Отображать записи последнего входа в систему до или позднее X дней.
Команда lastlog
может отображать последние записи входа в систему до или после X дней.
Например, вы можете получить последние записи входа всех пользователей ранее, чем за 5 дней, используя флаг -b
, как показано ниже:
lastlog -b 5
Аналогичным образом, чтобы отобразить записи входа более поздние, чем 5 дней, используйте флаг -t
:
lastlog -t 5
3.3. Удалите или очистите информацию о последнем входе в систему с помощью Lastlog в Linux.
Если вам не нужна последняя запись журнала пользователя, просто очистите их, используя флаг -C
(--clear
):
sudo lastlog -u ostechnix -C
Чтобы проверить, очищена ли запись журнала, запустите:
lastlog -u ostechnix
Username Port From Latest
ostechnix **Never logged in**
Получать помощь
Для получения более подробной информации обратитесь к разделу справки соответствующей команды.
last --help
lastb --help
lastlog --help
Или просмотрите man-страницы каждой команды:
man last
man lastb
man lastlog
Заключение
Команды last
, lastb
и lastlog
помогают обнаружить подозрительные действия пользователя в системе Linux. Выяснение того, кто недавно входил в систему (или выходил из нее) на сервере Linux, когда они входили в систему и как долго — это важные детали, которые определенно помогут вам при устранении неполадок.
Связанное чтение:
- Как найти вошедших в систему пользователей в Linux
- Как составить список всех пользователей в Linux
- Как отслеживать активность пользователей в Linux
- Как ограничить доступ пользователя к системе Linux