新規作成 | 編集(管理者用) | 差分 | 検索 | tnetio | 一覧 | 更新履歴 | RSS SourceForge.jp

45tnetcvs - CVS pserver 代理認証サーバについて

tnetcvs とは何か?

tnetcvs は、CVS pserver 経由でのユーザ認証を、CVSROOT/passwd を使用 せずに、実ユーザの ~/.passwd_cvs にパスワード文字列が書かれているもの として認証を行い、認証に成功した場合、そのユーザ権限で cvs server を 起動するプログラムです。

どの様な場合に効果的か?

上記の事を行いたければ、現在の CVS でも、以下のどちらかの方法で利用できます。

しかしながら、CVSROOT/config に、SystemAuth?=yes を記述する方法の場合、 そのサーバが PAM 経由でしかパスワード情報を読み取れない場合、CVS は PAM に対応していませんので、ユーザ認証に失敗してしまいます。

 

仮に、CVS がサーバ上にあるパスワード情報を正しく読み取れるとしても、 cvs pserver でユーザ認証を行う場合、CVS クライアント側が、符号化パスワード 情報を保存してしまいますので、最悪の場合、SystemAuth?=yes とした場合に、 システムログインパスワードが漏れる可能性があります。

 

ssh 経由での接続は、一番安全で確実な方法ですが、ssh の知識がわずかでも 必要ですし、CVS に加え、別途 ssh を入手しなければなりません。

 

tnetcvs は、クライアントに対しては、cvs pserver と同等の振る舞いをしますが、 ユーザー認証は、そのサーバ上の ~/.passwd_cvs で認証を行い、認証に成功した 場合、そのユーザで cvs server を起動します。これにより、システム ログインパスワードを使用せずに、実アカウントでの CVS 利用が可能になります。

tnetcvs の特徴

tnetcvs は、CVS pserver のユーザ認証部分を担当するだけのサーバで、認証に 成功した場合、そのユーザ権限で cvs server を起動します。従って、CVS(client/server) に対して何らかのパッチを当てて、再コンパイルする必要はあり ません。CVS pserver 経由で今まで使用していれば、CVS プログラムはそのまま 利用できます。

tnetcvs を利用する前に

まず、99CVSpserverをよく読んで下さい。tnetcvs は、システムログイン パスワードを使用せずに認証を行いますが、通信上は、CVS pserver と同じです ので、セキュリティ的強度が上がる訳ではありません。

 

CVS pserver 、または tnetcvs を使わずに、ssh 経由で CVS が利用できるなら ば、それをおすすめします。

tnetcvs のコンパイル

tnetcvs は、標準ではコンパイルされません。これは、CVS 符号化パスワードの デコードを行うために CVS のソース内にあるデコード関数を使用するためです。

tnetcvs をコンパイルするには、CVS のソースを入手し、展開後、 tnetio-{VERSION}/src/Makefile 内にある、CVSDIR を、展開した ディレクトリにあわせ、

 make tnetcvs

と入力して、tnetcvs をコンパイルしてください。

tnetcvs の利用法

tnetcvs は、TCP 待ち受けを tnetsrv に頼りますので、tnetsrv と併用します。 また、tnetcvs は、各ユーザのホームディレクトリを参照し、そのユーザー権限に切り替えますので、root 権限で動作する必要があります。

 # tnetsrv port tnetcvs [exec-user]

port
tnetcvs を待受けさせたいポートを指定して下さい。CVS pserver の標準ポートを使用するなら、2401 です。
[exec-user]
tnetcvs でユーザー認証に成功した場合、認証した実ユーザーではなく、[exec-user]に切り替えてから、cvs server を起動します。これにより、$Id$ などに記録されるユーザー名は、全て [exec-user] になりますのでご注意下さい。

CVS パスワードファイル(~/.passwd_cvs) について

tnetcvs は、指定したユーザの、~/.passwd_cvs に、パスワード文字そのものが 書き込まれているとして読み取ります。

ただし、tnetcvs が、~/.passwd_cvs を読み取るのは、以下の条件を全てクリア した場合だけです。

上記の条件を全てクリアできない場合、tnetcvs は、ユーザ認証エラーを返します。

注意点

cvs は、PATH の通っているディレクトリに存在しなければなりません。