Gnu/Linux에서 비밀번호 제약 조건을 설정하는 방법

Gnu/Linux에서 비밀번호 제약 조건을 설정하는 방법
  1. 하나 이상의 소문자가 포함되어 있습니다.
  2. 최소한 하나의 숫자를 포함하며 첫 번째와 마지막 위치를 제외한 모든 위치에 있을 수 있습니다.
  3. 여기에는 첫 번째와 마지막 위치를 제외한 모든 위치에 있을 수 있는 특수 문자(영숫자가 아닌 문자, 즉 기호)가 하나 이상 포함되어 있습니다.
  4. 사용자 ID에는 두 개 이상의 문자 시퀀스가 ​​포함되어 있지 않습니다.
  5. 이는 사용자 ID의 반전이 아니며, 사용자 ID의 반전을 포함하지도 않습니다.
  6. 이전 선택 항목이나 지정된 비밀번호의 세 개 이상의 문자 시퀀스를 포함하지 않습니다.
  7. 비밀번호에 2개 이상의 문자(예: a39tzb39r)가 두 번 이상 포함되지 않습니다.
  8. 3개 이상의 반복되거나 연속된 숫자 또는 문자의 시퀀스를 포함하지 않습니다(예: ax222rm, ct15mnoRx).

개별적으로 테스트할 수 있는 명령을 알려주세요.

답변1

정규식으로 해보세요

1- 하나 이상의 소문자가 포함되어 있습니다.

[AZ]

2- 첫 번째와 마지막 위치를 제외한 모든 위치에 있을 수 있는 숫자가 하나 이상 포함되어 있습니다.

.[0-9].

3- 첫 번째와 마지막 위치를 제외한 모든 위치에 있을 수 있는 특수 문자 ID가 하나 이상 포함되어 있습니다.

.[^a-z0-9A-Z].

4- 사용자 ID에 두 개 이상의 문자가 포함되어 있지 않습니다.

ID의 2자마다(하지만 ID가 숫자이므로 사용자 이름(전체 이름과 비교)을 의미하는 것 같습니다) ((?!$U).)

5- 사용자 ID의 반전이 아니며 사용자 ID의 반전을 포함하지도 않습니다.

U=&(whoami | tac) ((?!$U).)

6- 이전 선택 항목이나 지정된 비밀번호에서 3개 이상의 문자가 연속적으로 포함되어 있지 않습니다.

#4와 동일

7- 비밀번호에는 2개 이상의 문자 시퀀스가 ​​두 번 이상 포함되어서는 안 됩니다(예: a39tzb39r). 8- 3개 이상의 반복되거나 연속된 숫자 또는 문자의 시퀀스를 포함하지 않습니다(예: ax222rm, ct15mnoRx).

(.{2,})\1

그런 다음 그것들을 하나로 합치십시오.

echo -n $PASS | grep -P '[az]' | grep -P '.[^a-z0-9A- Z].' | grep -vP "((?!$U).)|$ETC"

$Us 확장은 for 루프이므로 알아낼 수 있어야 합니다... 하지만 언급한 설명처럼 안전한 비밀번호에 대한 유일한 올바른 테스트는 14자 이상이라는 것입니다. ) )

관련 정보