如何找出谁在Linux服务器上删除文件?

我们有一个Linux服务器,这是Ext4和另一台Linux服务器,其中有Windows客户端共享文件夹的iSCSI

  1. 允许用户修改文件而不删除它们。 用户有权修改内容,但不能删除文件本身。
    1. 审核所有的文件添加/删除/修改操作英文的日志格式。
    2. 发送提醒,如果尝试删除

如果Windows客户端正在安装Samba / CIFS共享,那么您应该查看full_audit.so模块的Samba。

Samba:logging用户活动

Samba – 使用full_audit文件审计日志

Googlesearch – samba full_audit

我会build议检查audithttp://people.redhat.com/sgrubb/audit/

它可以监视内核所发生的一切事情 – 您可以定义自己的规则,以匹配您希望审计的系统调用活动的types。

检查inotify工具,或者如果你是一个程序员,你可以推出自己的适合。 这并不难; 最难的部分是跟踪所有的子目录,并处理目录添加/删除/重命名。

我有几个服务器上运行基于inotify的程序。 例如,在存储我的扫描的私人文件(账单,收据等)的一个,我有一个程序,目录树中的新文件。 当一个新文档被创build时,它立即被PGPencryption(当然,除非新文档被pgpencryption)。 另一个类似的程序,将特定树中的任何更改发送到远处的另一个服务器。

我可以看到修改其中之一,只是写入审计文件,然后可以根据需要审查。 我所看到的最困难的部分是确保审计文件不会变得太大。

我会审查其中的一个,看看它是否公开。 如果是的话,我会find一个分享的地方。

使用Linux :: Inotify2 Perl模块。 编写一个Perl脚本并将其保存为正在运行的守护程序。

您可以继续关注以下事件的某个目录:

 IN_ACCESS object was accessed IN_MODIFY object was modified IN_ATTRIB object metadata changed IN_CLOSE_WRITE writable fd to file / to object was closed IN_CLOSE_NOWRITE readonly fd to file / to object closed IN_OPEN object was opened IN_MOVED_FROM file was moved from this object (directory) IN_MOVED_TO file was moved to this object (directory) IN_CREATE file was created in this object (directory) IN_DELETE file was deleted from this object (directory) IN_DELETE_SELF object itself was deleted IN_MOVE_SELF object itself was moved IN_ALL_EVENTS all of the above events IN_ONESHOT only send event once IN_ONLYDIR only watch the path if it is a directory IN_DONT_FOLLOW don't follow a sym link IN_MASK_ADD not supported with the current version of this module IN_CLOSE same as IN_CLOSE_WRITE | IN_CLOSE_NOWRITE IN_MOVE same as IN_MOVED_FROM | IN_MOVED_TO