logo
 
cpacer

6.1 情報へのアクセス制限

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

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

CNS では次に示すアクセス制限を設定できます.

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

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

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

次に `/home/t02000tf/public_html/secret' (http://www.sfc.keio.ac.jp/~t02000tf/secret) というディレクトリの下にあるファイルを, パスワードを知っているユーザにのみアクセスを許可する方法を説明します.

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

    図: `.htaccess'ファイルの例(特定のユーザのみ許可)
    AuthUserFile /home/t020000tf/etc/.htpasswd
    AuthName authorized_area
    AuthType Basic
    
    <LIMIT GET>
     require user t02000tf
    </LIMIT>
    

    `AuthUserFile'には, 後で作成するパスワード設定ファイルを 絶対パス([*]) で指定します. URLによるディレクトリの指定や 相対パス([*])で指定します. URLによるディレクトリの指定や, 相対パス([*])による指定は エラーとなるので注意してください. `require group'の後には, このディレクトリにアクセスを許可するグループ名を指定します. グループ名は自由に名称を設定できます.

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

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

    % htpasswd  -c  /home/t02000tf/etc/.htpasswd taro <RET>
    Adding password for taro.
    New password:<パスワードを入力> 
    Re-type New password:<パスワードを入力> 
    % htpasswd  /home/t02000tf/etc/.htpasswd hanako <RET>
    \begin{math}\cdots\end{math}
    % htpasswd  /home/t02000tf/etc/.htpasswd jiro <RET>
    ......
    % _
    

    htpasswdコマンドを実行すると, 各ユーザのパスワードを入力する状態になります. 入力した内容は画面には表示されないので慎重に入力してください. ここで, そのユーザに対するパスワードを入力します. 2度求められるので, 同じように入力すると, `/home/t02000tf/etc/.htpasswd' というファイルが新規に作成され, この中に各パスワードが暗号化されて書き込まれます.

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

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

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

6.1.2 特定のドメイン(CNS 内部)からのアクセスのみを許可する

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

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

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

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

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

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

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

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

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

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

AuthUserFile Userfile
AuthGroupFile Groupfile

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

<LIMIT GET>
 require group UserGroupName
 require user UserName
 allow from DomainName
 allow from HostName
</LIMIT>

図: `.htaccess'ファイルの例(パスワードとホスト名,ドメイン名による制限)
AuthUserFile /home/t02000tf/etc/.htpasswd
AuthGroupFile /home/t02000tf/etc/.htgroup
AuthName authorized_area
AuthType Basic

<LIMIT GET>
 require group friends
 require user taro
 order deny,allow
 deny from all
 allow from .sfc.keio.ac.jp
</LIMIT>