Как использовать последнюю команду в Linux

Кто, когда и откуда? Хорошие практики безопасности говорят, что вы должны знать, кто имеет доступ к вашему компьютеру Linux. Мы покажем вам, как это сделать.

Файл wtmp

Linux и другие Unix-подобные операционные системы, такие как MacOS, очень хорошо ведут журнал. Где-то в недрах системы есть журнал практически всего, о чем вы можете подумать. Интересующий нас файл журнала называется wtmp. «W» может означать «когда» или «кто» — похоже, никто не согласен. Часть «tmp», вероятно, означает «временный», но также может означать «отметку времени».

Что мы действительно знаем, так это то, что wtmp — это журнал, который фиксирует и записывает каждое событие входа и выхода. Просмотр данных в журнале wtmp — это основной шаг на пути к обеспечению безопасности при выполнении ваших обязанностей системного администратора. Для типичного семейного компьютера это может быть не так критично с точки зрения безопасности, но интересно иметь возможность проверить ваше совместное использование компьютера.

В отличие от многих текстовых файлов журнала в Linux, wtmp — это двоичный файл. Чтобы получить доступ к данным в нем, нам нужно использовать инструмент, предназначенный для этой задачи.

Этот инструмент — последняя команда.

Последняя команда

Последняя команда считывает данные из журнала wtmp и отображает их в окне терминала.

Если вы наберете последний и нажмете Enter, он отображать все записи из файла журнала.

last

последняя команда в окне терминала

Каждая запись из wtmp отображается в окне терминала.

Слева направо каждая строка содержит:

Имя пользователя вошедшего в систему.
Терминал, в который они вошли. Терминальная запись: 0 означает, что они вошли в систему на самом компьютере Linux.
IP-адрес машины, в которую они вошли.
Дата и время входа в систему.
Продолжительность сеанса.

  Как сделать резервную копию истории терминала Linux

вывод из последнего в окне терминала

Последняя строка сообщает нам дату и время самого раннего сеанса, записанного в журнале.

Запись для фиктивного пользователя «перезагрузка» вносится в журнал каждый раз при загрузке компьютера. Поле терминала заменяется версией ядра. Продолжительность сеанса входа в систему для этих записей представляет время безотказной работы компьютера.

Отображение определенного количества строк

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

Вы можете указать последнему дать вам определенное количество строк вывода. Сделайте это, указав желаемое количество строк в командной строке. Обратите внимание на дефис. Чтобы увидеть пять строк, вам нужно ввести -5, а не 5:

last -5

последний -5 в окне терминала

Это дает первые пять строк из журнала, которые являются самыми последними данными.

первые пять строк из twmp в окне терминала

Отображение сетевых имен для удаленных пользователей

Параметр -d (система доменных имен) сообщает последнему, что нужно попытаться разрешить IP-адреса удаленных пользователей в имени машины или сети.

last -d

последний -d в окне терминала

Последний не всегда может преобразовать IP-адрес в сетевое имя, но команда сделает это, когда сможет.

вывод команды last -d в окне терминала

Скрытие IP-адресов и сетевых имен

Если вас не интересует IP-адрес или сетевое имя, используйте параметр -R (без имени хоста), чтобы подавить это поле.

last -R в окне терминала

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

вывод из last -R в окне терминала

Выбор записей по дате

Вы можете использовать параметр -s (с), чтобы ограничить вывод, чтобы отображались только события входа в систему, которые произошли с определенной даты.

Если вы хотите увидеть только события входа в систему, которые произошли с 26 мая 2019 года, вы должны использовать следующую команду:

last -R -s 2019-05-26

last -R -s 2019-05-26 в окне терминала

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

  Как конвертировать PNG в JPG в Linux

Вывод команды last -R -s 2019-05-26 в окне терминала

Поиск до конечной даты

Вы можете использовать -t (до), чтобы указать дату окончания. Это позволяет вам выбрать набор записей входа в систему, которые имели место между двумя интересующими датами.

last -R -s 2019-05-26 -t 2019-05-27 в окне терминала

