Nossa pequena empresa executa um Ubuntu Server 11.10, ao qual algumas pessoas têm acesso SSH. Às vezes, os terminais reais também são usados. Como podemos registrar localmente todos os comandos do Bash executados, junto com o usuário e a hora?
Podemos assumir que ninguém é nefasto e está tentando evitar ativamente o log, mas ainda assim preferimos que os usuários não tenham acesso direto à gravação em seus arquivos de log. As sessões simultâneas devem ser tratadas corretamente.
PROMPT_COMMAND
ou executando em um shell que não seja do bash.Um sistema de contabilidade de processo pode ser útil nesse sentido, particularmente o pacote acct que fornece os comandos lastcomm e ac.
Os comandos ac imprimem estatísticas sobre o tempo de conexão dos usuários, em horas. Esta é a quantidade de tempo que o usuário foi conectado ao sistema, remotamente via SSH ou um terminal serial ou enquanto estiver no console.
O comando lastcomm exibe informações sobre os comandos executados anteriormente. As entradas mais recentes são fornecidas no topo da lista. Também é exibida a quantidade total de tempo de CPU que cada processo usou.
Um tutorial antigo que pode ser útil está aqui:
http://www.linuxjournal.com/article/6144?page=0,1
Outros comandos de contabilidade como last e assim por diante podem ser encontrados neste tutorial:
http://www.techrepublic.com/article/system-accounting-in-linux/1053377
fonte
Você poderia usar snoopy .
O registrador Snoopy pode se adequar bem ao seu objetivo. Não se destina a ser uma solução de log inevitável, mas sim uma ferramenta útil para administradores diligentes que preferem acompanhar suas próprias ações.
Divulgação: Eu sou mantenedor do Snoopy.
fonte
Você pode encontrar aqui um script para registrar todos os comandos / built-ins do bash em um arquivo de texto ou syslog servidor sem usar um patch ou uma ferramenta executável especial.
Muito fácil de implantar, pois é um shell script simples que precisa ser chamado uma vez na inicialização do bash .
É gratuito e espero que atenda às suas necessidades.
fonte
Para cuidar de várias sessões que não sobrescrevem o arquivo de histórico, você deverá colocar "shopt -s histappend" em um arquivo de inicialização do Bash. Veja, também esta pergunta sobre o mesmo problema.
fonte
tente isso (as soluções acima não funcionarão 100% com o bash 4.3):
isso faz o registro E evita o registro de registros de data e hora usados para o arquivo de histórico do bash. a armadilha é necessária, pois 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)
fonte
Você também pode tentar instalar o acct. A Acct mantém uma trilha de auditoria detalhada do que está sendo feito em seus sistemas Linux.
fonte