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


    
4.1 情報へのアクセス制限

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

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

1.
パスワードを知っているユーザにのみアクセスを許可する
2.
パスワードを知っているグループメンバにのみアクセスを許可する
3.
CNSからのアクセスのみを許可する
4.
特定のホストからのアクセスのみを許可する
5.
パスワードとホスト名,ドメイン名を組み合わせてアクセスを制限する


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

 

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

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

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

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


  
図: ファイル` .htaccess'の例(特定のユーザのみ許可)
\begin{figure}{file}
AuthUserFile /home/t98000tf/public_html/etc/.htpasswd
AuthG...
...}
<P>
<LIMIT GET>
require user taro
</LIMIT>
\\
{tex2html_deferred}\end{figure}

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

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

% mkdir  /home/t98000tf/public_html/etc<RET>
% _
.htpasswdは,アクセスを制限するディレクトリ(この場合はSecret)以外の場所に作成すること.
1.
ホスト`www'にリモートログインする
パスワードを登録するためのコマンドはwwwというホストで実行する必 要があるので,rloginコマンド()を利用してホスト `www'にリモートログインする.

% rlogin  www<RET>
1.
パスワードを登録する
パスワードの登録にはhtpasswdコマンド  を利用する.ここでは, 先に.htaccessの中で指定した /home/t98000tf/public_html/etc/.htpasswd  というパスワード設定ファイルを新規に 作成し,ここにtaroというユーザのパスワー ドを登録する例を示す.

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

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

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

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

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


  
図: ファイル` .htaccess'の例(特定のグループメンバのみ許可)
\begin{figure}{file}
AuthUserFile /home/t98000tf/public_html/etc/.htpasswd
AuthG...
...>
<LIMIT GET>
require group friends
</LIMIT>
\\
{tex2html_deferred}\end{figure}

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

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

% mkdir  /home/t98000tf/public_html/etc<RET>
% _

.htpasswdや.htgroupは,アクセスを制限するディレクトリ(この 場合はgroup
work)以外の場所に作成すること.
1.
ホスト`www'にリモートログインする
パスワードを登録するためのコマンドはwwwというホストで実行する必 要があるので,rloginコマンド()を利用してホスト `www'にリモートログインする.

% rlogin  www<RET>
1.
パスワードを登録する
パスワードの登録にはhtpasswdコマンド  を利用する.ここでは, 先に.htaccessの中で指定した /home/t98000tf/public_html/etc/.htpasswd  というパスワード設定ファイルを新規 に作成し,ここにtarohanakozentaiというユーザのパ スワードを登録する例を示す.

% wd taro/usr/WWW/httpd/support/htpasswd  -c  /home/t98000tf/public_html/etc/.htpass
<RET>
%   hanako/usr/WWW/httpd/support/htpasswd  /home/t98000tf/public_html/etc/.htpasswd 
<RET>
%   zentai/usr/WWW/httpd/support/htpasswd  /home/t98000tf/public_html/etc/.htpasswd 
<RET>
% _
htpasswdコマンドを実行すると,各ユーザのパスワードを入力する状態 になる. ここで,そのユーザに対するパスワードを入力する.2度求められる ので,同じように入力すると,/home/t9
8000tf/public_html/etc/.htpasswd
というファイルが新規に作成 され,この中に各パスワードが暗号化されて書き込まれる.

パスワード設定ファイル`.htpasswd'を新規に作成するときにはhtpasswdコマンドに -cオプションをつけるが,以後,同じパスワード 設定ファイルに対してパスワードを設定する場合は -cオプションをつ けないで実行すること.
 
1.
ファイル`.htgroup'を作成する
ファイル`.htaccess'の中のAuthGroupFileで指定したディレクト リ(この場合はetc)の下に,.htgroupという名前のグループ設定 ファイルを次の内容で作成する.

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

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

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


  
図: ファイル` .htaccess'の例(特定のドメインのみ許可)
\begin{figure}{file}
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName Exa...
...from all
allow from .sfc.keio.ac.jp
</LIMIT>
\\
{tex2html_deferred}\end{figure}

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

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

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


  
図: ファイル` .htaccess'の例(特定のホストのみ許可)
\begin{figure}{file}
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName Exa...
...all
allow from ccz00.sfc.keio.ac.jp
</LIMIT>
\\
{tex2html_deferred}\end{figure}

これで,CNS内にあるccz00.sfc.keio.ac.jpという名前のホストからの アクセスのみ許可される.

Proxyサーバ()  を 経由したアクセスの場合には,ブラウザを動作させているホストではな く, Proxyサーバとして設定されているホストの名前を指定すること.

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

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

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

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

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