
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は関係ありません。
Debianシステムで見つけてください。まず、誰が(カーネル、login
コマンド)を書くことができるかを推測してください。カーネルの検索utmp
と文字列はwtmp
多くの情報を提供しません。したがって、dpkg -S $(which login)
パッケージ名のソースを見つけるlogin
にはGoogleを使用してくださいdebian login package
。これにより、これらのソースを作成するコードにリンクされますshadow*.tar.gz
。utmp
wtmp