ファイルがアクセスされた回数をカウントするスクリプト


2

Linuxでは、ローカルファイルシステムでファイルにアクセスされた回数を誰が誰でカウントできるスクリプトを作成できますか?

可能であれば、このようなことをどのように監視し、ログを作成しますか?


3
シェルスクリプトはこの監視を実行できませんでした。たとえば、GUIアプリを使用してファイルを開くことは、シェルスクリプトによって検出されません。ファイルを開くたびに、ファイルシステム(またはコールバック関数)にフックする必要があります。カーネルにハッキングすることは可能ですが、これにはすべてカーネルのセキュリティ/整合性を保持する必要があります。
おがくず

回答:


3

監査システムは、ファイルシステムのリソースを監視し、ログ・エントリを書き込む専用のデーモンである/var/log/audit.log特定のユーザがファイルにアクセスしたときの。

auditdデーモンを起動する必要があり、それが/etc/auditd.confから、構成の読み込み

を使用して独自のルールを指定できます。auditctlたとえば

$ sudo auditctl -w /etc/passwd -p war -k passwd-file

どこ -p戦争の手段(ワット)儀式、(a)はPPEND&(R)EAD -k「私のルール名は」と、監査ログに表示されますフレーズ表し-p戦争が発生します

どのユーザーがどの監視対象ファイルシステムリソースにアクセスしたかを実際に確認する場合はauditsearch、とauditreportを使用して、「my rule name」エントリと要約レポートのログをそれぞれフィルタリングします。


1

「atime」属性からファイルが最後にアクセスされた時間を確認することは確かに可能であり、これを行うにはいくつかの方法があります。どのユーザーがそれを行ったかを判断するのは、よりトリッキーであり、コンテキストに依存します。たとえば、シェル経由でアクセスしましたか?GUIアプリ経由でアクセスしましたか?

ファイルのatimeを確認するにlsは、-uオプションを使用します。

$ ls -lu some_file

たとえば、過去1時間にアクセスされた/ homeディレクトリ内のすべてのファイルを検索するには、find次のコマンドを使用できます。

$ sudo find /home/ -amin -60

stat次のコマンドを使用して、ファイルに関する詳細情報を取得することもできます。

$ stat some_file

実際には、ここでのatime(使用をチェックするスクリプトへのリンクであるstat指定されたディレクトリ内のファイルのためには)。

質問を読み直すと、ファイルが「何回」アクセスされたかに興味があることに気付きます。この情報を特定するための特定の* nixコマンドはありません。そのため、以下で説明する方法のいずれかを使用して、ファイルアクセスのログを調べる必要があります。

どのユーザーがファイルにアクセスしたかを判断することについての質問に関して、* nixはそれを特に記録しません。システム管理者は、アクセス許可を介してファイルとディレクトリへのアクセスを制御することを前提としています。ただし、試すことができるオプションがいくつかあります。

  1. を使用してpsfuserどのユーザーが現在ファイルにアクセスしているかを確認します
  2. ユーザーにsudoファイルへのアクセスを強制する-ファイル/var/log/auth.logへのsudoログ-このオプションは深刻な生産性(および信頼性)のキラーになる可能性があります
  3. SElinux ACLとログを調べます
  4. システム全体のシェルプロファイル(/ etc / profile)を(エイリアスを使用して)変更し、atimeとユーザー情報を専用のログファイルに記録する
  5. 質問へのコメントで示唆されているように、atimeとユーザー情報を記録するシェルスクリプトを作成し、このスクリプトを使用してGUIアプリをラップします(つまり、ランチャーの 'command'エントリを変更します)

ユーザーまたはプロセスがディスクにアクセスするたびにディスクに書き込まatimeれるには、そのファイルシステムの/ etc / fstabエントリにオプションが含まれている必要があることに注意してください(ここで説明します


こんにちはvenzen、返事をありがとう、まあ実際に私はX-Serverを持たないサーバーを実行しているので、GUIは問題になりませんが、ヘッズアップに感謝します:)それについて言及していないことを申し訳ありません。まあ、私もatimeオプションについて考えましたが、それをうまく関連付けることができませんでした。さて、特定のファイルを監視し、ファイルにアクセスしたユーザーの出力を表示し、より多くの情報を表示する、監査 auditdと呼ばれるツールに遭遇しました。からの情報からデータをフィルタリングするスクリプトを書くことができます。ビューはありますか?auditctlausearchausearch
ガアラ

すばらしいです。あなたの解決策を説明してくれてありがとう-私は監査がこれを行うことができることを知りませんでした。今、私たちは両方知っています。この質問を見つけた他の(将来の)ユーザーのために、監査を解決策として概説する別の答えを追加します(できないので)。ubuntuの精神で私の答えを親切に受け入れてください-それは私へのクリスマスプレゼントになります:D
venzen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.