2

Я хочу найти программно из файла журнала, что пользователь входит в систему на компьютере Debian. Я также хочу видеть, кто входит в систему и что когда-либо регистрировалось в файл в это время. Как выполнить эту задачу на машине Debian версии 4.1 или 5?

Если информация отсутствует в каком-либо файле, существует ли другой способ перехвата этих событий и получения сведений о событии программным способом?

4 ответа4

1

last команда - это подход командной строки. Увидеть man last для вариантов.

Он ищет в /var/log/wtmp для входа.

Вы можете сделать это программно.

0

Файл /var/run/utmp содержит информацию о том, кто вошел в систему, какие tty они используют, как долго они простаивают и многое другое. Просмотр этого файла (для этого есть C API (/usr/include/utmp.h)).

Кроме того, /var/log/wtmp (если я правильно понимаю справочные страницы)- это список пользователей, которые вошли в систему.

0

Посмотрите в /var/log/auth.log события сеанса аутентификации, которые там записываются. Вам нужны права суперпользователя для доступа к этому файлу.

0

В Linux нет единого события входа в систему - каждая программа может реализовать его по-своему. Наиболее близким является PAM ... для приложений, которые используют PAM. Большинство из них делают, но, например, SSH вызывает pam_authenticate(), только если вы входите в систему с использованием пароля, но не когда используются открытые ключи или Kerberos, хотя pam_open_session() всегда вызывается.

Если вам нужно только регистрировать интерактивные сеансы (SSH, консоль), посмотрите /var/log/wtmp (используя inotify). См. Справочную страницу wtmp для описания точной структуры.

Для почты, [S] FTP и других протоколов вам придется использовать /var/log/auth.log , который, к сожалению, не имеет согласованного формата.

  • Три разных примера из auth.log:

    • SSH с паролем - в списке указаны «sshd:auth» и «sshd: session»

      SSHD [24870]: pam_krb5(SSHD: авт): пользователь аутентифицирован как grawity grawity @ REALM
      sshd [24870]: принят пароль для бесплатной передачи из :: 1 порта 57063 ssh2
      sshd [24870]: pam_unix(sshd: session): сессия открыта для пользователя (uid = 0)

    • IMAP - «mail:auth», но не «mail: session»

      аутентификации [0 ожидания, 0 passdb, 0 userdb]: pam_krb5(почта: авторизация): пользователь grawity проверку подлинности как grawity @ REALM

    • SSH с открытым ключом - только «sshd: session», но не «sshd:auth»

      sshd [24985]: Принят публичный ключ для гравитации от :: 1 порта 51606 ssh2
      sshd [24985]: pam_unix(sshd: session): сессия открыта для пользователя (uid = 0)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .