Você deseja usar incrond
. A partir do manpage:
The inotify cron daemon (incrond) is a daemon which monitors filesystem
events and executes commands defined in system and user tables. It’s
use is generally similar to cron(8).
Eu quero interceptar as operações abaixo em um sistema Linux. É possível fazê-lo com eficiência? Meu objetivo final é fornecer auditoria e um conjunto adicional de metadados do sistema de arquivos indexados de maneira diferente. Se a resposta for "não", eu aprecio ponteiros em uma direção útil.
1) open(), and its parameters (where flags is O_CREAT)
2) write(), along with its parameters, *buf, and the struct file for fd, including f_pos
3) the corresponding information in 2 for a memory-mapped write to a file. I realize I'm asking something very difficult here as it requires an incestuous knowledge between the layers. Setting a flag that memory-mapped IO to a given open file has occurred is good enough, similar to how O_DIRECT writes might be handled. (triggering a later re-scan).
4) rename(), unlink()
5) mkdir(), rmdir()
6) truncate(), ftruncate()
Se houver tecnologias concorrentes para interceptar esses tipos de operações, estou mais interessado naquelas que durarão mais tempo (o maior suporte à estabilidade e à comunidade) e aquelas que são menos específicas do sistema de arquivos (os plug-ins reiser4 foram empolgantes, mas não parece politicamente viável).
Embora minha lista 1-6 seja simplesmente um exemplo, as ideias sobre o que esqueci são úteis. Mas não estou tentando ser abrangente, apenas comunique meu objetivo de design.
Por exemplo, passar esses dados para userspace permitiria manter um índice live locate / updatedb. Isso permitiria que um banco de dados rastreasse um MD5 por bloco e por arquivo. A disponibilidade desses dados pode facilitar o snapshot.
Você deseja usar incrond
. A partir do manpage:
The inotify cron daemon (incrond) is a daemon which monitors filesystem
events and executes commands defined in system and user tables. It’s
use is generally similar to cron(8).
Aqui estão algumas postagens relacionadas:
Eu consideraria o primeiro como uma boa solução de snapshot se LVM ou o próximo NILFS2 não é o que você está procurando. É claro que o NILFS2 não é testado extensivamente, você terá que decidir por si mesmo se você correr o risco e colocar isso em um servidor de produção.
A segunda referência é mais parecida com a auditoria de segurança, mas aponta mais ou menos na mesma direção.
Que tal SystemTap ? É como o Dtrace no Solaris. Pelo menos para chamadas de sistema, parece ser uma boa solução. Parece bem suportado no Fedora.
Dê uma olhada no auditd. Ele deve fornecer o que você precisa.
O SeLinux combinado com o auditd é uma maneira de obter esses dados usando métodos que já estão no kernel.
Outra opção poderia ser usar truques LD_PRELOAD se você quiser apenas um aplicativo.
Tags linux filesystems