next up previous contents
Next: 4.2 SSI,CGI Up: 4. WWWサーバによる情報公開 - 応用編 Previous: 4. WWWサーバによる情報公開 - 応用編



4.1 情報へのアクセス制限

ここでは,パスワードを知っている特定のユーザやグループメンバ,また特定のドメインやホストからのアクセスに対してのみ情報を公開する方法を説明する.

基本的に,public_html以下のディレクトリにあるすべてのファイルは,世界中のユーザに対して制限なしに公開される.しかし,CNSの外部からアクセスされては不都合なファイルなども存在する.このような場合,各ユーザはディレクトリにパスワードを設定し,そのパスワードを知っているユーザに対してのみ(図4.1),または,特定のドメイン(CNSなど)やホスト(ccz00.sfc.keio.ac.jpなど)からのアクセスに対してのみファイルを公開できる.CNSでは次に示すアクセス制限を設定できる.


図 4.1:ユーザ認証ダイアログ
図 4.1:ユーザ認証ダイアログ

ページにアクセス制限の設定をしても,CNSのユーザであれば直接ファイルの内容を見ることができてしまう.この機能は主にCNSの外部からのブラウザによるアクセスを制限する必要が生じた際に利用するものである.


4.1.1 パスワードを知っているユーザにのみアクセスを許可する

`/home/t00000tf/public_html/Secret'というディレクトリの下にあるファイルを,パスワードを知っているユーザにのみアクセスを許可する方法を説明する.

1.
`.htaccess'ファイルを作成する.
アクセス制限を行うディレクトリ(この場合はSecret)の下に, .htaccessという名前のファイルを,図4.2のような内容で作成する.


図:` .htaccess'ファイルの例(特定のユーザのみ許可)
AuthUserFile /home/t00000tf/etc/.htpasswd
AuthGroupFile /dev/null
AuthName ByPassword
AuthType Basic

<LIMIT GET>
require user taro
</LIMIT>

AuthUserFileには,後で作成するパスワード設定ファイルを絶対パスで指定する.URLによるディレクトリの指定や相対パスによる指定ではエラーとなるので注意すること.require userには,このディレクトリへのアクセスを許可するユーザ名を指定する.これはCNSでのログイン名とは関係なく,自由に設定できる.

2.
パスワード設定ファイルを保存するディレクトリを, .htaccessの中で指定した通りに作成する.

% mkdir  /home/t00000tf/etc<RET>
% _
.htpasswdは,public_html以外の場所に作成すること.

3.
パスワードを登録する.
パスワードの登録にはhtpasswdコマンドを利用する. htpasswdコマンドはzz???z???ccz??u???で利用できる.ここでは,先に.htaccessの中で指定した `/home/t00000tf/et
c/.htpasswd
'というパスワード設定ファイルを新規に作成し,次にtaroというユーザのパスワードを登録する例を示す.

% htpasswd  -c  /home/t00000tf/etc/.htpasswd taro<RET>
% _

htpasswdコマンドを実行すると, taroというユーザのパスワードを入力する状態になる. ここで,そのユーザに対するパスワードを入力する.2度求められるので,同じように入力すると,/home/t00000tf/etc/.htpasswdというファイルが新規に作成され,この中にパスワードが暗号化されて書き込まれる.

これでパスワードが設定される.WWWブラウザでこのディレクトリ以下,つまり`http://www.sfc.keio.ac.jp/~t00000tf/Secret/'以下の情報 にアクセスすると,ユーザ認証用のダイアログ(図4.1)が開き,ユーザ名とパスワー ドの入力を求められるようになる.なお,ディレクトリにアクセス制限を設定すると,それ以下の階層のディレクトリに対しても設定が有効になる.



4.1.2 パスワードを知っているグループメンバにのみアクセスを許可する

`/home/t00000tf/public_html/groupwork'というディレクトリの下にあるファイルを,パスワードを知っているグループメンバにのみアクセスを許可する方法を説明する.

1.
`.htaccess'ファイルを作成する.
アクセス制限を行うディレクトリ(この場合はgroupwork)の下に,.htaccessという名前のファイルを図4.3のような内容で作成する.



図:` .htaccess'ファイルの例(特定のグループメンバのみ許可)
AuthUserFile /home/t00000tf/etc/.htpasswd
AuthGroupFile /home/t00000tf/etc/.htgroup
AuthName ByPassword
AuthType Basic

