Webページの中にはパスワードが掛けられているものがある。Apacheではディレクトリごとに パスワードによる制限を設定することにより、Webページにパスワードを設定できる。
パスワード制限を設定する方法は、httpd.confに記述する方法と、それぞれの ディレクトリに.htaccessという設定ファイルを置く方法の2つがある。
httpd.confによるパスワード制限
パスワードファイル「.htpass」を作成し、利用者を登録する。
| # htpasswd -c /etc/httpd/.htpass ando | ←htpassファイルを作成し、andoというユーザのパスワードを設定する |
| New password: ******** | ←パスワードを入力 |
| Re-type password: ******** | ←もう一度パスワードを入力 |
| Adding password for user ando | ←ユーザandoのパスワードが作成された |
| # htpasswd /etc/httpd/.htpass furu1 | ←htpassファイルに、furu1というユーザのパスワードを追加する (-cは付けない) |
| New password: ******** | |
| Re-type password: ******** | |
| Adding password for user furu1 | ←ユーザfuru1のパスワードが作成された |
httpd.confを修正する
viでhttpd.confファイルを開き、ファイルの最後に以下の文を追加する。
| <Directory "/home/httpd/html/manual"> | ←パスワードを設定するディレクトリのパス |
| AuthUserFile /etc/httpd/htpass | ←パスワードファイルの場所 |
| AuthType Basic | |
| AuthName ByPassword | |
| <Limit GET POST> | |
| require user ando | ←ユーザ名 |
| require user furu1 | |
| </Limit> | |
| </Directory> |
保存後、Apacheを再起動する。これにより、rina.denpa.ac.jp/manual にアクセスするとネットワークパスワード入力画面が現れる。
.htaccessによるパスワード制限
httpd.confを修正する
viでhttpd.confファイルを開き、ファイルの最後に以下の文を追加する。
| <Directory "/home/*/public_html"> |
| AllowOverride All |
| </Directory> |
保存後、Apacheを再起動する。
アクセス制限をするディレクトリを決定し、設定を行う。今回はユーザandoのpublic_html 内のmembersディレクトリにパスワード制限を掛ける。パスワードファイルは /home/ando/binディレクトリに格納する。
| # mkdir bin |
| # htpasswd -c bin/.htpass ando | |
| New password: ******** | ←パスワードを入力 |
| Re-type password: ******** | ←もう一度パスワードを入力 |
| Adding password for user ando | ←ユーザandoのパスワードが作成された |
| # htpasswd bin/.htpass furu1 | |
| New password: ******** | |
| Re-type password: ******** | |
| Adding password for user furu1 | ←ユーザfuru1のパスワードが作成された |
| # mkdir public_html/members |
| # vi public_html/member/.htaccess |
| AuthUserFile /home/ando/bin/.htpass |
| AuthType Basic |
| AuthName ByPassword |
| <Limit POST GET PUT> |
| require user ando |
| require user furu1 |
| </Limit> |
設定を確認する。これにより、rina.denpa.ac.jp/~ando/members にアクセスするとネットワークパスワード入力画面が現れる。
htpasswdは、パスワードを生成するプログラムである。このプログラムで作成した
パスワードファイルは、パスワードが暗号化される。
.htpassファイルをcatで確認してみよう。
.htaccessによるパスワード制限の場合、上記の設定方法だとユーザが増えた場合、bin ディレクトリ内の.privateファイルと、public_html/membersディレクトリ内の .htaccessファイルを編集しなければならない。2つの異なったディレクトリの操作に なるため面倒である。そこで、グループファイルを使った方法を紹介する。
.htaccessファイルを以下のように変更する
| AuthUserFile /home/ando/bin/.htpass |
| AuthGroupFile /home/ando/bin/.htpass-g |
| AuthName "ByPassword" |
| AuthType Basic |
| <Limit POST GET PUT> |
| require group private-users |
| </Limit> |
| <Files .htaccess> |
| order deny,allow |
| deny from all |
| </Files> |
グループファイルを作る
binディレクトリに「.htpass-g」という名前のファイルを作成し、次の文を 追加する。
| private-users: ando |
| private-users: furu1 |
これにより、membersディレクトリ内の.htaccessファイルを更新する必要が無くなる。 ユーザが増えた場合はbinディレクトリの.htpassファイルにユーザを追加し、 同じディレクトリ内の.htpass-gファイルを編集すればよい。
認証を行うユーザを指定する場合、上記の基本設定では.htaccessまたは.htpass-g ファイルに
| require user ando |
| require user furu1 |
のように、対象ユーザを全て記述しなければならない。
パスワードファイル.htpassに登録した全てのユーザを認証対象としたい場合、
.htaccessファイルを以下のように変更する。
| AuthUserFile /home/ando/bin/.htpass |
| AuthGroupFile /dev/null |
| AuthName "ByPassword" |
| AuthType Basic |
| <Limit POST GET PUT> |
| require valid-user |
| </Limit> |
| <Files .htaccess> |
| order deny,allow |
| deny from all |
| </Files> |
これにより、パスワードファイル.htpassに登録されている全てのユーザが認証対象に なるため、ユーザが増えても.htaccessファイルを編集する必要は無い。