ここでは,パスワードを知っている特定のユーザやグループメンバ,また特定のドメインやホストからのアクセスに対してのみ情報を公開する方法を説明する.
基本的に,public_html以下のディレクトリにあるすべてのファイルは,世界中のユーザに対して制限なしに公開される.しかし,CNSの外部からアクセスされては不都合なファイルなども存在する.このような場合,各ユーザはディレクトリにパスワードを設定し,そのパスワードを知っているユーザに対してのみ(図4.1),または,特定のドメイン(CNSなど)やホスト(ccz00.sfc.keio.ac.jpなど)からのアクセスに対してのみファイルを公開できる.CNSでは次に示すアクセス制限を設定できる.
/home/t99000tf/public_html/Secretというディレクトリの下にあるファイルを,パスワードを知っているユーザにのみアクセスを許可する方法を説明する.
AuthUserFile /home/t99000tf/etc/.htpasswd AuthGroupFile /dev/null AuthName ByPassword AuthType Basic <LIMIT GET> require user taro </LIMIT> |
AuthUserFileには,後で作成するパスワード設定ファイルを絶対パスで指定する.URIによるディレクトリの指定や相対パスによる指定ではエラーとなるので注意すること.require userには,このディレクトリへのアクセスを許可するユーザ名を指定する.これはCNSでのログイン名とは関係なく,自由に設定できる.
% mkdir /home/t99000tf/etc<RET>
% _
% htpasswd -c /home/t99000tf/etc/.htpasswd taro<RET>
% _
htpasswdコマンドを実行すると, taroというユーザのパスワードを入力する状態になる. ここで,そのユーザに対するパスワードを入力する.2度求められるので,同じように入力すると,/home/t99000tf/etc/.htpasswdというファイルが新規に作成され,この中にパスワードが暗号化されて書き込まれる.
これでパスワードが設定される.WWWブラウザでこのディレクトリ以下,つまり
http://www.sfc.keio.ac.jp/~
t99000tf/Secret/ 以下の情報
にアクセスすると,ユーザ認証用のダイアログ(図4.1)が開き,ユーザ名とパスワー
ドの入力を求められるようになる.なお,ディレクトリにアクセス制限を設定すると,それ以下の階層のディレクトリに対してもその設定は有効になる.
/home/t99000tf/public_html/groupworkというディレクトリの下にあるファイルを,パスワードを知っているグループメンバにのみアクセスを許可する方法を説明する.
AuthUserFile /home/t99000tf/etc/.htpasswd AuthGroupFile /home/t99000tf/etc/.htgroup AuthName ByPassword AuthType Basic <LIMIT GET> require group friends </LIMIT> |
AuthUserFile,AuthGroupFileには,後で作成するパスワード設定ファイルやグループ設定ファイルを絶対パスで指定する.URIによるディレクトリの指定や相対パスによる指定ではエラーとなるので注意すること.require groupには,このディレクトリにアクセスを許可するグループ名を指定する.これは自由に名称を設定できる.
% mkdir /home/t99000tf/etc<RET>
% _
% htpasswd -c /home/t99000tf/etc/.htpasswd taro<RET> % htpasswd /home/t99000tf/etc/.htpasswd hanako<RET> % htpasswd /home/t99000tf/etc/.htpasswd jiro<RET> % _
htpasswdコマンドを実行すると,各ユーザのパスワードを入力する状態になる. ここで,そのユーザに対するパスワードを入力する.2度求められるので,同じように入力すると,/home/t99000tf/etc/.htpasswdというファイルが新規に作成され,この中に各パスワードが暗号化されて書き込まれる.
friends: taro hanako jiro
これでパスワードが設定され,グループ単位でアクセスを許可できるようになる.
ドメイン名によってアクセス制限をするには,アクセス制限するディレクトリに.htaccessという名前のファイルを図4.4のような内容で作成する.この例では,ドメイン`sfc.keio.ac.jp' (CNS全体)からのアクセスのみを許可するように設定している.
<LIMIT GET> order deny,allow deny from all allow from sfc.keio.ac.jp </LIMIT> |
これで,そのディレクトリとそれ以下の階層のディレクトリはCNS内のホストからしかアクセスできないようになる.
上の例はドメイン名によるアクセス制限だが,ホスト名によるアクセス制限も行える.アクセスを制限するディレクトリに,.htaccess という名前のファイルを図4.5のような内容で作成する.
<LIMIT GET> order deny,allow deny from all allow from ccz00.sfc.keio.ac.jp </LIMIT> |
これで,CNS内にあるccz00.sfc.keio.ac.jpという名前のホストからのアクセスのみ許可される.
パスワードによるアクセス制限と,ホスト名,ドメイン名によるアクセス制限との組み合わせも可能である.
その際は,次のように`.htaccess'ファイル の,Userfile,Groupfileの部分に,4.1.1 や4.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: 4.2 SSI,CGI
Up: 4. WWWサーバによる情報公開 - 応用編
Previous: 4. WWWサーバによる情報公開 - 応用編