<LIMIT GET>
require group friends
</LIMIT>



AuthUserFileAuthGroupFileには,後で作成するパスワード設定ファイルやグループ設定ファイルを絶対パスで指定する.URLによるディレクトリの指定や相対パスによる指定はエラーとなるので注意すること. require groupには,このディレクトリにアクセスを許可するグループ名を指定する.これは自由に名称を設定できる.

2.
パスワード設定ファイルやグループ設定ファイルを保存するディレクトリを, .htaccessの中で指定した通りに作成する.


% mkdir  /home/t00000tf/etc<RET>
% _

.htpasswd.htgroupは,public_html 以外の場所に作成すること.

3.
パスワードを登録する.
パスワードの登録にはhtpasswdコマンドを利用する.ここでは,先に.htaccessの中で指定した/home/t00000tf/etc/.htpasswd というパスワード設定ファイルを新規に作成し,ここにtarohanakojiroというユーザのパスワードを登録する例を示す.

% htpasswd  -c  /home/t00000tf/etc/.htpasswd taro<RET>
% htpasswd  /home/t00000tf/etc/.htpasswd hanako<RET>
% htpasswd  /home/t00000tf/etc/.htpasswd jiro<RET>
% _

htpasswdコマンドを実行すると,各ユーザのパスワードを入力する状態になる. ここで,そのユーザに対するパスワードを入力する.2度求められるので,同じように入力すると,/home/t00000tf/etc/.htpasswdというファイルが新規に作成され,この中に各パスワードが暗号化されて書き込まれる.

.htpasswdを新規に作成するときにはhtpasswdコマンドに -cオプションをつけるが,以後,同じパスワード設定ファイルに対してパスワードを設定する場合は -cオプションをつけないで実行すること.


4.
`.htgroup'ファイルを作成する.
`.htaccess'ファイルの中のAuthGroupFileで指定したディレクトリ(この場合はetc)の下に,.htgroup という名前のグループ設定ファイルを次の内容で作成する.


friends: taro hanako jiro

これでパスワードが設定され,グループ単位でアクセスを許可できるようになる.


4.1.3 CNSからのアクセスのみの許可


ドメイン名によってアクセス制限をするには,アクセス制限するディレクトリに.htaccessという名前のファイルを図4.4のような内容で作成する.この例では,ドメイン`sfc.keio.ac.jp' (CNS全体)からのアクセスのみを許可するように設定している.



図:` .htaccess'ファイルの例(特定のドメインのみ許可)
<LIMIT GET>
order deny,allow
deny from all
allow from sfc.keio.ac.jp
</LIMIT>



これで,そのディレクトリとそれ以下の階層のディレクトリはCNS内のホストからしかアクセスできないようになる.



4.1.4 特定ホストからのアクセスのみの許可


上の例はドメイン名によるアクセス制限だが,ホスト名によるアクセス制限も行える.アクセスを制限するディレクトリに,.htaccess という名前のファイルを図4.5のような内容で作成する.



図:` .htaccess'ファイルの例(特定ホストのみ許可)
<LIMIT GET>
order deny,allow
deny from all
allow from ccz00.sfc.keio.ac.jp
</LIMIT>



これで,CNS内にあるccz00.sfc.keio.ac.jpという名前のホストからのアクセスのみ許可される.
Proxyサーバ を経由してアクセスする場合には,ブラウザが動作しているホスト名ではなく, Proxyサーバとして設定されているホスト名を指定すること.


4.1.5 パスワードとホスト名,ドメイン名を組み合わせたアクセスの制限

パスワードによるアクセス制限と,ホスト名,ドメイン名によるアクセス制限との組み合わせも可能である.

その際は,次のように`.htaccess'ファイル の,Userfile,Groupfileの部分に,4.1.14.1.2を参考にして,適切なディレクトリ,ファイル名を指定する.

AuthUserFile Userfile
AuthGroupFile Groupfile

また,4.1.1から4.1.4 を参考に,次の設定を必要に応じて<LIMIT> </LIMIT>の間に書き加える.

require group UserGroupName
require user UserName
allow from DomainName
allow from HostName


next up previous contents
Next: 4.2 SSI,CGI Up: 4. WWWサーバによる情報公開 - 応用編 Previous: 4. WWWサーバによる情報公開 - 応用編