Sim, existe. O subsistema de auditoria possui alguns recursos contábeis bem legais.
A execução do seguinte comando auditará as alterações no arquivo:
auditctl -w /my/specificly/modified/file.txt -p w -k "suspect file change"
Isto irá configurar uma observação neste arquivo, sempre que ele for modificado por uma gravação, a alteração será registrada, e será registrada extensivamente.
Você pode verificar os registros:
ausearch -i -k "suspect file change"
Isso retornará a saída como:
type=PATH msg=audit(05/08/2012 17:32:32.353:13118) : item=1 name=/tmp/test.txt inode=5767528 dev=fd:00 mode=file,644 ouid=root ogid=root rdev=00:00 obj=staff_u:object_r:user_tmp_t:s0
type=PATH msg=audit(05/08/2012 17:32:32.353:13118) : item=0 name=/tmp/ inode=5767169 dev=fd:00 mode=dir,sticky,777 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:tmp_t:s0
type=CWD msg=audit(05/08/2012 17:32:32.353:13118) : cwd=/home/matthew/Testbed/C/fanotify
type=SYSCALL msg=audit(05/08/2012 17:32:32.353:13118) : arch=x86_64 syscall=unlinkat success=yes exit=0 a0=0xffffffffffffff9c a1=0xb540c0 a2=0x0 a3=0x7fff50cfba20 items=2 ppid=13699 pid=2773 auid=matthew uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=rm exe=/usr/bin/rm subj=staff_u:sysadm_r:sysadm_t:s0 key=some file
Se você quiser algo mais strong, pode optar por algo que, digamos, atenha a quaisquer exclusões de um usuário que normalmente não está inclinado a fazer isso. Para o desempenho, quanto mais específica a regra, melhor ..
auditctl -a exit,always -F arch=b64 -S unlink -S rmdir -F auid=78 -F dir=/var/www/vhost
O -F define os filtros e o -S define o syscalls, quanto mais filtros, menos intensivo ele é no kernel para rastreá-lo. Então, neste caso, eu filtro o usuário (apache), o diretório vhosts e o arch. Arch torna-se importante b64 sendo 64 bits b32 para 32 bits.
Você pode configurá-los a longo prazo colocando as regras em /etc/audit.rules.