Почему мой Linux не отображает дату последнего входа в систему?

Using nc (netcat).

Сервер:

$ nc -l localhost 3000

Клиент:

$ nc localhost 3000

И сервер, и клиент будут читать и писать на стандартный вывод/ввод.

Это будет работать, если сервер и клиент находятся на одной машине. В противном случае измените localhost на внешнее имя сервера.

Немного интереснее "сервер", который сообщает вам время суток, если вы подключитесь к нему и отправите d, и который выходит из системы, если вы отправите q:

Сервер (в bash):

#!/bin/bash

coproc nc -l localhost 3000

while read -r cmd; do
  case $cmd in
    d) date ;;
    q) break ;;
    *) echo 'What?'
  esac
done <&"${COPROC[0]}" >&"${COPROC[1]}"

kill "$COPROC_PID"

Клиентская сессия:

$ nc localhost 3000
d
Thu Jan 12 18:04:21 CET 2017
Hello?
What?
q

(сервер выходит после q, но клиент не обнаруживает, что он вышел, пока вы не нажмете Enter).

1
02.03.2017, 13:07
2 ответа

Последний журнал печатается PAM с использованием модуля pam_lastlog . Если его нет в вашем стеке PAM в /etc/pam.d/sshd (или в других включенных оттуда файлах), вы можете добавить такие строки, как:

session     [default=1]   pam_lastlog.so nowtmp silent
session     optional      pam_lastlog.so silent noupdate showfailed

(взято из моего /etc/pam.d/postlogin в Fedora 25)

2
20.08.2021, 11:44

Убедитесь, что вы перезапустили sshd после добавления этой строки. Если он все еще не работает, попробуйте закомментировать строку и перезапустить sshd, потому что печать даты последнего входа в систему является поведением по умолчанию без этой строки. И на всякий случай, проверьте, что вы редактируете sshd_config, а не ssh_config случайно.

0
20.08.2021, 11:44

Теги

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