O Bash não fornece informações que você deseja. Eu acho que você quer evitar a configuração de COMMAND_PROMPT
e histappend
porque os usuários podem substituí-los facilmente. Mas os usuários podem desabilitar completamente o armazenamento de comandos no histórico quando eles configuram HISTCONTROL="ignorespace"
e inserem um espaço antes de cada comando. Portanto, os usuários que não estão dispostos a serem monitorados não podem ser monitorados de forma confiável por meio do histórico bash.
O monitoramento ad hoc de uma única sessão pode ser feito em strace
. Procure o PID do bash do usuário e, em seguida, chame strace -p <bash-pid> 2>&1 |grep "read(0,"
. Você pode ver todos os caracteres digitados pelo usuário - incluindo erros de digitação e comandos de edição.
A maior parte da distribuição linux fornece auditd
package. Ele monitora e audita os componentes do sistema para que o administrador possa obter informações sobre as atividades do sistema no passado. Um módulo PAM pam_tty_audit
coopera com auditd
e ativa ou desativa a auditoria de atividades TTY. Eu acho que você não precisa reinventar roda e usar o pam_tty_audit
.