아래는 Linux에서 bash에서 사용자를 만들기 위해 수행 한 프로세스 이미지입니다.
보안을 위해 비밀번호를 표시해서는 안된다는 것을 이해하지만, 별표 (또는 입력 한 문자)가 나타나지 않는 이유는 무엇입니까?
아래는 Linux에서 bash에서 사용자를 만들기 위해 수행 한 프로세스 이미지입니다.
보안을 위해 비밀번호를 표시해서는 안된다는 것을 이해하지만, 별표 (또는 입력 한 문자)가 나타나지 않는 이유는 무엇입니까?
답변:
그것이 우리가 * nix 땅에서 일하는 방식이기 때문입니다. :) 별표를 표시하지 않으므로 약간의 추가 보안을 제공합니다. 이렇게하면 화면을 보는 사람이 암호 길이를 볼 수 없습니다.
그러나 암호를 입력 할 때, 특히 키보드가 잘못되었을 때 피드백을받지 않으면 조금 무섭다는 점을 인정해야합니다. 따라서 * nix 시스템의 대부분의 GUI 비밀번호 대화 상자는 별표 또는보다 일반적으로 사용하는 것과 같은 일종의 피드백을 제공합니다. 그리고 일부는 입력 할 때 각 문자를 표시하지만 즉시 a *
또는 ⬤로 바꾸지 만 누군가가 어깨 너머로 보이는 경우에는 좋지 않습니다. 또는 컴퓨터에서 모니터로 전송되는 비디오 신호를 픽업 및 디코딩 할 수있는 장치가있는 경우.
stty -echo
사용자 입력을 숨기는 가장 간단한 방법은 무엇입니까?
표시하지 않습니다!
입력 할 때 비밀번호를 숨기는 것은 오래된 전통입니다. 대부분의 상황에서 보안 관점에서 의미가 있습니다. 누군가가 당신의 어깨 너머로보고 있다면, 입력 한 내용을 쉽게보고 싶지 않습니다. ( 1 2 3 4 5와 같은 일부 최신 보안 지침 은 암호를 표시하는 옵션을 권장합니다. 사용자가 더 복잡한 암호를 선택할 수 있고 보이지 않는 시간을 수정하지 않을 것이라는 확신을 가질 수 있기 때문입니다. 가장 큰 위험은 어깨 서핑이 아니라 무차별 대대적 인 추측이며 오프라인 일 가능성이 있습니다.)
암호를 숨겨야한다고 결정한 후, 구현 자들은 암호를 어떻게 사용할 것인지 결정해야했습니다. 단말기에는 사용자 입력이 표시되는 모드 (에코 온)와 사용자 입력이 표시되지 않는 모드 (에코 오프)가 있습니다. 에코 오프 모드는 어떤면에서 본질적으로 존재합니다. 즉 터미널이 사용자 입력을 에코하는 추가 작업을 수행하지 않는 모드입니다. 이 모드는 키를 입력해도 해당 문자가 삽입되지 않고 대신 해당 키에 바인딩 된 일부 응용 프로그램 바로 가기를 호출하는 응용 프로그램에도 존재해야합니다. 따라서 passwd
암호를 읽는 동안 터미널을 에코 오프 모드로 설정하는 것과 같은 명령 이 있습니다.
각 문자에 별표를 인쇄하면 passwd
명령 구현자가 느끼지 않는 비교적 작은 이점만으로 추가 구현 작업이 필요합니다 . 별표를 인쇄하기위한 터미널 모드는 매우 특수한 기능이기 때문에 암호를 입력 할 때만 유용합니다.
그건 그렇고, 암호를 변경할 때 암호를 보려면 cat | passwd
적어도 일부 시스템에서 사용할 수 있습니다 (일부 버전의 passwd
경우 옵션 이 필요 cat | passwd --stdin
하고 일부는 전혀 허용하지 않습니다). ( { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd
하지만 할 수는 있지만 그렇게하지 마십시오 : 암호가 쉘 기록에 저장되어 누출 위험이 훨씬 큽니다.) 무엇보다 터미널에서 암호를 읽는 명령을 사용하여 암호를 정렬합니다. 이들 표준 입력과 같은 sudo
또는 ssh
더 복잡하다; 사용 가능한 GUI가있는 경우 ssh-askpass를 사용하여 입력 한 문자 수를 표시 할 수 있습니다 ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A
sudo의 경우 ssh의 경우 터미널에서 호출 할 때 복잡함).
암호 길이를 다른 사람이 볼 수 없으므로 암호를 보이지 않게하면 암호가 더 안전 해집니다. 이렇게하면 다른 사람이 비밀번호를 추측하여 계정에 로그인 할 위험이 없습니다.