나는 bash 쉘 프롬프트에서 사용자가 암호를 입력하고 그 암호가 프로그램에 stdin의 일부가되도록하는 (1) 가장 안전하고 (2) 가장 간단한 방법을 찾고 있습니다.
이것은 stdin이 다음과 같이 보일 것입니다 : {"username":"myname","password":"<my-password>"}
, <my-password>
쉘 프롬프트에 입력 된 곳 은 어디 입니까? 프로그램 stdin을 제어했다면 암호를 안전하게 입력하라는 메시지를 표시하고 제자리에 넣을 수 있지만 다운 스트림은 표준 범용 명령입니다.
다음을 사용하는 접근법을 고려하고 거부했습니다.
- 명령 행에 비밀번호를 입력 한 사용자 : 비밀번호가 화면에 표시되고 "ps"를 통해 모든 사용자에게 표시됩니다.
- 외부 프로그램에 대한 인수로 쉘 변수 보간 (예 :)
...$PASSWORD...
: 비밀번호는 여전히 "ps"를 통해 모든 사용자에게 표시됩니다. - 환경 변수 (환경에 남아있는 경우) : 모든 하위 프로세스에서 비밀번호를 볼 수 있습니다. 신뢰할 수있는 프로세스조차도 진단의 일부로 코어 또는 덤프 환경 변수를 덤프하면 비밀번호가 노출 될 수 있습니다.
- 긴밀한 권한을 가진 파일조차도 파일에 장기간 저장된 암호 : 사용자가 실수로 암호를 노출하고 루트 사용자가 실수로 암호를 볼 수 있음
현재 솔루션을 아래 답변으로 제시하지만 누군가가 해결책을 찾으면 더 나은 답변을 선택합니다. 더 간단한 것이 있거나 누군가 내가 놓친 보안 문제를 볼 수 있다고 생각합니다.