コンプライアンスのために、UNIXコンピュータでローカル(ユーザーおよび非ユーザー)アカウントの作成日に関する情報を取得する必要があります。
この種の情報を収集する方法(最も信頼性が高く正確な方法ではありません)がありますか?
たとえば、代わりにhome
(ユーザーアカウントのために)ディレクトリ作成日を検索しましたが、POSIX準拠のシステムではファイル生成タイムスタンプが利用できないことがわかりました。
答え1
アカウントの作成が記録されることがあります。 Linuxでは(Universal Shadowユーティリティスイートを使用している場合)、ツールのuseradd
下にログエントリを作成しますauth.info
。このログは通常、/var/log/secure
または/var/log/auth.log
(配布盤に応じて)にあります。
このアカウントがなくてもバックアップを確認/etc/passwd
し、最新のバックアップが何であるかを確認できます。使用してお勧めしますマネージャーをお待ちください変更を追跡する/etc
とgit annotate /etc/passwd
答えが得られます。 (実際にgit annotate
ユーザー項目が最後に変更された時期をお知らせします。この回答の範囲を超えて自動化をさらに詳しく見ると、その項目が追加された時期がわかります。)
監査ログ、バックアップ、修正履歴が不足している場合は、ヒューリスティックを使用する必要があります。良い手がかりは、最も古いファイルのinode変更時間(ctime)です。この経験的な方法は両方の方法で機能できます。ディレクトリがユーザーのホームディレクトリに移動されると、古いctimeを含むファイルが含まれる可能性があります(ただし、ユーザーより古いファイルの場合、そのuidは変更時にユーザーのuidである必要はありません)。 ctime アップデートが含まれているため、ユーザーに属していないファイルをスキップできます。逆に、特定のイベントはファイルのctimeを変更する可能性があります(たとえば、システム全体がバックアップから復元される場合など)。ユーザーが一度も変更したことのないファイルをls -Alctr ~bob
含めることができる(通常の場合)、ユーザーのホームディレクトリ(| sed -n 2p)から始めて、.sed拡張子を持つ古いファイルがあるかどうかを確認できます。 zshを使用して 。/etc/skel
.bash_logout
find ~bob ! -cnewer ~bob/.bash_logout -user bob
ls -ld ~bob/**/*(Doc[1]u:bob:)
答え2
もし作成され、手が届かなかった。このファイルを使用して、ユーザーが作成された後の.bash_logout
日付を確認できます。ルートとして実行:
ls -l /home/<username>/.bash_logout
または、ユーザーにホームディレクトリがある場合は、そのディレクトリの最後の変更日を確認できます。
ls -ld /home/username/
利用可能な日付のみを取得しますawk
。
ls -ld /home/username/ | awk '{ print $6,$7,$8 }'
答え3
ローカルユーザーの場合は、ホームディレクトリを表示できます。生まれるシステムとファイルシステム(Linux、ほとんどのBSD、少なくともmacOS)の時間を記録します。具体的な操作方法はシステムによって異なります。。
LDAPディレクトリにあるユーザーの場合は、そのcreateTimestamp
LDAPエントリの(または可能な)属性を表示できます。whenCreated
ldapsearch -LLL -x -H ldaps://ldap.example.com -s sub \
-b dc=example,dc=com 'uid=username' createTimestamp whenCreated
答え4
パスワード変更日を確認してください。
chage -l fred