すべてのUnix(CentOS、FreeBSD、MacOS X)でシステムアカウントをデフォルトのセキュリティルールとして有効にします。
MacOS X(Yosemite、10.10.3)でバグのある動作を見つけて修正しようとしています。
最近終了した一連のプロセスの分析を実行するたびに、プロセスは実際に終了しましlastcomm
たが、日付は次の例のように将来のものです。
••My_Mac••$lastcomm |もっと見る lastcomm -X bob ttys007 0.00秒 7月26日 月曜日 14:13 (0:00:03.05) もっと見る - bob ttys007 0.00秒 7月26日 月曜日 14:13 (0:00:03.05) stty - bob ttys007 0.00秒 7月26日 月曜日 14:13 (0:00:00.05) path_helpe - bob ttys007 0.00秒 7月26日 月曜日 14:13 (0:00:00.50) sshd -SF _sshd__ 0.00秒 1月27日 月曜日 17:31 (0:00:04.91) procmail -S bob __ 0.00秒月 7月26日 14:11 (0:00:00.09) cron -F root __ 0.00秒 6月1日 月曜日 13:10 (0:00:00.33) sendmail -S root __ 0.00秒 6月1日 月曜日 13:10 (0:00:00.31) postdrop - ルート__ 0.00秒月6月1日13:10(0:00:00.09) [...] ••My_Mac••$日付 2015年6月1日月曜日13:12:07 CEST ••My_Mac••$
まず、問題は間違った時間帯ほど単純ではありません。
7月26日14時13分(間違ったタイムスタンプ)と6月1日13時10分(正しいタイムスタンプ)は数日差があります。
date
これは誤用による大きな時間ドリフトでもありません。さらに、このサーバーはntp
ポリシー1ntp
サーバーで同期されます。
他の人もこのような不適切な行動を見たことがありますか?
この問題をよりよく研究する方法を見つけましたか?
これは既知のバグですか?
ベストアンサー1
ElCapitan(MacOSX 10.11..)でも同じ誤動作が見つかりました。調査の結果、/var/account/acctファイルのタイムスタンプデータが正しいことが確認されました。 lastcomm.cのソースコードのコンパイル
http://opensource.apple.com/tarballs/shell_cmds/shell_cmds-187.tar.gz
コンパイラメッセージを表示する「警告: 'u_int32_t *'( 'unsigned int *'とも呼ばれます)を 'const time_t *'( 'const long *'とも呼ばれます)型の引数に渡した互換性のないポインタ型。
次のパッチは無効なアカウントのタイムスタンプを修正します。エルキャピタンで。 Yosemite(10.10..)以前のバージョンで動作できます。
***最終連絡.c 2016/08/26 19:44:23 1.1 ---lastcomm.c 2016/08/27 00:30:49 1.2 **************** *** 135,138**** ---135,140---- if (!*argv || リクエスト(argv, &ab)) { + time_t時間が長い。 + 時間 = ab.ac_btime; t = 拡張(ab.ac_utime) + 拡張(ab.ac_stime); (間違った)printf( **************** *** 144,148**** user_from_uid(ab.ac_uid, 0), UT_LINESIZE, UT_LINESIZE、getdev(ab.ac_tty)、 ! t /(ダブル)AHZ、ctime(&ab.ac_btime)); デルタ=拡張(ab.ac_etime)/(ダブル)AHZ; printf(" (%1.0f:%02.0f:%05.2f)\n", --- 146,150---- user_from_uid(ab.ac_uid, 0), UT_LINESIZE, UT_LINESIZE、getdev(ab.ac_tty)、 ! t /(ダブル)AHZ、ctime(&timelong)); デルタ=拡張(ab.ac_etime)/(ダブル)AHZ; printf(" (%1.0f:%02.0f:%05.2f)\n",