`sudo`는 TTY를 어떻게 찾나요?

`sudo`는 TTY를 어떻게 찾나요?

Bash 4에서 다음 명령을 실행하면 sudo비밀번호를 묻는 메시지가 표시됩니다.

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

(비밀번호를 로 전송하는 데 관심이 없습니다 sudo. 이는 문제 해결 중에 발견한 동작을 보여줍니다.)

내가 이해하는 바에 따르면 TTY 감지는 표준 입력의 파일 설명자를 확인하여 작동합니다. 이 tty프로그램은 다음을 지원합니다.

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

...하지만 sudo다른 메커니즘이 사용되는 것 같습니다. setsid원하는 효과가 있으므로 내 생각에는 이것이 세션과 관련이 있는 것 같습니다.

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

그래서 당신은 무엇 때문에 바쁘나요 sudo?

답변1

/dev/ttyJeff Schaller가 매크로를 사용하여 언급한 것처럼 열리며 _PATH_TTY, 제어 터미널이 무엇인지에 관계없이(있는 경우) 제어 터미널에 대한 액세스를 제공합니다. 바라보다현재 제어 터미널과 `/dev/tty` 사이의 관계는 무엇입니까?더 알아보기.

관련 정보