Como o 'sudo' encontra o TTY?

2

Executando o seguinte comando no Bash 4, sudo solicita uma senha:

$ echo '' | sudo true
[sudo] password for mike:

(Não estou interessado em canalizar minha senha para sudo ; esta é uma demonstração de um comportamento que encontrei durante a solução de problemas.)

Tenho entendido que a detecção de TTY ocorre por meio da inspeção de o descritor de arquivo para padrão. O programa tty suporta isso:

$ tty
/dev/pts/26
$ echo '' | tty
not a tty

... mas sudo parece estar usando algum outro mecanismo. setsid tem o efeito pretendido, então meu palpite é que isso está de alguma forma ligado à sessão.

$ setsid sudo true
sudo: no tty present and no askpass program specified

Então, o que é sudo ?

    
por Mike 19.06.2018 / 21:40

1 resposta

2

Ele abre /dev/tty (como mencionado por Jeff Schaller, usando a macro _PATH_TTY ), que fornece acesso ao terminal de controle, o que for, se houver. Veja que relações existem entre meu terminal de controle atual e '/ dev / tty'? para detalhes.

    
por 19.06.2018 / 22:40

Tags