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