A melhor coisa a fazer seria ativar a auditoria, que permitirá gravar todos os comandos, independentemente do shell usado.
O Bash 4.1 é capaz de registrar o histórico no syslog. No entanto eu não consigo fazer isso funcionar no FreeBSD 8.
Eu tentei re-compilar bash de portas com -DWITH_SYSLOG=
, mas sem sucesso. Alguém já conseguiu fazer o log funcionar no FreeBSD? Como sobre o Linux?
tente isto:
export HISTTIMEFORMAT="%Y-%m-%d %T "
export PROMPT_COMMAND='trap "" 1 2 15; history -a >(tee -a ~/.bash_history | while read line; do if [[ $line =~ ^#[0-9]*$ ]]; then continue; fi; logger -p user.info -t "bash[$$]" "($USER) $line"; done); trap 1 2 15;'
isso faz o registro E evita o registro de registros de data e hora que são usados para o arquivo de histórico do bash. O trap é necessário, já que o bash enviará os sinais para o "subjob" depois de pressionar strg + c várias vezes (testado com o bash 4.3). isso forçará o logout do usuário atual (por exemplo, logado com o sudo)