Эта команда позволяет вытащить из журнала /var/run/utmp список всех пользователей, которые сейчас зарегистрированы в системе.
В журнале /var/run/utmp информация хранится временно, только на момент присутствия пользователя. Когда он выходит из системы, соответствующая запись удаляется. После этого выяснить, кто и когда работал, можно только по журналу /var/log/wtmp. Это также бинарный файл, поэтому его содержимое можно увидеть с помощью специализированных
программ.
last
Команда позволяет выяснить, когда и сколько времени определенный пользователь находился в системе. В качестве параметра передается интересующее имя. Например, следующая директива отображает время входа и продолжительность нахождения в системе пользователя robert:
last robert
Выполнив команду, вы увидите на экране примерно следующий список:
robert tty1 Thu Dec 2 12:17 - 12:50 (00:33)
По этой записи можно понять, что robert находился за терминалом (
tty1
), зашел в систему 2 декабря на 33 минуты (с 12:17 до 12:50). Если пользователь работал не локально, а через сеть, то будет отображена информация о хосте, с которого входили в систему.
Если выполнить эту команду для себя, то может вывалиться такой список, что читать его будет невозможно, потому что вы достаточно часто работаете в системе. Чтобы ограничить выводимые данные, можно указать ключ
– n
и количество отображаемых строк. Например, следующая команда выдаст информацию о последних пяти входах:
last -n 5 robert
lastlog
Если выполнить команду
lastlog
, то она выведет на экран перечень всех пользователей с датами их последнего подключения к системе. Пример списка можно увидеть в листинге 12.1.
Листинг 12.1. Результат выполнения команды
lastlog
Username Port From Latest
root ftpd2022 192.168.77.10 Mon Feb 21 12:05:06 +0300 2005
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
news **Never logged in**
uucp **Never logged in**
operator **Never logged in**
games **Never logged in**
gopher **Never logged in**
ftp **Never logged in**
nobody **Never logged in**
vcsa **Never logged in**
mailnull **Never logged in**
rpm **Never logged in**
xfs **Never logged in**
apache **Never logged in**
ntp **Never logged in**
rpc **Never logged in**
gdm **Never logged in**
rpcuser **Never logged in**
nscd **Never logged in**
ident **Never logged in**
radvd **Never logged in**
squid **Never logged in**
mysql **Never logged in**
flenov ftpd2022 192.168.77.10 Mon Feb 21 12:05:06 +0300 2005
named **Never logged in**
robert tty1 Mon Feb 21 12:10:47 +0300 2005
Список
состоит из четырех колонок:
□ имя пользователя из файла /etc/passwd;
□ порт или терминал, на который происходило подключение;
□ адрес компьютера, если вход был по сети;
□ время входа.
С помощью
lastlog
удобно контролировать системные записи. У них дата последнего входа должна быть
**Never logged in**
, потому что под ними нельзя войти в систему (в качестве командной оболочки установлены /bin/false, /dev/null, /sbin/nologin и др.). Если вы заметили, что кто-либо проник в систему через одну из этих учетных записей, то это значит, что хакер использует ее, изменив настройки.
Простая замена командной оболочки в файле /etc/passwd может открыть хакеру потайную дверь, и администратор не заметит этой трансформации. Но после выполнения команды
lastlog
все неявное становится явным.
Обращайте внимание на тип подключения и адрес. Если что-то вызывает подозрение, то можно выявить атаку на этапе ее созревания.
lsof
С помощью этой команды можно определить, какие файлы и какими пользователями открыты в данный момент. Результат выполнения директивы приведен в листинге 12.2.