Linux 시스템에서 wtmp와 /var/run/utmp를 동기화하는 방법은 무엇입니까?

Linux 시스템에서 wtmp와 /var/run/utmp를 동기화하는 방법은 무엇입니까?

Linux 시스템은 일반적으로 현재 사용자 로그인 정보를 에 저장 /var/run/utmp하고 기록 정보를 /var/log/wtmp.

그렇다면 그들은 어떻게 그들 사이의 정보를 동기화합니까?

  1. 로그인이 발생하면 두 파일에 모두 쓰나요, 아니면 나중에 병합하나요?
  2. /var/run/utmp가 지속되어야 하고 시스템이 종료되거나 재부팅될 때 손실되어서는 안 되나요?

답변1

301행 libmisc/utmp.c(패키지 소스에 있는 Debian의 경우 ) 에는 다음 내용이 주석 처리되어 있습니다 .loginsetutmp()

/*
 * setutmp - Update an entry in utmp and log an entry in wtmp
 *
 *      Return 1 on failure and 0 on success.
 */

실제로 /var/run/utmp먼저 업데이트한 다음 호출을 통해 즉시 로그에 기록합니다 updwtmp()(또는 PAM을 사용하는 경우 PAM이 로그에 기록합니다). 두 경우 모두 정보가 명시적으로 작성되고 동기화되지 않으므로 포인트 2는 관련이 없습니다.

데비안 시스템에서 찾으세요. 먼저 누가 (커널, login명령)을 쓸 수 있는지 추측해 보세요. 커널의 검색 utmp과 문자열은 wtmp많은 정보를 제공하지 않습니다. 따라서 dpkg -S $(which login)패키지 이름의 출처를 찾으 login려면 Google을 사용하십시오 debian login package. 이렇게 하면 이러한 소스를 작성하는 코드로 연결됩니다 shadow*.tar.gz.utmpwtmp

관련 정보