ここでは特定の人にのみページを公開したいときのために
ページを見るときにパスワードの入力が必要になるようにする設定法を解説する。
以下の説明では、ユーザ名hogehogeさんを例にとる。
1, パスワードを作る
まず、ユーザ名とパスワードを管理するファイル(passwdfile)を作る。
初めて作るときは、
$ htpasswd -c /home/hogehoge/.users hogehoge
Adding password for hogehoge.
New password:
Re-type new password:
/home/hogehoge/.users | passwdfile の名前。(実はこのファイルの名前は何でもよい。) |
---|---|
-cオプション | passwdfile を新規に作る。 もしすでにあるなら古いほうを消去して、新しいファイルを作る。 |
hogehoge | 登録するユーザー名 |
のようにする。 ユーザを追加する時には -c オプションを外して
$ htpasswd /home/hogehoge/.users herohero
のようにする。この時パスワードフィールドには crypt 形式で 暗号化されたものが書かれるが、クラックの餌食になることも 考えられるので Web 経由のユーザーがパスワードファイルにアクセスできないようにしておくべきである。 (public_html/ 以下に置かない)
2, 制限をかける
(1)ユーザ認証方式
制限をかけたいディレクトリに、 .htaccess ファイルをおく。
これは、.htaccess と言う名前でないとだめ。パーミッションは644
例えば/home/hogehoge/public_html/aaa/以下に制限をかけたい場合は、
(ブラウザから見た時には、http://www.ep.sci.hokudai.ac.jp/~hogehoge/aaa/ 以下。)
$ vi /home/hogehoge/public_html/aaa/.htaccess
AuthType Basic■それぞれの説明
AuthName The-T-Directory
AuthUserFile /home/hogehoge/.users
<Limit GET POST>
require user hogehoge herohero ← アクセスを許可するユーザ名。
</Limit>
AuthType | 認証制御の種類。Basic でよい。 |
---|---|
AuthName | ユーザ名とパスワードが有効になる"realm (範囲)"の名前。 簡単に言うと passwd を打つ window につける名前。 スペースの入らない名前をつける。 |
AuthUserFile | user 名と passwd が書き込まれたファイル名。先程作ったpasswdfileを絶対パスで指定。だから、さっきファイル名は何でも良いと言ったって訳。 |
<Limit GET POST> | GET POST に制限を加える. |
require user | ユーザ認証(この場合 hogehoge と herohero)を要求する。require の部分は特定グループだけを有効にすることも可能。 |
これで、
http://www.ep.sci.hokudai.ac.jp/~hogehoge/aaa/index.html
などにアクセスした時にユーザ名とパスワードを聞いてくる。

(2)サーバ毎のアクセス制御
$ vi /home/hogehoge/public_html/aaa/.htaccess
AuthType Basic
AuthName The-T-Directory
AuthUserFile /home/hoge/.users
<Limit GET POST>
order deny,allow
deny from all
allow from xxx.xx.xx.xx ← 許可したいIPアドレス
</Limit>
こうしておくと xxx.xx.xx.xx 以外からのアクセスがあった場合、 ユーザ名とパスワードを聞いてくる。
(3)グループで指定
$ vi /home/hogehoge/public_html/aaa/.htaccess
AuthUserFile /home/hogehoge/.testuser
AuthGroupFile /home/hogehoge/.testgrp
<Limit GET POST>
require group testgrp
</Limit>
次に、グループファイルを作る。
$ vi /home/hogehoge/.testgrp
とし、グループに登録するユーザ名を書き入れる。
testgrp: hogehoge herohero↑ユーザ名とユーザ名の間はスペースを入れる
そして、「(1)ユーザー認証方式」のようにグループに登録されたユーザとパスワードのファイルを作成する。