Gnu/Linuxでパスワード制約を設定する方法

Gnu/Linuxでパスワード制約を設定する方法
  1. 1つ以上の小文字が含まれています。
  2. 少なくとも1つの数字が含まれ、最初と最後の位置を除くすべての場所に存在できます。
  3. これには、最初と最後の位置を除くすべての場所に存在できる特殊文字(英数字以外の文字、つまり記号)が1つ以上含まれています。
  4. ユーザーIDには2つ以上の文字シーケンスが含まれていません。
  5. これはユーザーIDの反転ではなく、ユーザーIDの反転も含みません。
  6. 以前の選択項目または指定されたパスワードの3つ以上の文字シーケンスは含まれていません。
  7. パスワードに複数の文字(a39tzb39rなど)が複数回含まれていません。
  8. 3つ以上の繰り返しまたは連続した数字または文字のシーケンスを含まない(例:ax222rm、ct15mnoRx)。

個別にテストできるコマンドを教えてください。

ベストアンサー1

正規表現にしてください

1 - 1つ以上の小文字が含まれています。

[AZ]

2 - 最初と最後の位置を除くすべての場所に存在できる数字が1つ以上含まれています。

.[0-9]。

3 - 最初と最後の場所を除くすべての場所に存在できる特殊文字IDが1つ以上含まれています。

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

4 - ユーザーIDに複数の文字が含まれていません。

IDの2文字ごと(しかしIDが数字なので、ユーザー名(フルネームと比較)を意味するようです)((?!$ U)。)

5 - ユーザーIDの反転ではなく、ユーザーIDの反転も含めません。

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

6 - 以前の選択項目または指定されたパスワードに3つ以上の文字が連続して含まれていません。

#4と同じ

7-パスワードには、複数の文字シーケンスを複数回含めてはいけません(例:a39tzb39r)。 8 - 3つ以上の繰り返しまたは連続した数字または文字のシーケンスを含まない(例:ax222rm、ct15mnoRx)。

(.{2,})\1

それからそれらを1つにまとめなさい。

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

$ Us拡張はforループなので、理解できるはずです...しかし、前述のように、安全なパスワードの唯一の正しいテストは14文字以上です。 ))

おすすめ記事