Monitorar, estender e indexar sistemas de arquivos Linux

3

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.

    
por carlito 10.06.2009 / 06:17

5 respostas

3

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).
    
por 12.06.2009 / 07:06
1

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.

    
por 10.06.2009 / 06:27
1

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.

    
por 10.06.2009 / 08:06
1

Dê uma olhada no auditd. Ele deve fornecer o que você precisa.

    
por 10.06.2009 / 09:13
1

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.

    
por 10.06.2009 / 11:11