アクセス制限2

パスワードファイルをWebから操作する

「アクセス制限1」で解説している「応用設定2」のやり方で、パスワードファイルを変更する だけでアクセス制限が掛けられるようになった。ただし、このパスワードファイルを変更する にはtelnetなどでサーバに接続し、htpasswdコマンドを使って操作しなければ ならない。
そこで、htpasswdコマンドではなくてCGIプログラムでWeb上からパスワードファイル を編集する方法を紹介したい。

ネットサーフレスキュー[Web裏技] というサイトにパスワードアクセス制限管理システム(HTPWD)というシステムが紹介されて いる。ここからhtpwd15.lzhをダウンロードする。

解凍すると、次のようにファイルが展開される。

[htpwd15]
  + .htaccess
  + .nsconfig
  + admin.cgi
  + change.cgi
  + index.html
  + master.cgi
  + readme.txt
  + regist.cgi
  + remove.cgi
  + remove.cgi2
  + user.cgi
  + [entry]
      + .htaccess
      + .nsconfig

これらのファイルをホームページに組み込み、任意のディレクトリにパスワード制限を掛ける。
例えばmembers2というディレクトリにパスワード制限を掛けたい場合は次のように 設定する。

  1. 設定ファイルの配置

    members2ディレクトリを作成し、.htaccessファイルと.nsconfig ファイルをmembers2ディレクトリにコピーする。

  2. プログラム・パスワードファイルの配置

    プログラムはCGIなので、CGIが動く任意の場所へ配置する。今までやってきた設定では cgi-binディレクトリ以外ではCGIが動かないようになっているので、そこへ コピーする。プログラムファイルはchange.cgiindex.htmlmaster.cgiregist.cgiremove.cgiremove2.cgiで、パスワードファイルはadmin.cgiuser.cgi
    コピー後、プログラムファイルのパーミッションを755に、パスワードファイルの パーミッションを666に設定する。
    なお、index.htmlのファイル名を別の何か(htpwd.htmlなど)に変更する。 このファイルは何処にあってもいいが、プログラムファイルとは別のディレクトリに 配置した場合は、ソースを修正しなければならない。

  3. 設定ファイルの編集

    .htaccessファイル、.nsconfigファイルをそれぞれviで開き、 日本語になっているところをそれぞれ修正する。

以上で設定は終わりである。上記の設定により、members2ディレクトリ内のページを Webで参照しようとすると、ユーザ認証画面が現れる。ただし、パスワードファイルは cgi-binディレクトリ内のuser.cgiファイルで管理される。
パスワードファイルを編集するには、サーバでhtpasswd user.cgi ユーザ名としても いいが、Web上からhtpwd.htmlを開くことにより、CGIで一括管理できる。

実際に運用する場合は、管理者しか入れないページを作成し、そこにhtpwd.htmlを配置 するのがいいだろう。