echo “” | sudo -S como alternativa ao sudo -n

3

Eu estou no Debian Lenny. Infelizmente, o pacote sudo de fábrica não inclui a opção -n que vem com a versão 1.7 do sudo. Eu realmente gostaria de ter uma maneira de especificar "Se sudo pede uma senha, eu prefiro falhar imediatamente em vez de pendurar em um prompt". Esta alternativa funcionará?

echo "" | sudo -S -u lalala command 
    
por zedoo 13.07.2011 / 21:08

2 respostas

2

Isso só funcionará com certos comandos. Quando precisar de uma senha, o sudo falhará como esperado, de uma maneira um tanto quanto feia. Quando isso não acontecer, no entanto, a nova linha será canalizada para o comando que você está executando com o sudo.

cat funciona bem:

cacheson@segfault:~$ echo "" | sudo -S -u cacheson cat file.txt 
text file

vim não:

cacheson@segfault:~$ echo "" | sudo -S -u cacheson vim file.txt 
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...

Vim: Finished.
    
por 14.07.2011 / 00:25
2

Seu comando terminará lendo também a entrada padrão (como Chris Acheson ). É melhor redirecionar a entrada padrão de volta do terminal.

echo | sudo -S -u lalala sh -c 'command </dev/tty'
    
por 14.07.2011 / 11:49

Tags