一天一客户打电话说其公司的某一个共享文件夹完全不见,赶到客户处,经过分析,发现是因为某部门的同事不小心将之移动到其它的位置,把客户给吓得半 死。后来同其商量,为了解决此种,以及出现问题之后可以快速找出是谁进行的误操作(比如是谁什么时间删除了文件,复制了文件等),以追究责任。决定 从两方面下手,第一,实现对每个共享及文件详细的ACL控制,虽然麻烦点,但能够有效的预防因为误操作而造成损失。第二,就是对samba决定启用日志管 理。

客户处环境:
操作系统:CentOS 5.3 Linux filesvr01 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
Samba版本:Samba version 3.0.33-3.7.el5
Samba认让:使用winbind,通过ad认证

1、决定采用系统自带的审核功能,启用审核之后,发现日志中所得之信息不是想要的,此想法被否决。

2、所以只能通过samba入手,仔细看其配置选项,发现加入log level=3可以启用比较详细的日志选项,但其日志仍然不是我们所需要。

3、 再仔细在samba.org网站查找其实配置指南,发现samba支持一个vfs功能(注,需要3.0以上的samba)。通过此vfs功能,我们可以对 samba实现文件审核,扩展审核,防病毒,误删除恢复,影子镜像等功能。正是我们所需要功能。vfs详细介绍,请参考http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html。加入相应的参数在smb.conf中
syslog=2 使用此选项是因为vfs会向/var/log/messages中写入日志,但为了更好的区分vfs产生的日志,所以将vfs写入messages中的日志等级改为2,对应于系统的notice级别,以便于单独处理。
log level =0 vfs:10

4、修改/etc/syslog.conf,全smaba产生的2级别的日志单独记入某个文件
修改此行
*.info;mail.none;authpriv.none;cron.none /var/log/messages

*.!notice;mail.none;authpriv.none;cron.none; /var/log/messages 使notice级别的日志不再记入messages文件中
另外再增加
*.=notice -/var/log/sysnotice.log 让notice级别的日志记入sysnotice.log中