Quando faço login via ssh em um servidor Linux (Ubuntu), percebo que todos os comandos bash executados por outros usuários no servidor são salvos no histórico de comandos. Existe uma maneira que me permita ocultar os comandos que digitei na linha de comando de outros usuários no servidor?
Responder1
Há muitas maneiras de ocultar seu histórico de comandos, mas é uma má ideia desativá-lo completamente, pois é muito útil. Aqui estão três boas maneiras de desligá-lo temporariamente.
Solução mais rápida: Tipo
unset HISTFILE
Isso impedirá que todos os comandos executados na sessão de login atual sejam salvos no arquivo .bash_history quando você efetuar logout. Observe que HISTFILE será redefinido na próxima vez que você fizer login, então o histórico será salvo normalmente. Além disso, observe que isso removetodoscomandos da sessão, incluindo aqueles executados antes de você digitar unset HISTFILE, que pode não ser o que você deseja. Outra desvantagem é que você não pode ter certeza de que fez tudo certo até sair, pois o bash ainda permitirá que você use a seta para cima para ver os comandos anteriores.
Melhor solução: digite um espaço antes de um comando
Experimente e clique na seta para cima para ver se foi adicionado ao seu histórico. Alguns sites já o possuem configurado para que tais comandos não sejam salvos. Se não funcionar, adicione a linha
export HISTCONTROL=ignoreboth
ao seu arquivo .bashrc. Quando você fizer login no futuro, os comandos que começam com um espaço serão esquecidos imediatamente.Mais fácil de lembrar: Tipo
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 pessoa que olhar 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é dizer ao bash quais comandos nunca lembrar (HISTIGNORE). Veja a página de manual do bash(1) e pesquise HIST para ver muitas possibilidades.
Responder2
O histórico da linha de comando para bash
sessões shell é armazenado no ~/.bash_history
arquivo. 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 bash
salvos neste arquivo definindo a HISTFILESIZE
variável de ambiente. Definir como zero truncará o arquivo de histórico para tamanho zero. O padrão é 500. Desativar a variável HISTFILE
( unset HISTFILE
) também impedirá o armazenamento de comandos no arquivo de histórico.
No entanto, a configuração atual do servidor que você está descrevendo (nos comentários) está simplesmente errada.
Não deve haver motivo para permitir que vários usuários façam login e usem um shell interativo na root
conta. Considere usar sudo
, em vez disso, com várias contas de usuário privadas!
O histórico de comandos do root
, seja para sessões interativas ou ao usar o sudo
, é extremamente precioso,especialmentese você tiver vários usuários com root
acesso no sistema.
Sua equipe vai querer saberexatamenteo que o root
usuário tem feito desde que quaisquer configurações incorretas ou outros contratempos executados por esse usuário 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 sudo
utilitário também registra cada chamada no recurso syslog por esse motivo, com carimbos de data e hora e linha de comando completa, e com o nome de usuário do usuário que está executando o sudo
.
EDITAR: Recentemente, começamos a ter problemas com uma rede de fibra em um cluster de máquinas Linux em funcionamento. Descobriu-se que alguns drivers ou outros foram substituídos pela versão errada quando um usuário bobo com sudo
acesso fez uma atualização de pacote descuidada. Conseguimos descobrir isso observando os logs do sistema e os sudo
carimbos de data e hora neles contidos. O "usuário bobo" acabou por ser ninguém além de mim!
Responder3
Emita o seguinte comando após fazer login:
HISTFILE=
Isso impedirá que quaisquer comandos subsequentes sejam registrados no arquivo de histórico.