Эта команда последней запрашивает получение и отображение записей входа с 00:00 (рассвет) 26-го числа до времени 00:00 (рассвет) 27-го числа. Это сужает список до сеансов входа в систему, которые имели место только 26-го числа.

Вывод команды last -R -s 2019-05-26 -t 2019-05-27 в окне терминала

Форматы времени и даты

Вы можете использовать время, а также дату с параметрами -s и -t.

Различные форматы времени, которые можно использовать с последними параметрами, использующими дату и время (предположительно):

ГГГГММДДччммсс
ГГГГ-ММ-ДД чч: мм: сс
ГГГГ-ММ-ДД чч: мм — секунды установлены на 00
ГГГГ-ММ-ДД — время установлено на 00:00:00
чч: мм: сс — дата установлена ​​сегодня
чч: мм — дата будет установлена ​​на сегодняшний день, секунды на 00
в настоящее время
вчера — время установлено на 00:00:00
сегодня — время установлено на 00:00:00
завтра — время установлено на 00:00:00
+ 5мин
-5 дней

Почему «якобы»?

Второй и третий форматы в списке не работали во время исследования для этой статьи. Эти команды были протестированы в дистрибутивах Ubuntu, Fedora и Manjaro. Это производные от дистрибутивов Debian, RedHat и Arch соответственно. Это охватывает все основные семейства дистрибутивов Linux.

last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00

Вывод последней неудачной команды в окне терминала

Как видите, команда вообще не вернула записей.

Использование первого формата даты и времени из списка с той же датой и временем, что и предыдущая команда, возвращает записи:

last -R -s 20190526110000 -t 20190527130000

last -R -s 20190526110000 -t 20190527130000 в окне терминала

Поиск по относительным единицам

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

last -R -s -2days -t -1days

last -R -s -2days -t -1days в окне терминала

Вчера, сегодня и сейчас

Вы можете использовать вчера и завтра как сокращение для вчерашней даты и сегодняшней даты.

last -R -s yesterday -t today

последний -R -s вчера -t сегодня в окне терминала

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

  Как установить Kodi Media Center в Linux

Вывод из последнего -R -s вчера -t сегодня в окне терминала

Опция «сейчас» — это сокращение от «сегодня в текущее время». Чтобы увидеть события входа в систему, которые произошли с 00:00 (рассвет) до момента, когда вы введете команду, используйте эту команду:

last -R -s today -t now

last -R -s today - t сейчас в окне терминала

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

вывод из последнего -R -s сегодня -t сейчас

Настоящий вариант

Параметр -p (присутствует) позволяет узнать, кто вошел в систему в определенный момент времени.

Не имеет значения, когда они вошли в систему или вышли, но если они вошли в систему в указанное вами время, они будут включены в список.

Если вы указываете время без даты, последний предполагает, что вы имеете в виду «сегодня».

last -R -p 09:30

last -R -p 09:30 в окне терминала

Люди, которые все еще находятся в системе (очевидно), не имеют времени выхода из системы; они описаны как все еще вошедшие в систему. Если компьютер не перезагружался с указанного времени, он будет отображаться как работающий.

Вывод из last -R -p 09:30

Если вы используете сокращение now с параметром -p (present), вы можете узнать, кто вошел в систему во время выполнения команды.

last -R -p now

last -R -p теперь в окне терминала

Это довольно сложный способ добиться того, что можно сделать с помощью команды who.

Вывод команды last -R -p теперь в окне терминала

Команда lastb

Заслуживает упоминания команда lastb. Он читает данные из журнала с именем btmp. По этому названию журнала есть немного больше консенсуса. Буква «b» означает «плохо», но часть «tmp» все еще вызывает споры.

lastb перечисляет неудачные (неудачные) попытки входа в систему. Он принимает те же параметры, что и последний. Поскольку это были неудачные попытки входа в систему, все записи будут иметь продолжительность 00:00.

Вы должны использовать sudo с lastb.

sudo lastb -R

lastb - R в окне терминала

Последнее слово по делу

Зная, кто вошел в ваш компьютер с Linux, когда и откуда можно получить полезную информацию. Сочетание этого с подробностями неудачных попыток входа в систему дает вам первые шаги в расследовании подозрительного поведения.