почему btmp не показывает имя пользователя вошедших в систему пользователей?

Я пытаюсь сравнить вывод файла 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?

Спасибо.

0
21.03.2016, 12:03
2 ответа

Это потому, что 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
    
1
28.01.2020, 02:35

Файл / 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 марта).

Дополнительная литература:

1
28.01.2020, 02:35

Теги

Похожие вопросы