通常はホームページには誰でもアクセスできますが、アクセス制限をすることによって、
- パスワード登録されたユーザをパスワードで規制する
- ホスト名で制限/許可する
ようにできます。誰かがホームページを見に来たら、サーバは、そのホームページのファイルが
あるディレクトリに「.htaccess」という名前のファイル(以下、設定ファイル)があるかどうかを調べます。
無ければ、そのままそのホームページのファイルを取り出(表示)します。設定ファイルがあれば、
サーバはその中身を検討します。その中身にアクセス制限をする記述をすればいいわけです。
基本設定
ここでは「public_html」の下に「private」という名前のサブディレクトリを作って、そこから下の階層
にアクセス制限を設けることにします。
ネットスケープコマースサーバの場合は、設定ファイル名や方法が若干異なります。
一番最後に解説します。
全体の構図
必要なファイルを置く場所を決めます。
「private」までのパスが「/home/usr01/b/rescue/public_html/private」だと仮定します。
/home/usr01/b/rescue/binディレクトリ(新たに作成します)
.private(usernameとpasswordが入るファイル)
htpasswd(.privateを作成するプログラム)
/home/usr01/b/rescue/public_htmlディレクトリ
/home/usr01/b/rescue/public_html/privateディレクトリ(新たに作成します)
.htaccess(プロテクト設定ファイル)
usernameとpasswordが入るパスワードファイルを作る
アクセスを許可する者を設定します。例えば、許可する者のusernameとpasswordを次のように決めたとします。
username password
------------------------
ichiro yank7856
jiro fujk5528
saburo tyud9641
パスワードを生成するプログラムhtpasswdをインストールする
% htpasswd
Usage: htpasswd [-c] passwordfile username
The -c flag creates a new file.
さて、個人個人のパスワード設定をしましょう。「-c」を付けるのは最初(新規にファイルを作る場合)
だけです。次から付けてしまうと上書きされてしまうので、注意してください。
> ./htpasswd -c .private ichiro
Adding password for ichiro.
New password: (パスワード入力時は表示されません)
Re-type new password:
> ./htpasswd .private jiro
Adding user jiro
New password:
Re-type new password:
> ./htpasswd .private saburo
Adding user saburo
New password:
Re-type new password:
確認してみましょう。
> ls -l -a
total **
-rw-r--r-- 1 rescue 58 Mar 25 23:25 .private
-rwxr-xr-x 1 rescue 32768 Mar 25 23:25 htpasswd
> cat .private
ichiro:3v722ToqBywYY
jiro:xXaMsy/eplKno
saburo:usni8FWoz2DiY
パスワードは暗号化されています。これでOKです。
3v722ToqBywYYという13文字は暗号された部分で、DES( Data Encryption Standard )という方式です。
1977年にアメリカ商務省標準局(NBS)が定めたデータ暗号標準です。複合(暗号からパスワードに戻すこと)は出来ない方式です。
解析するなら、総当りや推測を行うしかありません。
プロテクト設定ファイルを作る
- エディタ等で下記の内容の設定ファイル「.htaccess」を作成します。
AuthUserFile /home/usr01/b/rescue/bin/.private
AuthGroupFile /dev/null
AuthName "ByPassword"
AuthType Basic
<Limit POST GET PUT>
require user ichiro jiro saburo
</Limit>
<Files .htaccess>
order deny,allow
deny from all
</Files>
上記で作成したパスワードファイルを指定します。これが参照されるわけです。ここで注意しなければ
ならないのは、いくらパスワード設定しても、この設定の中にユーザー名を書き込んでおかないと
アクセスできません。また、</limit>の後にリターンを入力して、カーソルを左に持っていく
こと(改行)を忘れずに。
ここで注意することは、1行に入力できる文字には制限があるということです。
これに対応するには、次のように記述します。
<Limit POST GET PUT>
require user ichiro
require user jiro
require user saburo
</Limit>
- これを上記の全体の構図で示したディレクトリ「private」にアスキー転送します。
テストしてみましょう
この場合、http://www.xxx.or.jp/~rescue/private/ 以下をプロテクトしているわけですから、
このURLを入力するとパスワードウインドウが開きます。
まずは、適当な(間違った)ものを入力してみましょう。入れないと思います。このディレクトリに
「index.html」という名前のHTMLファイルを置いておけば、このURLでそのHTMLファイルに
アクセスされます。
応用設定
新たにユーザー設定する場合、「bin」でパスワード設定して、「private」の「.htaccess」に
ユーザ名を追加するという、複数のディレクトリに渡って作業をしなければならないのは面倒です。
そこで、グループファイルを使った方法を紹介します。
グループファイルを作る
「bin」ディレクトリに「.private-g」という名前のファイルを作ります。この中身は下記の通りです。
private-users: ichiro jiro saburo
このファイルもアスキー(テキスト形式)転送です。1行入力したら忘れずにリターン(改行)
してください。
ここで注意することは、1行に入力できる文字には制限があるということです。
これに対応するには、次のように記述します。
<limit>
private-users: ichiro
private-users: jiro
private-users: saburo
</limit>
プロテクト設定ファイルを作る
エディタ等で下記の内容の設定ファイル「.htaccess」を作成します。これを「private」にアスキー転送します。
AuthUserFile /home/usr01/b/rescue/bin/.private
AuthGroupFile /home/usr01/b/rescue/bin/.private-g
AuthName "ByPassword"
AuthType Basic
<Limit POST GET PUT>
require group private-users
</Limit>
<Files .htaccess>
order deny,allow
deny from all
</Files>
この方法だと、もうこの設定ファイルを更新する必要はありません。追加は「bin」ディレクトリでの
作業のみになります。要するに、ここに書いていたユーザー名をまとめてグループファイルを作り、
そこを参照するようにしているわけです。
簡単設定
パスワードファイル(AuthUserFileで指定したもの)に登録したすべての人(username)を
認証対象としたい場合、上記基本設定では、
require user ichiro jiro saburo
という風にすべて並べなければなりませんでしたが、
require valid-user
と書くだけでも済みます。パスワードファイルに追加したら、.htaccessも書き加えなければなりません
でしたが、これなら.htaccessはいじらないで済みます。パスワードファイルをいじらずに、ある人だけ
認証不許可したければ、この方法ではなくて、上記の方法にしたほうが便利です。
AuthUserFile /home/usr01/b/rescue/bin/.private
AuthGroupFile /dev/null
AuthName "ByPassword"
AuthType Basic
<Limit POST GET PUT>
require valid-user
</Limit>
<Files .htaccess>
order deny,allow
deny from all
</Files>
|