#navi(../)
* パスワードの長さや文字などの制限事項を設定する方法 [#t4ded4d8]
パスワードの文字列に対し、長さや英字大文字小文字、記号などを含めるなどの制限を設定する方法を以下に記します。~
動作確認したディストリビューションはCentOS5になります。~
他のバージョンでも同様の設定で動作すると思います。

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 関連記事、関連資料 [#rca8bbcd]
PAMに関する記事です。
-[[指定したユーザのみsuコマンドの実行を可能にする>Linux環境設定/指定したユーザのみsuコマンドの実行を可能にする]]

* PAMの設定を変更することにより実現する [#z3f3281d]
PAMのpam_cracklib.soの設定を変更することにより、パスワードに関する制限事項を設定することができます。~

* パスワード設定のファイルのありか [#w0ed53fc]
CentOS5では、以下のファイルになります。
 /etc/pam.d/system-auth
上記のファイル内の以下の設定が、パスワード制限を設定する行になります。
 password    requisite     pam_cracklib.so try_first_pass retry=3

実際にはpasswordファイルが以下のようになっています。
 # cat passwd 
 #%PAM-1.0
 auth       include      system-auth
 account    include      system-auth
 password   include      system-auth
includeでsystem-authになっているので、system-authファイルが設定ファイルの実態になります。

* pam_cracklibのオプション [#mfa88116]
pam_cracklibのオプションを以下に記します。~
使用例は別途記述してあります。
|オプション|説明|例|
|type=文字列|passwdコマンドを実行したときのプロンプトに表示する文字列を指定|type=hello|
|retry=数値|パスワード変更時の試行回数を指定|retry=3|
|difok=数値|現在のパスワードと指定した数字以上異なれば変更を許可する|difok=3|
|difignore=数値|difokが無効になる長さを設定する|difignore=23|
|minlen=数値|パスワードとして認める採用文字数を指定~厳密にminlenの値が以上のパスワード文字列にしたい場合は、&br;以下のオプションを設定すること。&br;理由は、デフォルト値では、dcredit=1, ucredit=1, lcredit=1, ocredit=1となっており、&br;minlenに指定した値より少ないパスワード文字数でも通ってしまいます。*1|minlen=8|
|dcredit=-数値|パスワード内に必要とする数字の数を指定する(値はマイナス値となり、minlenから引き算されます。)|dcredit=-2|
|ucredit=-数値|パスワード内に必要とする英大文字の数を指定する(値はマイナス値となり、minlenから引き算されます。)|ucredit=-2|
|lcredit=-数値|パスワード内に必要とする英小文字の数を指定する(値はマイナス値となり、minlenから引き算されます。)|lcredit=-2|
|ocredit=-数値|パスワード内に必要とする記号の数を指定する(値はマイナス値となり、minlenから引き算されます。)|ocredit=-1|

*1 minlenの値ですが、dcreditなどがプラスの値の場合、以下のような解釈になります。~
dcredit=1の場合、パスワードに1つの数字を含む時はminlenからdcreditを引いた値が最低文字数となります。~
dcreditの意味である、数字が含まれない場合はminlenが最低文字数となります。

他のオプションや詳細はman pam_cracklibで確認してみてください。

** typeを試す [#b4559baf]
typeにHELLOを設定してpasswdコマンドを実行してみます。~
設定は以下の通りです。
 password    requisite     pam_cracklib.so try_first_pass retry=3 type=HELLO
実行結果~
HELLOが出力されていのが確認できます。
 [sakura@centos ~]$ passwd
 Changing password for user sakura.
 Changing password for sakura
 (current) UNIX password: 
 New HELLO password: 

** minlenの設定例 [#y578f534]
minlen=12を設定した場合の例。
設定例は以下の通りです。
 password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=9
上記の例だと、デフォルト値であるdcredit=1, ucredit=1, lcredit=1, ocredit=1が設定されているため、~
9文字以下でもパスワードが設定できてしまいます。~
詳細は「pam_cracklibのオプション」の*1を参照してください。

** dcredit, ucredit, lcredit, ocreditの設定例 [#adec5ac5]
設定例は以下の通りです。
 password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=9 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
パスワード文字数は9文字以上で、~
数字が1文字以上、英大文字が1文字以上、英小文字が1文字以上、記号が1文字以上を含むパスワードが設定できます。~
たとえば数字が不要の場合は、dcredit=0のように0を指定します。

以上、pam_cracklibの設定方法をいくつか紹介しました。~

* その他の設定値説明 [#q0fe9529]
以下に今回使用した設定値の説明を記します。

** requisite [#uf41b90e]
今回、requisiteはpam_cracklib.soの処理が失敗すると処理を中断します。~
他には、required、required、requiredがあります。~
pam_cracklib
** try_first_pass [#d074afaa]
try_first_passの説明は以下の通りです。

SourceForge.JP Magazine~
http://sourceforge.jp/magazine/08/11/11/0153210/2

-SourceForge.JP Magazineの上記記事からの抜粋~
PAMは、ユーザーからのパスワードの取得をサポートする。~
各行ではPAMに対し、パスワードが必要であることと、ユーザーから取得済みのパスワードを再利用するか(use_first_pass)、~
あるいは既に取得したパスワードがあればそれを再利用し、~
なければ入力を促すか(try_first_pass)を指定することができる。~
これは便利な機能である。~
あるサービスに対するPAM認証が2行存在する場合にtry_first_passを用いれば、~
その2行から呼び出される認証サービスにおいてパスワードは2回必要となるが、~
PAMが処理してくれるおかげで入力は1回で済む。



#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS