web-dev-qa-db-ja.com

一時ファイルを作成しているものを見つける方法

/ tmpに "/tmp/tmp.tMIHx17730"のような名前の空のファイルがたくさんあることに気づきました。監査ルールを実行しましたが、mktempがそれを作成していることがわかりましたが、あまり役に立ちません。

これらのファイルを作成するためにmktempを呼び出すスクリプトを見つけるにはどうすればよいですか? auditdを使用して親プロセスID /コマンドラインをキャプチャできますか?

更新:親プロセスID(ppid = 17729)があると思いますが、スクリプトがすぐに終了し、スクリプトが見つかりません。親プロセスのコマンドラインも取得するようにauditdを設定できますか?

更新2:tmpへの書き込みを表示するようにauditdを設定する方法は次のとおりです。

auditctl -w /tmp -k tmpfiles

次に:

ausearch  -k tmpfiles|grep "tmp."

それから私はファイルを選びますそして私はします

ausearch  -k tmpfiles -f /tmp/tmp.tMIHx17730

これは、ファイルを作成したプロセスと親プロセスpidを示しています。そのpidで最新のプロセスをキャッチするために、リスナーを開始するある種のプロセスを設定する必要があります

6
NickSoft

oK。私はそれをこのように見つけました:

auditdのセットアップ:

auditctl -w /tmp -k tmpfiles
auditctl -a task,always

次に検索

ausearch  -k tmpfiles|grep "/tmp/tmp."

私はこのようなものを手に入れます:

次に、ppid = 5807を取得し、検索またはプロセスを実行します。

ausearch -p 5807

私は次のようなものを手に入れました

time->Thu Nov 12 12:14:34 2015
type=SYSCALL msg=audit(1447323274.234:2547064): Arch=c000003e syscall=231 a0=1 a1=3c a2=1 a3=0 items=0 ppid=5772 pid=5807 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=84330 comm="bitdefender-wra" exe="/bin/bash" key=(null)

ここで、exe = "/ bin/bash"は実行可能ファイルであり、comm = "bitdefender-wra"は(切り捨てられた)コマンドラインです。

だから私は単に実行します:

# locate bitdefender-wra
/usr/lib/MailScanner/bitdefender-wrapper

そしてそれがあります:

LogFile=$(mktemp) || { echo "$0: Cannot create temporary file" >&2; exit 1; }

これを次のように変更します。

LogFile=$(mktemp /tmp/bitdefender.XXXXXXXXXXXX) || { echo "$0: Cannot create temporary file" >&2; exit 1; }

これが一時ファイルを削除しないスクリプトであることを確認するため。有る rm -f $LogFile以下ですが、その前にも出口があります。

もっと良い方法があるかもしれないことを覚えておいてください。したがって、誰かがtmpファイルを作成しているプロセスのコマンドラインで親を見つけるための最良の方法を提供するのを待ちます。私の方法には多くのフィルターがありません大きすぎるログを作成します。

3
NickSoft