Como contar o número de vezes que um arquivo / diretório foi aberto?

1

Estou tentando encontrar o número de vezes que um arquivo foi aberto (desde a criação do SO). Estou pensando em fazer isso via stat, mas a maioria das flags só retorna a diferença entre a última vez que foi aberta.

    
por mynameis 24.11.2014 / 22:48

1 resposta

2

Esta resposta explica o que precisa ser feito, mas as especificidades de como dependem de sua distribuição, sua configuração e propósito e quais ferramentas você escolhe para analisar os dados :

O que você está procurando é o daemon Auditd no Linux. A partir do manpage auditd (8) :

auditd is the userspace component to the Linux Auditing System. It's responsible for writing audit records to the disk. Viewing the logs is done with the ausearch or aureport utilities. Configuring the audit rules is done with the auditctl utility. During startup, the rules in /etc/audit/audit.rules are read by auditctl and loaded into the kernel. Alterately, there is also an augenrules program that reads rules located in /etc/audit/rules.d/ and compiles them into an audit.rules file. The audit daemon itself has some configuration options that the admin may wish to customize. They are found in the auditd.conf file.

A auditoria usa funções embutidas no kernel para criar logs sempre que certas chamadas do sistema são feitas, de acordo com suas especificações. Uma vez configurado, você encontrará os registros em /var/log/audit ou em algum lugar semelhante por sua distribuição.

Para auditar o acesso a um arquivo, você usaria algo semelhante a:

auditctl -w /path/to/interesting/files/ -p rwxa -k myfileaudits

Em que -w especifica o caminho para os arquivos -p especifica que o sistema irá auditar r eads w ritos, e x ecutions, e um ttribute ou permissão muda. Finalmente, a opção -k permite que você especifique uma chave arbitrária para usar ao procurar por esta regra com ausearch .

Note que, embora auditd funcione em chamadas do sistema, -p r não rastreia a função read , mas abre para que o os registros não são inundados com cada leitura, mas uma entrada é feita toda vez que um arquivo é aberto para leitura.

Uma vez que a auditoria esteja ativada e os logs tenham sido instalados, ausearch poderá ser usado para analisar esses registros para todo o acesso aos arquivos especificados, e ferramentas padrão de texto ou estatísticas poderão ser usadas para gerar os registros. Eles podem variar de grep e wc -l para contar as entradas de log ou alguma combinação de scripts e GNU-R GNU-R a> ou gnuplot para gerar gráficos e relatórios.

Outra alternativa é usar o SELinux . Enquanto o SELinux é uma ferramenta para controle de acesso que normalmente registra apenas negações de acesso, ele pode ser configurado para registrar o acesso TODOS e fornecer informações semelhantes para auditoria.

Editar: Se um registro de acesso for necessário desde o início : por exemplo, durante a instalação do SO, durante a inicialização antes do início do auditd ou antes da instalação do auditd , então medidas mais extremas são necessárias. Pode ser necessário criar um instalador personalizado ou um arquivo de inicialização initrd.img personalizado para carregar o depurador necessário ou as ferramentas de rastreamento no nível do kernel. Essas ferramentas de rastreamento podem incluir dtrace , perf , SystemTap , ktap ou ferramentas semelhantes no nível do depurador para obter acesso durante a inicialização. Uma boa referência é link e um exemplo desse tipo de análise para desempenho do sistema, em vez de auditoria é bootchart .

Configurar isso está além do escopo da minha experiência, no entanto - espero que as referências sejam úteis.

    
por 24.11.2014 / 23:40