Comandos de log executados por shell scripts remotos

1

Tenho notado que, ao executar um script que se conecta a vários de nossos servidores (para executar essencialmente comandos em lote), os comandos não são registrados nos arquivos .sh_history ou .bash_history do usuário. Existe um lugar onde isso é registrado (supondo que o script em si não está fazendo o registro e eu não estou tee'ing a saída em qualquer lugar)?

Eu estou falando especificamente sobre o AIX, mas eu suponho que esta questão se aplica a todos os sabores * nix. Obrigado!

    
por Dan Wolfe 16.11.2012 / 16:44

1 resposta

3

Os arquivos de histórico. * _ são modificados quando você executa um shell interativo. No seu caso, um servidor remoto efetua login nessa caixa, executa um script e sai do processo, mas não invoca um shell interativo. Portanto, não há registro de comandos.

Mesmo que este não seja um servidor remoto, pense na situação abaixo:

Você está no prompt do shell e executa esses comandos em sucessão

# ls -l
# grep $(whoami) /etc/passwd
# netstat -rn

e quando você olhar para o histórico do shell, verá esses comandos lá. Agora, coloque todos os 3 comandos em um shell script e nomeie-o como "collect_data.sh", chmod-lo para torná-lo executável e execute-o emitindo     # ./collect_data.sh

quando você olha para trás em seu histórico de shell, o que você vê? Esses três comandos ou apenas ./collect_data.sh ? Eu aposto dólares em seu bolso, que é o último.

Quando você invoca um script de shell, independentemente de ser feito local ou remotamente, você está criando um sub-shell, no qual os comandos são executados. Esses shells, não sendo interativos, não têm como gravar em seu (s) arquivo (s) de histórico. É claro que isso é o mesmo que recompilar o seu executável shell de uma maneira estranha para permitir tal atividade, mas por que alguém faria isso?

Desde que você fez esta pergunta, tenho a impressão de que você está pensando que algo sinistro pode estar acontecendo por alguém executando comandos remotos sem que você saiba sobre eles. Se este for o caso, você precisa da ajuda de algo como um tripwire ou similar, auditando os aplicativos. Apenas observando a história da shell, até mesmo comandos existiam lá, você não pode provar nada.

Espero que isso ajude

    
por 16.11.2012 / 16:57