话单目录/home/app/cdr下的话单被未知进程删除,目录下的*.txt文件很快就会被删除。
1. 检查了系统的crontab,没有发现相关的定时任务会删除该目录下的话单文件。
通过检查app用户的所有进程,发现该用户通过sftp登录到服务器上,从而怀疑是不是该用户通过sftp登录上来,把话单文件删除了。将该用户下所有的进程杀死,来判断是否是通过sftp删除的文件。使用pkill -9 -u app命令将该用户所有的进程杀死,不过话单文件依然被删除。这个时候,检查用户还有sftp登录到服务器上,此时,一线修改了用户的密码,使该用户无法通过sftp登录到服务器上,但是该文件依然被删除。这个时候,使用lsof +D /home/app/cdr/查找有打开该目录下文件的进程,没有发现相关的进程。
Linux的审计功能或许可以捉到删除该文件的进程。
操作步骤是:
1、修改vim /etc/audit/audit.rules 文件,增加下面的内容(SuSE 10为/etc/audit.rules): -w /home/mdsp/bcvt/jboss/data/dest/mdspbill/report/25601 -p w 2、修改/etc/sysconfig/auditd将AUDITD_DISABLE_CONTEXTS修改为no: # This option disables syscall auditing by default. This can also be # accomplished by auditctl -e. AUDITD_DISABLE_CONTEXTS="no" 3、重启auditd 服务 rcauditd restart
在具体操作的时候,发现并没有/etc/init.d/auditd文件,也没有/etc/audit/audit.rules文件,现未安装auditd的rpm包,需要找到SuSE 11对应的auditd的rpm包,然后执行rpm -ivh audit-1.7.7-5.16.x86_64.rpm安装。安装后,audit.rules、auditd文件都存在了。按照指导修改文件,修改文件后,重启了auditd服务。然后在对应的目录下touch一个txt文件,过了一分钟后,发现txt文件没有了。
此时,查看/var/log/audit/audit.log文件,发现有下面的内容:
type=SYSCALL msg=audit(1487212926.352:135): arch=c000003e syscall=82 success=yes exit=0 a0=69ea98 a1=6aa8e8 a2=7f72b9ffb698 a3=6f6c6174726f702f items=4 ppid=1 pid=81984 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=36556 comm="lcagent" exe="/home/lcagent/bin/lcagent" key=(null) type=CWD msg=audit(1487212926.352:135): cwd="/home/lcagent/bin" type=PATH msg=audit(1487212926.352:135): item=0 name="/home/app/cdr/" inode=311430 dev=ca:42 mode=040750 ouid=1303 ogid=1304 rdev=00:00 type=PATH msg=audit(1487212926.352:135): item=1 name="/home/lcagent/uploadtemp/app/cdr/" inode=3956864 dev=ca:42 mode=040700 ou id=0 ogid=0 rdev=00:00
这个系统调用了lcagent命令操作了话单目录。通过ausearch -sc 82命令,查找的结果如下:
APP://var/log # ausearch -sc 82
---- time->Thu Feb 16 10:42:06 2017 type=PATH msg=audit(1487212926.352:135): item=3 name="/home/lcagent/uploadtemp/app/cdr/10.179.72.107/Subscribe_10.179.72.107_20170216024015_1.txt" inode=311401 dev=ca:42 mode=0100640 ouid=1303 ogid=1304 rdev=00:00 type=PATH msg=audit(1487212926.352:135): item=2 name="/home/app/cdr/Subscribe_10.179.72.107_20170216024015_1.txt" inode=311401 dev=ca:42 mode=0100640 ouid=1303 ogid=1304 rdev=00:00 type=PATH msg=audit(1487212926.352:135): item=1 name="/home/lcagent/uploadtemp/app/cdr/10.179.72.107/" inode=3956864 dev=ca:42 mode=040700 ouid=0 ogid=0 rdev=00:00 type=PATH msg=audit(1487212926.352:135): item=0 name="/home/app/cdr/" inode=311430 dev=ca:42 mode=040750 ouid=1303 ogid=1304 rdev=00:00 type=CWD msg=audit(1487212926.352:135): cwd="/home/lcagent/bin" type=SYSCALL msg=audit(1487212926.352:135): arch=c000003e syscall=82 success=yes exit=0 a0=69ea98 a1=6aa8e8 a2=7f72b9ffb698 a3=6f6c6174726f702f items=4 ppid=1 pid=81984 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=36556 comm="lcagent" exe="/home/lcagent/bin/lcagent" key=(null)
从上面的信息来看,是/home/lcagent/bin目录下的文件执行了lcagent命令,所以该问题就找到了lcap的兄弟来帮忙具体是什么命令删除了话单问题。该问题彻底解决。
经验:后续对文件莫名其妙被删除的问题可以使用系统的审计功能来定位。