4.1 情報へのアクセス制限
ここでは,パスワードを知っている特定のユーザやグループメンバ,また特定の
ドメインや
ホスト
からのアクセスに対してのみ情報を公開する方法を説明します.
基本的に,public_html以下のディレクトリにあるすべてのファイルは,世界中のユーザに対して制限なしに公開されます.
しかし,CNS
の外部からアクセスされては不都合なファイルなども存在します.
このような場合,各ユーザは自分のディレクトリにパスワードを設定し,公開する相手のユーザ認証を行えます(図4.1).
また,特定の
ドメイン(sfc.keio.ac.jpなど)や
ホスト(ccz00.sfc.keio.ac.jpなど)
からのアクセスに対してのみファイルを公開できます.
CNS
では次に示すアクセス制限を設定できます.
- パスワードを知っているユーザにのみアクセスを許可する
- 特定のドメイン(CNS
内部)からのアクセスのみを許可する
- 特定のホストからのアクセスのみを許可する
- パスワード,ホスト名やドメイン名を組み合わせてアクセスを許可する
4.1.1 パスワードを知っているユーザにのみアクセスを許可する
`/home/t03000tf/public_html/secret/'
(http://www.sfc.keio.ac.jp/~t03000tf/secret/)
というディレクトリの下にあるファイルを,パスワードを知っているユーザにのみアクセスを許可する方法を説明します.
- `.htaccess'ファイルを作成する
アクセス制限を行うディレクトリ
(この場合は`/home/t03000tf/public_html/secret/')の下に,`.htaccess'という名前のファイルを,図4.2のような内容で作成します.
AuthUserFile /home/t020000tf/etc/.htpasswd
AuthGroupFile /home/t020000tf/etc/.htgroup
AuthName authorized_area
AuthType Basic
<LIMIT GET>
require user taro
require group friends
</LIMIT>
図 4.2 '.htaccess'ファイルの例(特定ユーザのみ許可)
`AuthUserFile'には,後で作成するパスワード設定ファイルを 絶対パス() で指定します. URLによるディレクトリの指定や 相対パス
()
で指定します. URLによるディレクトリの指定や,相対パスによる指定は エラーとなるので注意してください. `require group'の後には,このディレクトリにアクセスを許可するグループ名を指定します. グループ名は自由に名称を設定できます.
- パスワード設定ファイルやグループ設定ファイルを保存するディレクトリを、'.htaccess'の中で指定したとおりに作成する.
% mkdir /home/t03000tf/etc <ENTER>
% _
- パスワードを登録する
パスワードの登録にはhtpasswdコマンドを利用します.
ここでは,先に`.htaccess'の中で指定した
`/home/t03000tf/etc/.htpasswd'
というパスワード設定ファイルを新規に作成し,ここに
`taro',`hanako',`jiro'
というユーザのパスワードを登録する例を示します.
% htpasswd -c /home/t03000tf/etc/.htpasswd taro <ENTER>
Adding password for taro.
New password:<パスワードを入力> <ENTER>
Re-type New password:<パスワードを入力> <ENTER>
% htpasswd /home/t03000tf/etc/.htpasswd hanako <ENTER>
...
% htpasswd /home/t03000tf/etc/.htpasswd jiro <ENTER>
...
% _
htpasswdコマンドを実行すると,各ユーザのパスワードを入力する状態になります.
入力した内容は画面には表示されないので慎重に入力してください.
ここで,そのユーザに対するパスワードを入力します.
2度求められるので,同じように入力すると,`/home/t03000tf/etc/.htpasswd'
というファイルが新規に作成され,この中に各パスワードが暗号化されて書き込まれます.
` .htpasswd'を新規に作成するときには
htpasswdコマンドに ` -c'オプションをつけますが,以後,同じパスワード設定ファイルに対してパスワードを設定する場合は
-cオプションをつけないで実行してください.
- `.htgroup'ファイルを作成する
`.htaccess'ファイルの中の
`AuthGroupFile'で指定したディレクトリ(この場合は'etc')の下に,`.htgroup'という名前のグループ設定ファイルを次の内容で作成します.
friends: taro hanako jiro
これでパスワードが設定され,グループ単位でアクセスを許可できるようになります.
4.1.2 特定のドメイン(CNS
内部)からのアクセスのみを許可する
ドメイン名によってアクセス制限をするには,アクセス制限するディレクトリに`.htaccess'という
名前のファイルを図4.3のような内容で作成します.
この例では,ドメイン`sfc.keio.ac.jp' (CNS
全体)
からのアクセスのみを許可するように設定しています.
<LIMIT GET>
order deny,allow
deny from all
allow from .sfc.keio.ac.jp
</LIMIT>
図 4.3 '.htaccess'ファイルの例(特定のドメインのみ許可)
4.1.3 特定ホストからのアクセスのみの許可
上の例はドメイン名によるアクセス制限ですが,ホスト名によるアクセス制限も行えます.
アクセスを制限するディレクトリに,`.htaccess'という名前のファイルを図4.4のような内容で作成します.
<LIMIT GET>
order deny,allow
deny from all
allow from ccz00.sfc.keio.ac.jp
</LIMIT>
図 4.4 '.htaccess'ファイルの例(特定ホストのみ許可)
4.1.4 パスワードとホスト名,ドメイン名を組み合わせたアクセスの制限
パスワードによるアクセス制限と,ホスト名,ドメイン名によるアクセス制限との組み合わせも可能です.
その際は,次のように`.htaccess'ファイルの,Userfile,Groupfileの部分に,4.1.1
などを参考にして,適切なディレクトリ,ファイル名を指定します.
AuthUserFile Userfile
AuthGroupFile Groupfile
また,4.1.1から4.1.3
を参考に,次の設定を必要に応じて
<LIMIT>と
</LIMIT>
の間に書き加えます.
<LIMIT GET>
require group UserGroupName
require user UserName
allow from DomainName
allow from HostName
</LIMIT>
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>
図4.5 '.htaccess' ファイルの例(パスワードとホスト名,ドメイン名による制限)