tty에서 비밀번호 피드백을 활성화할 수 있나요?

tty에서 비밀번호 피드백을 활성화할 수 있나요?

몇 주 전에 나는 키보드를 정리하기로 결정하고 키보드를 다시 보드에 놓는 동안 몇 개의 키를 엉망으로 만들었습니다. 결과적으로 특정 문자를 입력하기가 매우 어려워졌습니다. 아마도 그 중 일부를 비밀번호에 사용한 것 같습니다.

물론 키보드를 교체할 계획이지만 그동안 tty에서 하루에 4~5번의 로그인 시도를 해야 한다는 것이 신경이 쓰이기 시작했습니다(저는 데스크톱 관리자를 사용하지 않습니다).

pwfeedbackconfig 에서 이것을 설정하여 이 문제를 어느 정도 완화 했습니다 sudo. 이를 통해 키보드가 문자를 건너뛸 때 "볼" 수 있습니다. 하지만 비슷한 agetty조합 옵션을 찾을 수 없습니다 login.

tty 로그인 프롬프트에 대한 비밀번호 피드백을 활성화하는 방법이 있습니까?

답변1

자, 소스코드를 살펴보도록 하겠습니다!

util-linux내 로그인 프롬프트가 나타나면 login프로그램이 이를 처리하고 있는 것입니다. 시작하자거기, 보다 구체적으로는login-utils/login.c문서.

이제 프롬프트 login에 대한 책임이 있는 것 같습니다 .loginloginpam_get_promptPAM에 등록하세요.init_loginpam. 이것loginpam_auth그런 다음 해당 기능이 인계되고 제어권이 PAM에 부여됩니다.pam_authenticate기능. 이는 login사용자 이름 프롬프트만 정의하고 그 이상은 정의하지 않음을 의미합니다.

PAM의 경우: 우리가 관심을 갖고 있는 일은 분명히 다음과 같이 일어났습니다.pam_authenticate:

pam_authenticate 함수는 사용자를 인증하는 데 사용됩니다. 인증 서비스에 따라 사용자는 인증 토큰(보통 비밀번호뿐 아니라 지문)을 제공해야 합니다.

섀도우 기반 인증( /etc/passwd, /etc/shadow)은 이제 이 모듈에서 처리됩니다 pam_unix. 내 배포판(Arch)은 다음을 통해 PAM을 제공합니다.pam패키지는 우리의 여행이 계속될 것임을 의미합니다.linux-pam.org그리고소스 코드.modules/pam_unix/pam_unix_auth.c좋은 출발점인 것 같습니다. PAM 모듈은 우리가 발견한 기능을 통해 pam_sm_authenticate인증 메커니즘을 제공합니다.여기. 비밀번호(또는 "인증 토큰", 위 참조)는 다음을 통해 얻습니다.전화PAM에게pam_get_authtok기능. 그것은에있다security/pam_ext.h헤더 파일이 바로 우리가 다음에 갈 곳입니다.

extern int PAM_NONNULL((1,3)) 
pam_get_authtok (pam_handle_t *pamh, 
                 int item, 
                 const char **authtok, 
                 const char *prompt);

이러한 주장 중 어느 것도 너무 유망하지는 않지만 음... 보자정의. 매개변수 와 for가 pam_unix전달되었으므로 다음과 같이 끝납니다.NULLpromptPAM_AUTHTOKitem여기. 이제 하드 코딩은 PAM_PROMPT_ECHO_OFF나 에게 좋지 않습니다 pam_prompt...

retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &resp[0], "%s", PROMPT);

그런데 비밀번호 PROMPT도 하드코딩되어 있습니다(여기), 그래서 좀 더 이국적인 비밀번호 프롬프트에 대한 내 꿈은 파선이 되었습니다... 어쨌든, 한 번 살펴보겠습니다pam_prompt기능. 나타나는 실제 프롬프트는 다음과 같습니다.여기, PAM이 대화 함수를 호출하고 몇 개의 행을 가져오는 경우이상. 빨리 살펴보세요pam_get_itempam_set_item기능은 우리에게 다음을 소개합니다.pam_conv구조 정의여기.

이제 기본 PAM 세션 기능에 대한 정보를 찾는 것이 예상보다 훨씬 어렵습니다. 내가 보는 모든 구조는 아직 초기화되지 않았으며 pam_unix자체 구조가 정의되지 않은 것 같습니다. 하지만 난 보편성을 찾았어misc_convPAM_PROMPT_ECHO_OFF전달 되는 함수read_string그리고...여기PAM이 입력 피드백을 비활성화하는 곳입니다.

결론적으로:비밀번호 피드백은 하드코딩되지 않습니다. 정말 끔찍해요. 약간의 파기가 나를 얻었습니다.이 GitHub 문제그리고이 아치 BBS 테마. 확실히,이 기능을 사용할 수 있습니다PAM이 인증 표준이 아니었던 시절. 보안 등 모든 것을 더 이상 구현하지 않는 것이 합리적이라고 생각합니다. 하지만 옵션이 있으면 좋을 것입니다.

어쨌든, 방금 새 키보드를 주문했습니다.

관련 정보