回答:
ユーザーが作成してから作成されていない場合は、.bash_logout
ファイルを使用して日付を決定できます。ルートとして:
ls -l /home/<username>/.bash_logout
または、ユーザーがホームディレクトリを持っている場合は、そのディレクトリの最終変更日を確認できます。
ls -ld /home/username/
使用できる日付のみを取得するにはawk
:
ls -ld /home/username/ | awk '{ print $6,$7,$8 }'
ls -ld /home/username/
ホームディレクトリの変更時刻を指定します。この時刻は、ホームディレクトリでファイルが追加または削除されるたびに更新されるため、役に立ちません。
アカウントの作成が記録される場合があります。Linux(共通のシャドウユーティリティスイートを使用している場合)ではuseradd
、ファシリティの下にログエントリを作成しますauth.info
。このログは通常、/var/log/secure
またはにあります/var/log/auth.log
(ディストリビューションによって異なります)。
バックアップを確認して、/etc/passwd
このアカウントを持たない最も新しいバックアップを確認できます。私が使用してお勧めしますetckeeperの変化を追跡するために、/etc
そう、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:)
。
$ chage -l fred
パスワード変更日を確認します。
ローカルユーザーの場合は、それを記録するシステムおよびファイルシステム(Linux、ほとんどのBSD、macOS)のホームディレクトリの誕生時刻を確認できます。その方法はシステムによって異なります。
LDAPディレクトリ内のユーザーのcreateTimestamp
場合whenCreated
、対応するLDAPエントリの(場合によっては)属性を確認できます。
ldapsearch -LLL -x -H ldaps://ldap.example.com -s sub \
-b dc=example,dc=com 'uid=username' createTimestamp whenCreated
/var/log/auth.log
(あなたが同様に回転ログで見る必要があるかもしれません:/var/log/auth.log.1
、/var/log/auth.log.2.gz
、...)。これにより、ユーザーアカウントが認証された最初の日付についての手掛かりが得られます。ただし、これはシステムユーザーには機能しません。また、アカウントがsyslog
のログローテーション期間よりも前に作成された場合も失敗します。