auditd システムを使用してシンボリックリンクを介してディレクトリを監視しても、ログはほとんどトリガーされません。状況は次のとおりです。
_# pwd
/home/root/serverfault
# ls -l
total 4
drwxr-xr-x 2 root root 4096 Sep 1 15:12 dir
lrwxrwxrwx 1 root root 3 Sep 1 15:12 p -> dir
# auditctl -w /home/root/serverfault/p -p rwxa -k PX
_
_/home/root/serverfault/p
_ディレクトリ内のファイルを読み書きするときはいつでも、ログが_/var/log/audit/audit.log
_に表示されるという素朴な印象を持っていました。しかし、そうではありません。
また、次の場合、監査ログはありません。
_# echo hello > /home/root/serverfault/p/hello.txt
_
strace を使用していくつかのディレクトリでls
を実行し、auditctl(8)
のマニュアルページの情報を使用して出力を評価しました。監査ログが生成されるべきであると私に思わせるstrace
出力からの1つの興味深い行は次のとおりです。
_open("/home/root/serverfault/p/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
_
open(2)
がデフォルトでシンボリックリンクをたどるからではないかもしれません。ログは、監視対象のパス(ls
の_/home/root/serverfault
_スイッチに与えられた引数)の親ディレクトリ(この場合は_-w
_)でauditctl
を実行した場合にのみ生成されます。
_/home/root/serverfault/p
_は実際にはディレクトリではなく、シンボリックリンクであることに気付きました。しかし、シンボリックリンクは、存在しないように見えるように使用することを意図したものではありませんか?全体として、シンボリックリンクを介したディレクトリ変更の監査は行われないように思われます。これは本当に本当ですか?
うーん、
-w path
Insert a watch for the file system object at path. You cannot
insert a watch to the top level directory. This is prohibited by
the kernel. Wildcards are not supported either and will generate
a warning. The way that watches work is by tracking the inode
internally.
シンボリックリンクファイルのiノードに変更が発生することはありません。これは、他の場所を指すファイルにすぎないためです。代わりに、シンボリックリンクが指すディレクトリにウォッチを追加するか、-F path
関連のオプションを試してください。ただし、ここでも、シンボリックリンクのiノードに変更はありません。