비밀번호 변경 시 비밀번호 복잡성 테스트를 어떻게 변경/비활성화하나요?

비밀번호 변경 시 비밀번호 복잡성 테스트를 어떻게 변경/비활성화하나요?

나는 그것이 "나쁜" 생각이라는 것을 알고 있고, 그것이 안전하지 않다는 것도 알고 있습니다. 나는 대답을 찾기 위해 인터넷을 검색했고 내가 본 것은 좋지 않다고 징징거리는 것뿐이었습니다. 하지만 나는 내가 원하고 사용하고 싶은 시스템을 만들 수 있기 때문에 Linux를 사용하는 것을 좋아합니다. 소개 끝.

비밀번호를 변경하려고 합니다.

user:~% passwd
Changing password for user.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
You must choose a longer password

시도하면 sudo passwd user원하는 비밀번호를 설정할 수 있으므로 시스템에서 passwd에 대한 비밀번호 복잡성 검사가 필요하지 않습니다.

인터넷 검색 후 나는 있어야한다는 것을 발견했습니다.비밀번호의 복잡성을 테스트하고 구성할 수 있는 모듈 pam_cracklib입니다. 하지만 내 PAM 비밀번호 설정에는 pam_cracklib이 포함되어 있지 않습니다.

% cat /etc/pam.d/passwd | grep '^[^#]'
@include common-password
% cat /etc/pam.d/common-password | grep '^[^#]'
password    [success=1 default=ignore]  pam_unix.so obscure sha512
password    requisite           pam_deny.so
password    required            pam_permit.so
password    optional    pam_gnome_keyring.so 

제 생각에는 pam_unix가 이 테스트를 하는 것 같습니다... 이런... 여러분, 제가 이 문장을 쓰는 순간 깨달음을 얻었고 man pam_unixpam_unix 모듈에 필요한 옵션을 찾은 터미널에 입력했습니다.

방금 옵션 obscure를 제거하고 minlen=1을 추가했는데 이제 만족스럽습니다. 이제 다음 줄이 있습니다 /etc/pam.d/common-password.

password    [success=1 default=ignore]  pam_unix.so minlen=1 sha512

어떤 비밀번호든 설정할 수 있어요.

나는 이 솔루션이 필요할 수도 있는 사람들을 위해 이 게시물을 유지하기로 결정했습니다.

답변1

네, 제 질문에 답변해 드리겠습니다 :)

pam_unix모듈이 비밀번호 복잡성 검사를 수행하고 구성할 수 있다는 것을 발견했습니다 .

man pam_unix:

   minlen=n
       Set a minimum password length of n characters. The default value is
       6. The maximum for DES crypt-based passwords is 8 characters.

   obscure
       Enable some extra checks on password strength. These checks are
       based on the "obscure" checks in the original shadow package. The
       behavior is similar to the pam_cracklib module, but for
       non-dictionary-based checks.

해결책:
pam_unix파일 의 모듈 행을 /etc/pam.d/common-password다음과 같이 변경합니다.

password    [success=1 default=ignore]  pam_unix.so minlen=1 sha512

최소 길이 1의 비밀번호를 설정할 수 있습니다.

답변2

일회성인 경우 루트로 passwd 명령을 사용하면 원하는 값을 입력하여 사용자에 대한 간단한 비밀번호를 설정할 수 있으며 프롬프트에 비밀번호를 두 번 입력할 수 있습니다.

john@workpad:~$ sudo bash
[sudo] password for john: 
root@workpad:/home/john# passwd john
New password: 
Retype new password: 
passwd: password updated successfully
root@workpad:/home/john# exit
exit
john@workpad:~$ 

답변3

편집할 구성 파일 을 엽니다 common-password.

sudo -H gedit /etc/pam.d/common-password

#다음과 같이 문자를 앞에 추가하여 이 줄을 주석 처리합니다 .

#password   [success=2 default=ignore]  pam_unix.so obscure use_authtok try_first_pass sha512

또한 이 줄을 주석 처리합니다. 그렇지 않으면 비밀번호 설정에서 대문자/소문자를 혼합하여 전달하도록 요청합니다.

#password   requisite           pam_passwdqc.so enforce=everyone max=18 min=disabled,8,8,1,1 retry=2 similar=deny

이제 동일한 파일에 다음 줄을 추가하면 됩니다.

password    [success=1 default=ignore]  pam_unix.so minlen=1 sha512

이걸로 해야지...

답변4

나는 조작 방지 PAM을 사용하여 이상하고 매우 엄격한 설치를 갖춘 기계에서 모든 방법을 시도했습니다.

이 시스템에서는 위의 트릭 중 어느 것도 (Windows 도메인이 없는) 로컬 계정의 비밀번호를 새로운 값으로 변경하는 데 도움이 되지 않았습니다. sudo passwd를 사용하는 경우에도 PAM 규칙이 항상 시작됩니다.

/etc/pam.d/common-password를 변경하면 '조작 오류'로 인해 passwd가 모두 실패하게 됩니다.

이에 대한 내 해결책은 루트 액세스 권한이 있는 다른 컴퓨터에 비밀번호를 설정한 다음 sudo vi /etc/shadow 를 사용하여 해당 컴퓨터의 /etc/shadow에서 해시된 값을 다른 컴퓨터로 복사/붙여넣는 것이었습니다. 엄격한 PAM은 이를 차단하지 않았으며 작동합니다. (예, 소금도 복사한다는 것을 알고 있습니다)

관련 정보