Linux 시스템은 일반적으로 현재 사용자 로그인 정보를 에 저장 /var/run/utmp
하고 기록 정보를 /var/log/wtmp
.
그렇다면 그들은 어떻게 그들 사이의 정보를 동기화합니까?
- 로그인이 발생하면 두 파일에 모두 쓰나요, 아니면 나중에 병합하나요?
- /var/run/utmp가 지속되어야 하고 시스템이 종료되거나 재부팅될 때 손실되어서는 안 되나요?
답변1
301행 libmisc/utmp.c
(패키지 소스에 있는 Debian의 경우 ) 에는 다음 내용이 주석 처리되어 있습니다 .login
setutmp()
/*
* 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
.utmp
wtmp