Você examinou o auditd? Se não, veja este slideshow sobre o sistema de auditoria do Linux. Ele fornece a maioria das instalações que você está descrevendo e de uma forma muito mais padronizada e à prova de erros.
Estou escrevendo um programa que rastreia atividades de usuários e basicamente tenta automatizar coisas que podem ser.
Atualmente, estou tentando monitorar programas que o usuário usa com frequência na linha de comando. Mas apenas saber não é suficiente, eu preciso de dados ao longo das linhas de quando tal comando foi executado, diretório de trabalho, etc.
Minha solução atual é um conjunto de scripts python, que na inicialização, passam pelo PATH e fazem um script python simulado para cada programa encontrado no PATH. Quando o usuário tenta usar esses comandos, esses scripts são chamados (com o prefixo do caminho para script, para o PATH), cada um desses scripts passa seu nome e argumentos para outro script que registra as informações e, em seguida, chama o que foi originalmente digitado. o terminal (alterando o PATH). É uma solução bastante confusa. Tenho certeza de que há uma maneira simples de fazer isso.
Além disso, é ótimo se eu pudesse obter os dados dos comandos sendo executados em tempo real (ou quase real).
Você examinou o auditd? Se não, veja este slideshow sobre o sistema de auditoria do Linux. Ele fornece a maioria das instalações que você está descrevendo e de uma forma muito mais padronizada e à prova de erros.
Tags monitoring logs linux