Script para contar o número de vezes que um arquivo foi acessado

2

No Linux, é possível escrever um script que possa contar o número de vezes que um arquivo foi acessado no sistema de arquivos local e por quem?

Como eu monitoraria uma coisa dessas e criaria um log se possível?

    
por Gaara 29.12.2011 / 09:35

2 respostas

3

O sistema audit é um daemon dedicado que monitora recursos do sistema de arquivos e grava entradas de log em /var/log/audit.log de quando um usuário em particular acessou um arquivo.

O daemon auditd precisa ser iniciado e lê sua configuração em /etc/auditd.conf

Você pode especificar suas próprias regras usando auditctl , por exemplo,

$ sudo auditctl -w /etc/passwd -p war -k passwd-file

onde   -p war significa (w) rito, (a) ppend & (ler   -k 'meu nome de regra' representa a frase que aparecerá no log de auditoria quando -p war ocorrer

Quando você quiser realmente ver quais usuários acessaram quais recursos monitorados do sistema de arquivos, use auditsearch e auditreport para filtrar os logs para as entradas 'meu nome de regra' e um relatório de resumo respectivamente. / p>     

por 30.12.2011 / 12:32
1

É certamente possível descobrir a última vez que um arquivo foi acessado a partir de seu atributo 'atime' e há algumas maneiras de fazer isso. Para determinar qual usuário fez isso, é mais complicado e depende do contexto, por exemplo foi acessado via shell? foi acessado através de um aplicativo GUI?

Para ver o tempo de um arquivo, use ls com a opção -u:

$ ls -lu some_file

Para, por exemplo, localizar todos os arquivos no diretório / home que foram acessados na última hora, você pode usar o comando find

$ sudo find /home/ -amin -60

Você também pode obter informações mais detalhadas sobre um arquivo com o comando stat :

$ stat some_file

Na verdade, aqui é um link para um script que verifica atime (usando stat ) para arquivos em um diretório especificado.

Ao reler sua pergunta, percebo que você está interessado em 'quantas vezes' um arquivo foi acessado. Não existe um comando específico * nix para determinar esta informação, por isso você terá que verificar o acesso ao arquivo através de um dos métodos mencionados abaixo.

Em relação à sua pergunta sobre como determinar quais usuários acessaram um arquivo, o * nix não registra isso especificamente. A suposição é que os sysadmins controlarão o acesso a arquivos e diretórios por meio de permissões. No entanto, existem algumas opções que você pode tentar:

  1. use ps e fuser para ver quais usuários estão acessando arquivos no momento
  2. forçar os usuários a usar sudo para acessar arquivos - logs do sudo para o arquivo /var/log/auth.log - embora essa opção possa ser um grande assassino de produtividade (e confiança)
  3. examine as ACLs do SElinux e o registro em log
  4. modificar (com aliases) o perfil de shell de todo o sistema ( / etc / profile ) para registrar o tempo e as informações do usuário em um arquivo de log dedicado
  5. como sugerido em um comentário à sua pergunta, escreva um script de shell para registrar as informações do usuário e do atime e usar esse script para agrupar os aplicativos GUI (isto é, modificar a entrada 'command' no iniciador

Note que para que o atime seja gravado no disco cada vez que um usuário ou processo o acessa, você deve ter a opção atime incluída na entrada / etc / fstab do sistema de arquivos (discutido aqui )

    
por 29.12.2011 / 10:53

Tags