新規作成 | 検索 | tnetio | 一覧 | 更新履歴 | RSS SourceForge.jp

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

差分表示


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

* tnetcvs とは何か?

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

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

- CVS が稼動しているサーバに実アカウント(!=CVSアカウント)があれば、
リポジトリの状態に関わらず、ユーザ認証を受け付けたい。

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

- CVSROOT/config に、SystemAuth=yes を記述する(cvs pserver)。
- ssh 経由で接続する(cvs server)。

しかしながら、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 を読み取るのは、以下の条件を全てクリア
した場合だけです。

- 実ユーザが存在する事
- 実ユーザのホームディレクトリが存在する事。
- 実ユーザのホームディレクトリのアクセス権が、グループ、他ユーザで読み書き出来ない事。
- ~/.passwd_cvs が通常ファイルである事。
- ~/.passwd_cvs のアクセス権が、グループ、他ユーザに対して読み書き、実行できない事。
- ~/.passwd_cvs が、空(0)でない事。改行までの、何らかの文字を含んでいる事。

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

* 注意点

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