Esconde o histórico de comandos de outros usuários em um servidor Linux

2

Quando efetuo login via ssh em um servidor Linux (Ubuntu), noto que todos os comandos bash executados por outros usuários no servidor são salvos no histórico de comandos. Existe uma maneira que poderia me permitir ocultar os comandos que eu digitei na linha de comando de outros usuários no servidor?

    
por rmb 27.06.2016 / 09:14

3 respostas

3

Existem muitas maneiras de esconder seu histórico de comandos, mas é uma má idéia desativar completamente o histórico, pois é muito útil. Aqui estão três boas maneiras de desativá-lo temporariamente.

  1. Solução mais rápida : digite unset HISTFILE

    Isso impedirá que todos os comandos executados na sessão de login atual sejam salvos no arquivo .bash_history quando você fizer logout. Observe que o HISTFILE será redefinido na próxima vez que você fizer login, portanto, o histórico será salvo como de costume. Além disso, observe que isso remove os comandos all da sessão, incluindo os executados antes de você digitar unset HISTFILE, o que pode não ser o que você deseja. Outra desvantagem é que você não pode ter certeza de que fez isso direito até que você faça o logout, pois o bash ainda permitirá que você use a seta para cima para ver os comandos anteriores.

  2. Melhor solução : digite um espaço antes de um comando

    Experimente e, em seguida, pressione a seta para cima para ver se foi adicionado ao seu histórico. Alguns sites já configuraram para que esses comandos não sejam salvos. Se isso não funcionar, adicione a linha export HISTCONTROL=ignoreboth ao seu arquivo .bashrc. Quando você fizer login no futuro, os comandos que começarem com um espaço serão imediatamente esquecidos.

  3. Mais fácil de lembrar : digite sh

    Isso iniciará um subshell com o shell Bourne original. Quaisquer comandos escritos nele (até você exit ) não serão salvos em seu histórico. Qualquer um que olhar para o seu arquivo de histórico poderá ver que você executou sh (o que é suspeito), mas não verá o que você executou depois disso.

Existem muitas outras maneiras de fazer isso. Você pode até mesmo dizer bash quais comandos nunca lembrar (HISTIGNORE). Veja a man page de bash (1) e procure por HIST para ver muitas possibilidades.

    
por 27.06.2016 / 16:20
3

O histórico da linha de comando para bash de sessões de shell é armazenado no arquivo ~/.bash_history . Se este arquivo não existir, ele será criado sem permissões de leitura para outros usuários.

Você pode alterar o número de comandos que bash salva nesse arquivo, definindo a variável de ambiente HISTFILESIZE . A configuração para zero truncará o arquivo de histórico para tamanho zero. O padrão é 500. Desativar a variável HISTFILE ( unset HISTFILE ) também evita o armazenamento de comandos no arquivo de histórico.

No entanto, a configuração atual do servidor que você está descrevendo (nos comentários) é simplesmente errada.

Não deve haver razão para permitir que vários usuários efetuem login e usem um shell interativo na conta root . Considere usar sudo , com várias contas de usuário privadas!

O histórico de comandos para root , seja para sessões interativas ou quando usar sudo , é extremamente precioso, especialmente se você tiver vários usuários com root access no sistema.

A sua equipa vai querer saber exactamente o que o utilizador root tem feito desde que quaisquer erros de configuração ou outros percalços executados por este utilizador devem ser melhor investigados e corrigidos. Com um histórico de linha de comando, fica muito mais fácil descobrir por que algo deu errado. O utilitário sudo também registra cada chamada para o recurso de syslog por esse motivo, com registros de data e hora e com a linha de comando completa, e com o nome de usuário do usuário executando sudo .

EDIT : Recentemente, começamos a ter problemas com uma rede de fibra em um cluster de máquinas Linux no trabalho. Descobrimos que alguns drivers ou outros foram substituídos pela versão errada quando um usuário bobo com sudo access fez um upgrade de pacote imprudente. Conseguimos encontrá-lo através da análise dos logs do sistema e dos timestamps sudo . O "usuário bobo" acabou sendo ninguém mais do que eu!

    
por 27.06.2016 / 10:21
1

Emita o seguinte comando após o login:

HISTFILE=

Isso impedirá que qualquer comando subseqüente seja registrado no arquivo de histórico.

    
por 27.06.2016 / 11:39