Qual é o propósito de usar 'sudo -S' explicitamente?

3

Da manpage do sudo:

-S, --stdin

Write the prompt to the standard error and read the password from the standard input instead of using the terminal device. The password must be followed by a newline character.

Qual é o propósito de usar sudo -S em vez de apenas sudo ?

  • É correto que sudo , por padrão, leia a senha da entrada padrão?

  • Qual é o objetivo de "Escrever o prompt para o erro padrão"? Por padrão, sudo escreve na saída padrão?

  • Ambos exigem que a senha seja seguida por um caractere de nova linha?

Por exemplo, no link , sudo -S true ainda exige a digitação da senha. Como isso resolve a pergunta original? nesse post? Eu encontrei esse link quando eu procurei por solução para Devo executar um script sudo-requerido em algum arquivo de configuração do shell?

Obrigado.

Atualização:

A resposta de J.Taylor disse

sudo does not read the password from stdin by default - it reads it from the terminal interface.

Eu queria saber como entender isso em termos de implementação.

É correto que quando um programa lê a partir da entrada padrão, ele leia o descritor de arquivo 0 para o qual a entrada padrão é sempre ligada?

Por que não posso saber se sudo usa entrada padrão ou terminal ao usar sudo sem -S ?

Como um programa (como sudo -S ) consegue ler do terminal em vez da entrada padrão?

    
por Tim 01.04.2018 / 01:43

1 resposta

8

sudo não lê a senha de stdin por padrão - lê da interface de terminal . Usar sudo -S permite que você envie a senha a partir de outro comando / arquivo assim: printf "yourpassword\n" | sudo -S nano /etc/apt/sources.list

Isso pode ser usado em um script de shell para efetuar login no sudo sem ser solicitada uma senha, mas você precisa ter cuidado para não executar esse tipo de coisa diretamente do shell, porque sua senha sudo estaria no histórico da shell.

    
por 01.04.2018 / 02:49

Tags