利用ユーザーが増えてくると、ファイルとフォルダの作成や削除などの操作を、
ログに残しておいた方が良い場合がある。
新しいバージョンのsambaでは設定を行えば、簡単に共有のファイルやフォルダに対する操作をロギングできる。
sambaの共有にファイルやフォルダへの何らかのアクセスがあると、
その情報がrsyslogdを通して、ログファイルに書き込まれていくようになる。
<手順>
■sambaの設定ファイルである smb.conf の編集を行った
操作情報を記録するための設定は、各共有ごとに行った。
次の例は、sharename という共有においてファイルやフォルダへの操作をロギングする設定だ。
[sharename]・full_audit:prefix = %u|%I|%S
(省略)
vfs objects = full_audit
full_audit:prefix = %u|%I|%S
full_audit:failure = mkdir rmdir pwrite rename unlink
full_audit:success = mkdir rmdir pwrite rename unlink
(省略)
指定している三つの値でそれぞれ、ユーザー名、IPアドレス、共有名が、併せて操作ログに記録されるようになる。
・full_audit:success = mkdir rmdir pwrite rename unlink
ファイルやフォルダの操作が成功した場合にログに残す操作を設定している。
mkdir …フォルダの作成
rmdir …フォルダの削除
pwrite …ファイルへの書き込み (ファイルの作成ではない)
rename …リネーム
unlink …ファイルの削除
定義された操作は他にも色々ある。(†1)
ログファイルが膨れ上がったり、ファイルシステムに負荷をかけたり、
悪影響を及ぼすかもしれないので、必要最小の記録にとどめている。
smb.conf を保存するだけで、sambaにこの新しい設定が反映されたようである。
(場合によっては、sambaの再起動が必要になるかもしれない)
■ rsyslogの設定を確認した
以上の設定がsambaで完了すれば、操作情報が、rsyslogに送られるようになるようだ。
rsyslogのデフォルトの設定には、次の記述がある。
*.info;mail.none;authpriv.none;cron.none /var/log/messages*.infoというデフォルト設定が効いて、/var/log/messages にログが記録されていくようだ。
デフォルトの設定のまま変更はしていない。
■動作確認を行った
○次のコマンドで、hiro というユーザーによるsamba共有(sharename)に対する操作を、grepで抽出して表示させた。
[root@FServer log]# grep hiro /var/log/messages | less
Jul 31 00:00:30 FServer smbd[15060]: hiro|192.168.7.31|sharename|rmdir|ok|tree/14/testhiroは、共有名sharenameにあるtreeフォルダ内14フォルダ内にある testというフォルダを削除したということがわかる。
そして、そのクライアントPCのアドレスは192.168.7.31である。
○削除フォルダに、さらにサブフォルダやファイルが存在している場合
削除したフォルダに、ファイルやサブフォルダがさらに存在していた場合でも、
まず削除対象のフォルダ内にあるファイルが削除(unlink)されて、
続いてフォルダが削除(rmdir)されている様子がログから読み取れた。
(参考)
・Samba – file audit log with full_audit
< http://a32.me/2009/10/samba-audit-trail/ > 2013年7月31日
・vfs_full_audit — record Samba VFS operations in the system log (脚注 1)
< http://www.samba.org/samba/docs/man/manpages/vfs_full_audit.8.html > 2013年7月31日