主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

CentOS で svn+ssh 環境の構築

最終更新日 2007-06-10 22:18:31 (1年以上前の記事です)

次回の CentOS に Subversion を導入する では単純に over http の SVN 環境を導入したけど、
実際にソースを公開して、一方でソースを更新するにはアクセス制限をしとく必要がある。
今回は svn+ssh を構築して、 ssh アクセスでの更新のみを許可する環境を作ってみた。

svn ユーザ/グループの作成

まず svn ユーザとグループを作成する。
グループ名は svnusers とし、ユーザはとりあえず svn とした。

# groupadd svnusers
# useradd svn -g svnusers -s /bin/bash

ユーザを作成したら、これらのユーザが作成するファイルのパーミッションの初期値が 775 になるように umask を 002 にする。
これは他の svn ユーザが作成したファイルでも svnusers に属していれば更新を可能にするため。

# /home/svn/.bashrc
# User specific aliases and functions

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

umask 002

レポジトリの変更

次に前回作成した親レポジトリディレクトリの属性を変更する。
変更内容としては、所有者を root:svnusers に変更し、パーミッション値を 775 に変更する。

# chown -R root:svnusers /home/svn
# chmod -R 775 /home/svn

これで apache からの更新は不可能になった。
ただ、このままでは apache は更新できないことが分からずに、エラーアクセスをし続けるので、 apache 側の設定も変更してやる。

# vi /etc/httpd/conf.d/subversion.conf
<Location /repos>
   DAV svn
   SVNParentPath /home/svn
#
#   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
      deny from all
#      AuthType Basic
#      AuthName "Authorization Realm"
#      AuthUserFile /path/to/passwdfile
#      Require valid-user
   </LimitExcept>
</Location>
ここまで行ったらサーバの設定を再読み込みさせて、テストで ci を実行。
# service httpd reload
$ export SVN_EDITOR=vi
$ svn ci Test/Form1.cs
svn: Commit failed (details follow):
svn: MKACTIVITY of '/repos/Test/!svn/act/2dac59ce-9332-0410-8cf3-f8372563886f': 
403 Forbidden (http://www.enjoitech.jp)
良さそう。

接続テスト

ssh サーバの設定から接続までとかはここでは省きます。で、実際に接続してみる。
$ svn list svn+ssh://svn@localhost/home/svn/Test
Enter passphrase for key '/home/svn/.ssh/id_rsa':
App.ico
AssemblyInfo.cs
Form1.cs
Form1.resx
WindowsApplication2.csproj
WindowsApplication2.sln
何となくできてるっぽい。 ci も試す。
$ svn ci Test/Form1.cs
Enter passphrase for key '/home/svn/.ssh/id_rsa':
Sending        Test/Form1.cs
Transmitting file data .
Committed revision 3.

オッケー。
これで、開発者は svn+ssh 、その他は over http でやるという環境が完成。
基礎が無かったので、結構道のり長かったよ。

参考文献

Subversion Dev: svn+ssh Setup Mini-tutorial
redemption in a blog - Setting up svnsync-ed (mirrored) SVN repositories on Ubuntu (part 1 of 2)

最終更新日 2007-06-10 22:18:31

コメント このエントリーをはてなブックマークに追加

フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank2, rank3, rank7, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google