Я пытаюсь сравнить вывод файла btmp
и who -a
команд.
Я не знаю почему, но btmp файл
в настоящее время не показывает имя пользователя, а показывает UNKNOWN
в поле имени пользователя. Я (имя пользователя:debian) вошел в эту сессию.
Пожалуйста, посмотрите результаты ниже:
virt00# who -a
system boot 2016-03-06 19:36
run-level 5 2016-03-06 19:36
debian - tty1 2016-03-06 19:36 00:33 1006
debian + pts/0 2016-03-06 19:43 . 1037 (192.168.56.1)
virt00# last -f /var/log/btmp | grep still
UNKNOWN tty1 Sat Feb 20 16:24 still logged in
virt00#
Не могли бы вы объяснить, почему есть разница между этими двумя сеансами и почему я вошел через SSH и есть еще один сеанс, запущенный на VM?
Спасибо.
Это потому, что who -a
никогда не читает /var/log/btmp
, who
читает /var/run/utmp
и показывает текущего вошедшего пользователя (пользователей).
С другой стороны, /var/log/btmp
хранит неудачные попытки входа.
Я воспроизвел ситуацию, сделав следующее:
Зашел на tty5
(может быть любой tty
)
Ввел пользователя, которого не существует в системе
Ввел случайный пароль
Запрос на вход снова показывает неправильный пароль
Но в /var/log/btmp
есть запись
UNKNOWN tty5 Mon Mar 21 16:16 still logged in
Через некоторое время это стало:
UNKNOWN tty5 Mon Mar 21 16:16 gone - no logout
Файл / var / log / btmp
отслеживает неудачных попыток входа в систему. Если все вошли в систему без проблем, показывать нечего.
При тестировании этой функции я могу видеть только сообщение «UNKNOWN» в журнале (в Debian 7) с использованием telnet (не ssh), и если я укажу неизвестное имя пользователя в командной строке, что приведет к сбою. Это похоже на сценарий, показанный в потоке Ubuntu sshd не добавляет в / var / log / btmp . Подключение с помощью ssh никогда не приводит к сбоям на этой машине.
Быстрое чтение исходного кода не показывает нигде, что last
сам по себе предоставит UNKNOWN
. Вероятно, это из приложения, которое создало запись в / var / log / btmp
.
В вашей конфигурации могло показаться, что процесс входа в систему не смог получить фактическое имя пользователя и зарегистрировал , что проблема в / var / log / btmp
. Как и utmp
, в btmp
могут быть устаревшие записи, которые не удаляются (предполагается, что программа, которая создает записи, удаляет их - это , а не выполняется автоматически). В вашем примере показана запись месячной давности (20 февраля), и (поскольку вы вошли в систему как известный пользователь на том же tty) не связана с вашим текущим входом в систему - и находится с до времени, когда машинка была загружена совсем недавно (3 марта).
Дополнительная литература: