samba 預設不會有記錄誰刪除了檔案、建立等等的
samba 可以使用的模組有 extd_audit
不過缺點是:
1。我想要 log level 是 0,也就是 Make Directory, Remove Directory, Unlink,不過仍記很多 Open Directory,多到不像話
2。之後要追蹤很麻煩,沒有完整的記錄,所謂沒有完整是因為還要到另一個檔案去查它的 ID 是多少,又要去另一個檔案查它的 User是誰
還好有另一個選擇,叫作是 full_audit,看樣子彈性大很多 (是大超多的吧)
設定如下
[global]
vfs objects = full_audit# 記錄的前置字串 = 使用者|ip|netbios名|分享目錄
full_audit:prefix = %u|%I|%m|%S# 完成動作時會被記錄的有那些
# 參考: http://www.samba.org/samba/docs/man/manpages-3/vfs_full_audit.8.html 的 DESCRIPTION
# pwrite是上傳的動作
full_audit:success = mkdir rename unlink rmdir pwrite# 比方說沒有東西被改變,這個就不用記錄了吧。可以設定 = all 研究看看
full_audit:failure = none# 預設是只記錄於 /var/log/messages,可以修改 /etc/syslog.conf 加一行 local6.* /var/log/samba/audit.log
# 仍找不到好的方式讓不設定 syslog.conf 時不會記錄在/var/log/messages
# 我設了 priority 為 DEBUG時才不會記錄在 messages
full_audit:facility = LOCAL6# 警告的等級,notice、info、warning、debug、alert,好像記錄長的都差不多,可能我只是測試環境還不複雜吧
full_audit:priority = DEBUG
修改 syslog
vi /etc/syslog.conf
# 加入
local6.* /var/log/samba/audit.log
/etc/init.d/syslog restart
vi /etc/logrotate.d/syslog
# 更改
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {# 為
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron /var/log/samba/audit.log {
audit.log 記錄說明
May 14 11:36:53 st smbd_audit: cross|10.10.10.63|wis063-cross|cross|rename|ok|ISO/123/新增文字文件.txt|ISO/123/11111111.txt
# <——————– prefix —————->
# <operation>
# <result>
# <file路徑>
ref:
http://moiristo.wordpress.com/2009/08/10/samba-logging-user-activity/
http://www.samba.org/samba/docs/man/manpages-3/vfs_full_audit.8.html
留言
之所以log會記錄在message log中是因為syslog.conf之/var/log/message那裡有包含*.notice的設定,將之修改或拿掉即可 !