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は関係ありません。

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

おすすめ記事