여기서 아무도 명백한 우려를 해결 한 사람이없는 것 같습니다. 퍼팅 sudo은 다음 배포 할 것을 스크립트 내에서하는 것은 나쁜 사용자 습관을 추진하고 있습니다 . ( "사용자 관점에서"언급했기 때문에 배포한다고 가정합니다.)
진실은의 은행의 보안 원칙과 유사 응용 프로그램 및 스크립트 사용에 가이드 라인이있다이다 : 당신을 호출하고 그들은 "은행에서"전화하는거야라고 사람에게 개인 정보를 제공하지 마십시오가 , 어느 존재 비슷한 이유로.
응용 프로그램의 규칙은 다음과 같습니다.
비밀번호가 무엇인지 확실 하지 않은 경우 프롬프트가 표시되면 비밀번호를 입력하지 마십시오 . 이것은 sudo접근 권한 이있는 사람에게는 세 가지로 적용됩니다 .
sudo명령 줄에서 실행했기 때문에 비밀번호를 입력하는 경우 좋습니다. SSH 명령을 실행했기 때문에 입력하는 경우 좋습니다. 물론 컴퓨터에 로그인 할 때 입력하면 좋습니다.
외국어 스크립트 또는 실행 파일을 실행하고 암호를 묻는 메시지가 표시되면 암호를 입력 하면 스크립트가 무엇을하는지 알 수 없습니다 . 그것은 당신이 아는 모든 것을 위해 일반 텍스트로 임시 파일에 저장하고 심지어 자체 정리하지 못할 수도 있습니다.
분명히 알 수없는 명령 집합을 실행하는 것과 관련하여 별도의 추가 문제가 root있지만 여기서 말하는 것은 암호 자체에 대한 보안 을 유지 하는 것 입니다. 응용 프로그램 / 스크립트가 악성이 아니라고 가정하더라도 다른 응용 프로그램이 암호를 잡고 악의적으로 사용 하지 못하도록 암호를 안전하게 처리하기를 원합니다 .
따라서 이것에 대한 나의 개인적인 반응은 루트 권한이 필요한 경우 스크립트에 넣는 가장 좋은 방법은 다음과 같습니다.
#!/bin/bash
[ "$UID" -eq 0 ] || { echo "This script must be run as root."; exit 1;}
# do privileged stuff, etc.
exec호출 자체를 통한 재귀 이지만 동시에 프로세스를 교체하는 것이므로 스크립트의 여러 인스턴스를 생성하지 않습니다.