Eu preciso de algum script que registre (apenas envie para o console ou arquivo) cada acesso a algum disco ou diretório (funciona para mim). Também gostaria de saber o que exatamente (qual subdiretório ou arquivo) foi acessado. Meu sistema é Ubuntu Linux. É possível e como posso fazer isso?
Responder1
Dê uma olhada no inotify, é exatamente para isso que ele foi criado. A IBM tem uma introdução meio decente (embora um tanto desatualizada) emhttp://www.ibm.com/developerworks/linux/library/l-inotify.html
Responder2
Se o que você deseja é monitorar as ações de um único programa strace com um script de filtro simples, de maneira mais geral consulte o "auditd" do SElinux.
http://en.wikipedia.org/wiki/Strace http://linux.die.net/man/8/auditd
No lado do Windows, veja o filemon do pessoal da SysInternals.
http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx
Responder3
Você pode usaríncron, que é uma ferramenta semelhante ao cron para eventos do sistema de arquivos do inotify.
Você pode definir uma ação a ser executada sempre que ocorrer um evento IN_ACCESS.
A configuração é tão fácil quanto o cron:
<path> <mask> <command>
Onde:
<path>
é um caminho do sistema de arquivos (cada espaço em branco deve ser precedido por uma barra invertida)<mask>
é uma máscara simbólica (veja inotify.h; use vírgulas para separar símbolos) ou numérica para eventos<command>
é um aplicativo ou script para ser executado nos eventos
Responder4
Se você tem certeza de que deseja ver uma saída grande, você pode usar o auditd. Mas pode causar um loop infinito se você quiser imprimi-lo em um arquivo, pois qualquer acesso a um arquivo significaria imprimir isso em seu arquivo de log. Imprimir no arquivo de log também é acesso a um arquivo, portanto ele também deve ser impresso no arquivo de log. Por isso tem cuidado.
Mesmo que não haja um loop infinito, a quantidade de dados que será impressa deve ser muito grande. Se você mudar sua pergunta para o que deseja alcançar com esse monitoramento, as pessoas poderão sugerir uma maneira melhor do que registrar o acesso a todos os arquivos.