Comportamento estranho usando sudo com pipe

0

Quando eu uso o sudo duas vezes em dois comandos canalizados, recebo a seguinte saída:

$ sudo echo 'hello world' | sudo cat
[sudo] password for zoey: [sudo] password for zoey: 

E deve digitar minha senha duas vezes. A primeira vez, está oculta como de costume, mas a segunda é mostrada em texto simples.

$ sudo echo 'hello world' | sudo cat
[sudo] password for zoey: [sudo] password for zoey: 
password123456seven
hello world

Após o comando sair, qualquer coisa que eu digite na linha de comando ficará oculta, como se eu estivesse digitando uma senha, embora as saídas de comando funcionem (principalmente) bem. Esse comportamento continua até que eu feche o terminal.

Eu tentei:

$ echo 'hello world' | sudo cat
$ sudo echo 'hello world' | cat

E ambos parecem ter um comportamento normal.

Eu não quero ter que usar $ sudo bash -c "echo \'hello world\' | cat" , o que parece excessivamente desajeitado, e faria do texto citado um pesadelo para lidar com isso.

Além disso, antes que alguém pergunte, sim, eu sei que echo e cat geralmente não exigem permissões de root.

    
por Zoey Hewll 10.05.2016 / 10:10

1 resposta

1

Não tenho certeza se isso faz você se sentir melhor, mas o que você está observando não ocorre no Ubuntu 16.04. Ocorre no Ubuntu 15.10 (que é o que eu presumo que você esteja usando ... ou talvez algo mais antigo?).

Felizmente, eu tenho uma máquina 16.04 e 15.10 para experimentar. Em 16.04, só preciso digitar a senha uma vez.

Não tenho certeza de onde está a diferença. Acabei de verificar e ambos estão usando a mesma versão do bash (4.3.42). Eu não acredito que existam configurações nos meus arquivos .bash * que estejam alterando o comportamento ...

(Talvez você possa experimentar um disco de boot do Ubuntu 16.04 para confirmar o que estou vendo?)

    
por Ray 10.05.2016 / 11:18