Como registrar cada comando digitado no bash e toda operação de arquivo

4

Eu gostaria de registrar todos os comandos digitados no bash (por raiz ou usuário), bem como todas as operações de arquivos.

A ideia é que eu poderia escrever ferramentas que pudessem interrogar esse arquivo de log e fornecer informações muito úteis.

Por exemplo, seria ótimo listar todos os comandos já digitados, um por linha, com "- - -" para intervalos de tempo de 8-24h e "= = = por exemplo, 24 de junho de 2014 = ==" para > . Se ele também eliminou duplicatas dentro de uma sessão "= = = ..." ainda melhor!

Isso significa que sempre que eu executar alguma tarefa como "atualizar flask / mod_wsgi / apache para o Python 3.x", um registro é deixado para trás, uma pista que eu posso pegar se eu tiver que fazer a mesma coisa seis meses depois .

Para o mesmo fim, seria muito bom ver quais mudanças no sistema de arquivos ocorreram após a instalação de um pacote em particular. Isso me informaria onde os arquivos de configuração foram colocados.

PS Estou no Ubuntu 14.04

    
por P i 05.06.2015 / 19:22

1 resposta

6

Isso não é tão abrangente quanto a contabilidade real, e pode ser desfeito facilmente por um usuário, mas supondo que não precise ser um sistema de contabilidade real e que tanto o BASH quanto o rsyslog estejam em uso, edite o sistema em todo o sistema. Arquivo BASH RC:

sudo -e /etc/bash.bashrc

Anexar ao final desse arquivo:

export PROMPT_COMMAND='RET_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RET_VAL]"'

Acima, logger registra o valor de retorno de tempo, usuário, comando e comando. Configure o registro para "local6" com um novo arquivo:

sudo -e /etc/rsyslog.d/bash.conf

E o conteúdo ...

local6.*    /var/log/bash_commands.log

Reinicie o rsyslog:

sudo service rsyslog restart

Faça logout. Log in. Rotação de log:

sudo -e /etc/logrotate.d/rsyslog

Existe uma lista de arquivos de log para girar da mesma maneira ...

/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message

Adicione o novo arquivo de log do bash-commands nessa lista:

/var/log/bash_commands.log

Salve e reinicie / recarregue o rsyslog. (A rotação acabará substituindo os arquivos de log, portanto, mais pensamento ou configuração podem ser necessários.)

Para ver todos os arquivos que um pacote instalou:

dpkg-query -L [package_name]

Assim, você pode executar algo assim quando instala o software.

dpkg-query -L abc-package > /var/log/files_abc-package.log
    
por 05.06.2015 / 19:47

Tags