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のサービスを再起動すると、シスログに出力されるようになります。
# systemctl restart smb
ポイントは、4行目の部分で、こちらで誤ったパラメータを指定したり、古いバージョンのパラメータを指定すると、全てのログが出力されて、量が多くて確認できませんでした。必ず使用しているsambaのバージョンにあった、vfs_full_auditのマニュアルを確認しましょう。
ググって出てくる情報は最近のものでも想定通りの動きにならずハマりました。マニュアルにも各パラメータがどういった内容のログを出力するか、の説明がありませんので、パラメータの文言(単語の意味)から何となく推測して、実際に出力したログを確認するしかありませんでした。
今回はここまでです。参考になれば幸いです。