sambaの共有領域のアクセスログを取得する設定

sambaサーバを構築した際に、sambaで共有している領域にファイルを配置したり、削除したりしたログを取得しておきたいと思い調査しました。不特定多数に共有領域を公開しているわけではないので、そこまで神経質になっているわけではないのですが、とはいえ、何かあった際に確認できる術がないと困ると思い設定してみました。

samba.conf における設定情報

samba.conf にログを取得したい共有設定部分に下記を追記します。(log部分に関係するパラメータのみ抜粋しています)

        vfs objects = full_audit
        full_audit:facility = LOCAL1
        full_audit:prefix = %u|%I|%m|%S
        full_audit:success = connect disconnect mkdirat unlinkat renameat pwrite pread_recv
        full_audit:failure = none
        full_audit:priority = info

以下、各設定パラメータの説明になります。

1行目指定したクライアントの 動きをsyslogでシステムログに記録する。
vfs_full_audit はSamba VFSの動作すべてを記録することが可能である。
2行目システムログのファシリティ。ここではLOCAL1に設定。
3行目%u:ユーザ名  %I:IPアドレス %m:クライアントPC名 %S:共有名
4行目操作が成功した際のログ。ここでは接続、切断、フォルダ作成、削除などを記録。 
5行目操作が失敗した際のログ。ここでは記録しない。
6行目システムログのプライオリティ。ここではinfoレベルに設定。
ログ出力に関する設定パラメータの内容

こちらを設定して、下記のsmbのサービスを再起動すると、シスログに出力されるようになります。

ポイントは、4行目の部分で、こちらで誤ったパラメータを指定したり、古いバージョンのパラメータを指定すると、全てのログが出力されて、量が多くて確認できませんでした。必ず使用しているsambaのバージョンにあった、vfs_full_auditのマニュアルを確認しましょう。

ググって出てくる情報は最近のものでも想定通りの動きにならずハマりました。マニュアルにも各パラメータがどういった内容のログを出力するか、の説明がありませんので、パラメータの文言(単語の意味)から何となく推測して、実際に出力したログを確認するしかありませんでした。

今回はここまでです。参考になれば幸いです。