"sudo -S"를 명시적으로 사용하는 목적은 무엇입니까?

"sudo -S"를 명시적으로 사용하는 목적은 무엇입니까?

sudo 맨페이지에서:

-S, --stdin

표준 오류에 프롬프트를 작성하고 터미널 장치를 사용하는 대신 표준 입력에서 비밀번호를 읽습니다. 비밀번호 뒤에는 개행 문자가 와야 합니다.

sudo -Sjust 대신 사용하는 목적은 무엇입니까 sudo?

  • sudo기본적으로 표준 입력에서 비밀번호를 읽는 것이 맞습니까?

  • "표준 오류에 프롬프트 쓰기"의 목적은 무엇입니까? 기본적으로 sudo표준 출력에 기록됩니까 ?

  • 모두 비밀번호 뒤에 개행 문자가 와야 합니까?

예를 들어,https://stackoverflow.com/a/39553081/156458, sudo -S true비밀번호는 여전히 필요합니다. 그러면 해당 게시물의 원래 문제를 어떻게 해결합니까? 해결책을 찾다가 이 링크를 발견했습니다.쉘 프로필에서 sudo가 필요한 스크립트를 실행해야 합니까?

감사해요.


고쳐 쓰다:

J.Taylor의 답변은 다음과 같습니다.

sudo기본적으로 비밀번호는 표준 입력에서 읽혀지지 않고 터미널 인터페이스에서 읽혀집니다.

구현 관점에서 어떻게 이해하는지 알고 싶습니다.

프로그램이 표준 입력에서 읽을 때 항상 바인딩되는 파일 설명자 0에서 읽습니다. 이것이 맞습니까?

없이 사용할 때 sudo표준 입력을 사용할지 터미널을 사용 할지 알 수 없는 이유는 무엇입니까?sudo-S

프로그램(예: sudo -S)이 표준 입력 대신 터미널에서 읽기를 어떻게 구현할 수 있습니까?

답변1

sudo하다아니요비밀번호 읽기표준 입력기본적으로 - 다음으로 시작합니다.터미널 인터페이스. 를 사용하면 sudo -S다음과 같이 다른 명령/파일에서 비밀번호를 입력할 수 있습니다.printf "yourpassword\n" | sudo -S nano /etc/apt/sources.list

이는 비밀번호를 묻지 않고 sudo에 로그인하기 위해 쉘 스크립트에서 사용할 수 있지만, 쉘에서 직접 이 작업을 수행하지 않도록 주의해야 합니다. 그러면 sudo 비밀번호가 쉘 기록에 남게 됩니다.

관련 정보