ノード:Anonymous Access, 次:Repository Structure, 前:The Password-Authenticating Server, 上:Repository Administration
ここまでパスワード認証サーバを使って、リポジトリに対し通常のフルアクセ
スを許可するやりかたを見てきました(Unix ファイルパーミッションを巧みに
利用してアクセス制限をすることは可能ですが)。一方、匿名の読み出し専用
アクセスを実現するにはワンステップで済みます: CVSROOT/ の下に新しいフ
ァイルを1つか、もしかしたら2つ、追加するだけでいいのです。ファイル名は
readers
と writers
、前者はリポジトリを読めるユーザ名の、
後者は読み書きできるユーザ名のリストです。
CVSROOT/readers にユーザ名を書くと、そのユーザはリポジトリ内の全てのプ ロジェクトに対する読み出しアクセスのみ可能になります。CVSROOT/writers にユーザ名を書くと、そのユーザは書込み権限を得、writers ファイルに書か れていない他の pserver ユーザは読み出しアクセスのみ可能になります(つま り、writers ファイルが存在するということは、そこに書かれていないユーザ を読み出しアクセスのみに制限するという意味になります)。両方のファイル に同じユーザ名が書かれている場合、CVS はその矛盾を保守的な方法で解決し ます: そのユーザは読み出しアクセスのみ可能になります。
ファイルの形式は非常に単純で、各行1ユーザです(最後のユーザの後に改行を
入れるのを忘れないで)。readers ファイルのサンプルを示します:
anonymous splotnik guest jbrowse
それらのファイルは CVS ユーザ名に適用されます。システムユーザ名ではあ りません。CVSROOT/passwd のユーザエイリアス機能を使っている場合(2番目 のコロンの後にシステムユーザ名を書いている場合)、readers または writers ファイルに使用するのは一番左側のユーザ名です。
Just to be painfully accurate about it, 許可するのが読み出しアクセスか 読み書きアクセスかを決定する時のサーバの動作を正式に説明するとこうなり ます:
readers ファイルが存在し、その中にそのユーザが書いてあれば、読み出しア クセス。writers ファイルが存在し、その中にそのユーザがなければ、読み出 しアクセス(これは readers ファイルが存在していてそのユーザがその中にな い場合にも真)。そのユーザが両方に書いてあれば、読み出しアクセス。その 他の場合、読み書きアクセス。
従って、典型的な匿名 CVS アクセスのリポジトリは CVSROOT/passwd には次
のような行があります
anonymous:XR4EZcEs0szik
/etc/passwd には次のような行
anonymous:!:1729:105:Anonymous CVS User:/usr/local/newrepos:/bin/false
CVSROOT/readers には次のような行
anonymous
当然 /etc/services と /etc/inetd.conf には以前言ったような設定を。これ で全部です。
古めの Unix システムでは8文字以上のユーザ名をサポートしていないことに
注意して下さい。これに対応するひとつの方法は、CVSROOT/passwd ファイル
とシステムファイルでそのユーザを anonymous
ではなく anon
にしておくことです。anonymous の短縮形は anon だろう、と思う人は多いで
すから。しかし、 CVSROOT/passwd ファイルにこのような行を書くほうがよい
かもしれません:
anonymous:XR4EZcEs0szik:cvsanon
(もちろんシステムファイルでは cvsanon
を使って下さい)。こうすれ
ば、多少標準的な anonymous
を使ったリポジトリアドレスを公開でき
ます。リポジトリに
cvs -d :pserver:anonymous@cvs.foobar.com:/usr/local/newrepos (etc...)
でアクセスしてくる人は、サーバ上では cvsanon (かなんか)の権限で実行さ れますが、その人たちはサーバ側でどう設定されているかなんて知る必要はな く、ただ公開されたアドレスだけ見ていればいいのです。