UNIXで、過去1週間に特定のファイルにアクセスしたユーザーを見つける方法はありますか?ユーザーまたはスクリプトが他の場所にFTPで転送している可能性があります。特定のファイルにアクセスしたユーザー名のリストを取得できますか?誰が特定のファイルにアクセスしているのかを知るにはどうすればよいですか??
承認された回答:
非常に珍しいログポリシーが設定されていない限り、ログに記録されていないファイルに誰がアクセスしたか(これは膨大な量の情報になります)。誰がいつログインしたかは、システムログで確認できます。 last
コマンドは、ログイン履歴、および/var/log/auth.log
などの他のログを提供します ユーザーがどのように認証され、どこからログインしたか(どの端末、またはリモートの場合はどのホスト)かがわかります。
ファイルが最後に読み取られた日付は、そのアクセス時間、または略してatimeと呼ばれます。すべてのUNIXファイルシステムはそれを保存できますが、(通常は小さい)パフォーマンスの低下があるため、多くのシステムはそれを記録しません。 ls -ltu /path/to/file
またはstat /path/to/file
ファイルのアクセス時間を示します。
ユーザーがファイルにアクセスし、自分のトラックを非表示にしようとしていない場合は、シェルの履歴(~/.bash_history
など) )手がかりがあるかもしれません。
現在ファイルを開いているのは誰か、または誰であるかを確認するには、lsof /path/to/file
を使用します。 。
将来ファイルに何が起こるかをログに記録するには、いくつかの方法があります。
-
inotifywaitを使用します。
inotifywait -me access /path/to
/path/to/ ACCESS file
の行を出力します 誰かがfile
を読んだとき 。このインターフェースでは、誰がファイルにアクセスしたかはわかりません。lsof /path/to/file
を呼び出すことができます この行が表示されるとすぐに、競合状態が発生します(lsofが実行されるまでにアクセスが終了する可能性があります)。 -
LoggedFSは、ファイルシステムツリーのビューを提供するスタック可能なファイルシステムであり、そのビューを介してすべてのアクセスのより詳細なログを実行できます。構成するには、LoggedFS構成ファイルの構文を参照してください。
-
Linuxの監査サブシステムを使用して、ファイルシステムアクセスを含む多数のログを記録できます。
auditd
を確認してください デーモンが起動し、auditctl
を使用してログに記録する内容を構成します 。ログに記録された各操作は、/var/log/audit/audit.log
に記録されます。 (一般的なディストリビューションで)。特定のファイルの視聴を開始するには:auditctl -w /path/to/file
ディレクトリに監視を配置すると、そのディレクトリ内のファイルとそのサブディレクトリも再帰的に監視されます。