アクセス制限の基礎知識



ステップ1:ディレクトリを作成する

例えばユーザディレクトリがこのような構成だとします。

taro(ユーザディレクトリ)
  |
  |-- public_html(ホームページディレクトリ)

public_html以下にパスワードを掛けるディレクトリ、同じく外にパスワードファイルを置くディレクトリを作ります。例えばこのように:

taro(ユーザディレクトリ)
  |
  |-- public_html(ホームページディレクトリ)
  |     |
  |     |-- members(パスワードを掛けるディレクトリ)
  |
  |--etc(パスワードファイルを置くディレクトリ)

そして、

ことによって、taro/public_html/members/ディレクトリにパスワードを掛けることができます。


ステップ2:パスワードファイルを用意する

パスワードによるアクセス制限を掛けるには、パスワードファイルを作る必要があります。パスワードファイルとは普通のテキストファイルで、以下のように、ユーザ名:暗号化されたパスワード、の組み合わせを人数分書き込みます。ファイル名は自由です。

なお、ファイルの最後にはかならず改行を入れてください。そうしないと最後のユーザのパスワードが無効になってしまいます。

taro:A/GZHvM.49niw
jiro:KthFb6Oh0zj8E
hanako:aB2O3FVjzi2OM

この例では、ユーザ「taro」のパスワードは「1111」、ユーザ「jiro」のパスワードは「2222」ユーザ「hanako」のパスワードは「3333」になっています。

パスワードを暗号化するには、htpasswdプログラムを使うのが普通ですが、サーバにhtpasswdがインストールされていない場合がほとんどです。そこで、CGIによるパスワードエンコーダのプログラムが、フリーウェアとしてあちこちのウェブサイトで配布されていますから、それを利用すると便利です。


ステップ3:.htaccessファイルを用意する

以下の内容のテキストファイルを用意し、.htaccessという名前で保存します。(もちろん、ユーザの環境に合わせて変更の必要な箇所もあります)Windowsの「メモ帳」ではピリオドが最初に付いたファイル名での保存ができないので、適当な名前を付けて保存した後、名前を変更してください。

下の項目のうち、

AuthType Basic
AuthName "Member Page"
AuthUserFile /home/taro/etc/.htpasswd
AuthGroupFile /dev/null
<limit GET POST>
        require valid-user
</limit>

ステップ4:ファイルをアップロードし、テストする

ここまで下準備ができたら、早速以下の二つのファイルをアップロードしましょう。ただし、テキストモードで転送しないと正しく動作しません。

あとは、パスワードを掛けるディレクトリにindex.htmlなどHTMLファイルを入れてみて、動作確認してみましょう。ブラウザでページを表示させようとすると、パスワード入力画面が表示され、ユーザ名とパスワードを入れて表示できるようになればOKです。


応用:ユーザをグループ分けする

こんな例を考えてみましょう。

taro(ユーザディレクトリ)
  |
  |-- public_html(ホームページディレクトリ)
  |     |
  |     |-- keiri(keiriグループの参加者のみパスワードが通る)
  |     |
  |     |-- eigyo(eigyoグループの参加者のみパスワードが通る)
  |
  |--etc(パスワードファイルを置くディレクトリ)

この場合、パスワードファイルは前と同じ方式で構いません。例えば

taro:A/GZHvM.49niw
jiro:KthFb6Oh0zj8E
hanako:aB2O3FVjzi2OM

のようなファイルを、さっきと同じように、etcディレクトリに入れておきます。

さて、各グループのメンバー一覧はどこに書いておくのかというと、今度は新しくファイルを用意します。

keiri: taro hanako
eigyo: taro jiro

このように、グループID: 参加ユーザID1 参加ユーザID2 ...の形式で書きます。グループが複数ある場合は、行を改めて他のグループも同時に記述できます。これを、例えば.htgroupという名前で、etcディレクトリに入れておきます。

最後に.htaccessファイルですが、今度はグループファイルの設定と、どのグループのアクセスを許可するのかの設定があるので、書き方が少し変わります。以下、それぞれkeiriディレクトリとeigyoディレクトリ用の.htaccessファイルの例を示します。

keiriディレクトリの.htaccess

AuthType Basic
AuthName "Member Page"
AuthUserFile /home/taro/etc/.htpasswd
AuthGroupFile /home/taro/etc/.htgroup
<limit GET POST>
        require group keiri
</limit>

eigyoディレクトリの.htaccess

AuthType Basic
AuthName "Member Page"
AuthUserFile /home/taro/etc/.htpasswd
AuthGroupFile /home/taro/etc/.htgroup
<limit GET POST>
        require group eigyo
</limit>

戻る