Como se certificar de que o shell embutido echo é invocado para que não seja visível na lista de processos?

3

Isso será visível na listagem do processo se a linha abaixo for executada a partir de uma linha de comando ou de um script de shell

bash -c "echo $password"

ou

eu só preciso fazer echo $password de dentro do bash em uma linha de comando ou dentro do script de shell bash

existe algum teste que eu possa fazer para verificar essa visibilidade? Eu estava apenas tentando isso, mas não consegui vê-lo na listagem de processos com ps -ef | grep testscript

testscript:

i=0
while (( i < 100 ))
do
((i=i+1))
sleep 1
echo $$
echo hello
uname
done
    
por munish 06.05.2013 / 08:39

2 respostas

5

Apenas force-o a usar o builtin:

builtin echo foo

Se echo não for incorporado, isso falhará.

    
por 06.05.2013 / 09:27
4

Os argumentos para um builtin nunca aparecerão em qualquer ps output, porque o builtin não é um programa separado com sua própria linha de comando. Todos os shells modernos (exceto algumas configurações altamente despojadas do BusyBox), incluindo todas as versões bash, possuem echo embutido.

Se você estiver chamando bash -c "echo $password" , a senha será exibida para todos, porque ela está incorporada no comando que você executa com bash . Chamar um shell apenas para chamar seu comando echo é inútil, portanto, esperamos que você não esteja fazendo isso.

Não há problema em colocar a senha em uma variável de ambiente, se você precisar passá-la para um processo diferente. Ao contrário dos argumentos de linha de comando, as variáveis de ambiente não são expostas a outros usuários no Linux e na maioria dos outros unices.

    
por 07.05.2013 / 03:37