初めて作るときは、
$ /usr/bin/htpasswd -c /home/hoge/.usrs foo /home/hoge/.usrs → passwdfile の名前。 -cオプション → passwdfile を作る。もしすでにあるなら古いほうを消去して、 新しいファイルを作る。 foo → 登録するユーザー名
のようにする。 ユーザを追加する時には -c オプションを外して
$ /usr/bin/htpasswd /home/hoge/.usrs hoge
のようにする。この時パスワードフィールドには crypt 形式で 暗号化されたものが書かれるが、クラックの餌食になることも 考えられるので Web 経由のユーザーがパスワードファイルにアクセス できないようにしておくべきである。
(1)ユーザ認証方式
制限をかけたいディレクトリに、 .htaccess ファイルをおく。 例えば/home/hoge/public_html以下に制限をかけたい場合は、
$ vi /home/hoge/public_html/.htaccess
AuthType Basic AuthName The-T-Directory AuthUserFile /home/hoge/.users <Limit GET POST> require user hoge foo アクセスを許可するユーザ名。 </Limit>
■それぞれの説明 AuthType 認証制御の種類。Basic でよい。 AuthName ユーザ名とパスワードが有効になる"realm (範囲)"の名前。 簡単に言うと passwd を打つ window につける名前。 スペースの入らない名前をつける。 AuthUserFile user 名と passwd が書き込まれたファイル名。 先程作ったpasswdfileを絶対パスで指定。 <Limit GET POST> GET POST に制限を加える require user ユーザ認証(この場合 hoge と foo)が必要となる。 require の部分は特定グループだけを有効にすることも可能。
これで、
http://www.ep.sci.hokudai.ac.jp/~hoge/index.html
などにアクセスした時にユーザ名とパスワードを聞いてくる。
(2)サーバ毎のアクセス制御
$ vi /home/hoge/public_html/.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/hoge/public_html/.htaccess
AuthUserFile /home/hoge/.testuser AuthGroupFile /home/hoge/.testgrp <Limit GET POST> require group testgrp </Limit>
次に、グループファイルを作る。
$ /home/hoge/.testgrp
とし、グループに登録するユーザ名を入力する。
testgrp: hoge foo ←ユーザ名とユーザ名の間はスペースを入れる
そして、「(1)ユーザー認証方式」のようにグループに登録されたユーザとパスワードのファイルを作成する。
せっかくアクセス制限をかけたコンテンツもマシンに入って見えるようにしてあったら意味がありません。ちゃんとモードを変えて見られないようにしましょう。
$ chmod 600 ディレクトリ名