総合手引 | セクション 5 | オプション |
#include <sys/types.h>
#include <utmp.h>
#define _PATH_UTMP "/var/run/utmp" #define _PATH_WTMP "/var/log/wtmp" #define _PATH_LASTLOG "/var/log/lastlog"#define UT_NAMESIZE 16 #define UT_LINESIZE 8 #define UT_HOSTSIZE 16
struct lastlog { int32_t ll_time; /* ユーザが何時ログインしたか */ char ll_line[UT_LINESIZE]; /* 端末線名 */ char ll_host[UT_HOSTSIZE]; /* ユーザの出身ホスト */ };
struct utmp { char ut_line[UT_LINESIZE]; /* 端末線名 */ char ut_name[UT_NAMESIZE]; /* ユーザのログイン名 */ char ut_host[UT_HOSTSIZE]; /* ユーザの出身ホスト */ int32_t ut_time; /* ユーザが何時ログインしたか */ };
lastlog ファイルは、 lastlog 構造体の線型配列であり、ユーザの UID でインデックスされています。 utmp ファイルは、 utmp 構造体の線型配列であり、端末線番号 ( ttyslot(3) 参照) でインデックスされています。 wtmp ファイルは、 utmp 構造体から成るバイナリログファイルであり、 ファイルの終端に追記されていきます。
デフォルトでは、ユーザがログインするたびに、 pam_lastlog(8) [英語] プログラムは lastlog ファイル中のユーザの UID を検索します。 もし見つかった場合、ユーザが最後にログインした時刻のタイムスタンプ、 端末線、ホスト名が標準出力に書き出されます。 pam_lastlog(8) [英語] プログラムは、その後 lastlog ファイルに新しいログイン時刻を記録します。
新しい lastlog への記録が書き出された後で、 utmp ファイルがオープンされ、ユーザに対する utmp 記録が挿入されます。 この記録は、ユーザがログアウトして削除される時まで保持されます。 utmp ファイルは、 rwho(1), users(1), w(1), who(1) プログラムで使われます。
次に、 pam_lastlog(8) [英語] プログラムは wtmp ファイルをオープンし、ユーザの utmp 記録を追加します。 その後ユーザが端末線からログアウトすると、特別な utmp レコードが記録されます。 すなわち ut_line が適切に設定され、 ut_time が更新されますが、 ut_name と ut_host は空であるものが記録されます ( init(8) 参照)。 wtmp ファイルは、 last(1) と ac(8) プログラムで使われます。
時刻変更やシャットダウン・リブートの際には、 以下の項目が wtmp ファイルに記録されます。
reboot
shutdown | |
システムのリブートやシャットダウンが開始された。
ut_line
フィールドに
‘amp;~’
と言う文字が、
ut_name
フィールド中に
reboot
もしくは
shutdown
が記録されます (
shutdown(8)
と
reboot(8)
参照)。
| |
date | システム時刻が手動もしくは自動で更新された ( date(1) 参照)。 コマンド名 date がフィールド ut_name に記録されます。 ut_line フィールド中の ‘amp;|’ 文字は、変更前の時刻を示し、 ‘amp;{’ 文字は新しい時刻を示しています。 |
これらのファイルが存在しない場合、 pam_lastlog(8) [英語] はこれらを作成しません。 これらのファイルは、手動で作成する必要があります。
utmp および wtmp のファイルに対する通常の操作は、提供された login(3), logout(3), logwtmp(3) ユーティリティ関数で行い、 これらのファイルの書式が異なるシステム間での互換性を維持すべきです。
/var/run/utmp | utmp ファイル。 |
/var/log/wtmp | wtmp ファイル。 |
/var/log/lastlog | |
lastlog ファイル。 | |
UTMP (5) | November 14, 2001 |
総合手引 | セクション 5 | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | The last good thing written in C was Franz Schubert's Symphony #9. | ” |
— Erwin Dietrich |