web-dev-qa-db-ja.com

ローカルアカウント作成日

コンプライアンスの目的で、UNIXマシン上のローカル(ユーザーおよび非ユーザー)アカウントの作成日に関する情報を取得する必要があります。

そのような情報を収集する方法はありますか(たとえそれが最も信頼性が高く正確な方法でなくても)。

たとえば、代わりにhomeディレクトリの作成日(ユーザーアカウント用)を検索しましたが、POSIX準拠のシステムでは、ファイル作成用のタイムスタンプが利用できないことがわかりました。

9
antiauthor

アカウントの作成が記録される場合があります。 Linux(一般的なシャドウユーティリティスイートを使用している場合)では、useraddは_auth.info_ファシリティの下にログエントリを作成します。このログは通常、_/var/log/secure_または_/var/log/auth.log_にあります(ディストリビューションによって異なります)。

_/etc/passwd_のバックアップを確認して、このアカウントを持たない最も新しいバックアップを確認できます。 _/etc_の変更を追跡するために etckeeper を使用して推奨しているので、_git annotate /etc/passwd_で答えが得られます。 (実際に_git annotate_は、ユーザーのエントリが最後に変更された時刻を教えてくれます。自動化がこの回答の範囲外である、もう少し掘り下げると、エントリがいつ追加されたかがわかります。)

監査ログ、バックアップ、および変更履歴がない場合は、ヒューリスティックに頼る必要があります。良い手がかりは、iノードの変更時刻(ctime)が最も古いファイルです。このヒューリスティックは両方の方法で成り立つ可能性があります。つまり、ディレクトリがユーザーの家に移動された場合、古いctimeのファイルが含まれている可能性があります(ただし、ユーザーよりも古い場合は、変更としてユーザーのuidである必要はありません。 uidにはctimeの更新が含まれるため、ユーザーが所有していないファイルをスキップできます);逆に、一部のイベントはファイルのctimeを変更する可能性があります(たとえば、システム全体がバックアップから復元された場合)。ユーザーのホームディレクトリ(_ls -Alctr ~bob_ | sed -n 2p)から開始できます。これには、ユーザーが変更したことのない_/etc/skel_のファイルが含まれている可能性があります(_.bash_logout_は一般的なファイルです)。 _find ~bob ! -cnewer ~bob/.bash_logout -user bob_を含む古いファイルがあるかどうかを確認します。 zshでは、ls -ld ~bob/**/*(Doc[1]u:bob:)を実行します。

が作成され、変更されていない場合ユーザー作成以来、.bash_logoutファイルで日付を決定します。ルート実行として:

ls -l /home/<username>/.bash_logout

または、ユーザーがホームディレクトリを持っている場合は、そのディレクトリの最終変更日を確認できます。

ls -ld /home/username/

使用できる日付のみを取得するには、awkを使用します。

ls -ld /home/username/ | awk '{ print $6,$7,$8 }'

ソース

3
Nidal
$ chage -l fred

パスワード変更日を確認します。

1
Pablo

ローカルユーザーの場合、ホームディレクトリbirthの時間を記録できます。これらのシステムとそれを記録するファイルシステム(少なくともLinux、ほとんどのBSD、macOS)です。 その方法はシステムによって異なります

LDAPディレクトリ内のユーザーの場合、対応するLDAPエントリのcreateTimestamp(または場合によってはwhenCreated)属性を確認できます。

ldapsearch -LLL -x -H ldaps://ldap.example.com -s sub \
  -b dc=example,dc=com 'uid=username' createTimestamp whenCreated
1