ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × 目次 mod_dav_svn+mod_authz_svnでSubversionサーバの構築 本記事で出来るようになること 環境 インストール Apache Subversion httpベースでSubversionリポジトリにアクセス http.confの設定 mod_dav_svnの設定 リポジトリ所有者の変更 確認 BASIC認証を加える subversion.confの設定 正規ユーザーの追加 リポジトリへのアクセス制御設定 確認 SSLを使うようにする 秘密鍵の生成 公開鍵の生成 コメント 自己証明書の生成 文書の過去の版を表示しています。 mod_dav_svn+mod_authz_svnでSubversionサーバの構築 本記事で出来るようになること httpベースでSubversionリポジトリにアクセス。 httpベースでBASIC認証を用いてパスごとにSubversionリポジトリのアクセス制御。 http+SSLでBASIC認証を用いてパスごとにSubversionリポジトリのアクセス制御。 環境 使用ソフト FreeBSD 9.0-BETA3 Apache 2.2.21 Subversion 1.7.0 サーバ名svnsvr リポジトリパス /doko/soko/svn/repos 認証系のファイル置き場 /doko/soko/svn インストール Apache $ sudo portinstall www/apache22 $ sudo echo 'apache22_enable="YES"' >> /etc/rc.conf Subversion $ sudo portinstall devel/subversion オプションでMOD_DAV_SVNにチェックが入ってなければチェックする。 httpベースでSubversionリポジトリにアクセス http.confの設定 以下の記述があるか確認。無ければ追加。 /usr/local/etc/apache22/httpd.conf LoadModule dav_svn_module libexec/apache22/mod_dav_svn.so LoadModule authz_svn_module libexec/apache22/mod_authz_svn.so mod_dav_svnの設定 /usr/local/etc/apache22/Includes/subversion.conf <IfModule dav_svn_module> <Location /svn-repos> # リポジトリにアクセスする時のURL(http://svnsvr/svn-reposという風になる) DAV svn SVNListParentPath on SVNParentPath /doko/soko/svn/repos # 実際のリポジトリのパス </Location> </IfModule> 文法チェック Apacheの設定を弄ったら起動前にチェックすると吉。 $ apachectl configtest Syntax OK リポジトリ所有者の変更 $ sudo chown -R www:www /doko/soko/svn/repos 確認 Apacheを起動 $ sudo apacheclt start して、ブラウザからリポジトリ(http://svnsvr/svn-repos/)にアクセスしてみる。設定に間違いがなければ、リポジトリのブラウズが出来るハズ。 閉じたネットワークで個人リポジトリとして使うなら、これだけでも十分かも(それならsvnserverでいいじゃん!っていうツッコミは無しで)。 BASIC認証を加える subversion.confの設定 必要な設定を追加する。 /usr/local/etc/apache22/Includes/subversion.conf <IfModule dav_svn_module> <Location /svn-repos> DAV svn SVNListParentPath on SVNParentPath /doko/soko/svn/repos Satisfy Any # 匿名ユーザーを許可 Require valid-user # 匿名ユーザーに許可されてない操作は正規ユーザーを要求 AuthType Basic # ベーシック認証を使う AuthName "Subversion Authorization" # 認証領域の設定。設定を忘れると500エラーで小一時間苦しむことになるので注意。 AuthUserFile /doko/soko/svn/htpasswd # ベーシック認証のユーザーとパスワードファイル AuthzSVNAccessFile /doko/soko/svn/authz # リポジトリのアクセス制御情報ファイル </Location> </IfModule> 正規ユーザーの追加 <ilcode>AuthUserFile</ilcode>で指定したファイルにベーシック認証ユーザーを追加する。 $ sudo htpasswd -c /doko/soko/svn/htpasswd Decomo New password: Re-type new password: Adding password for user Decomo 既にファイルがある場合、つまり2人目以降は-cオプションは付けない。さもないと新規作成扱いとなり、以前のユーザー情報が消えてしまう。 リポジトリへのアクセス制御設定 <ilcode>AuthzSVNAccessFile</ilcode>で指定したファイルに、リポジトリへのアクセス制御設定を記述する。 [groups] admins = Decomo devels = dev1, dev2 testers = tester1, tester2 [/] @admins = rw * = r [Project1:/] @devels = rw [Project2:/] [Project2:/for_tester] @tester = rw [secret:/] Decomo = rw * = この例では、 adminsグループのメンバーはDecomo、develsグループのメンバーはdev1とdev2、testersグループのメンバーはtester1とtester2。 全リポジトリのデフォルト権限は、ゲストユーザーを含む全ての人が読み込み権限を、adminsグループは加えて書き込み権限を持つ。 Project1リポジトリはdevelsグループも書き込み権限を持つ。 Project2リポジトリの権限はデフォルトだが、/for_testerディレクトリ以下はtestersグループも書き込み可能。 secretリポジトリはDecomoのみ読み書き可能。他人はアクセス不可。 という設定になる。 確認 ここまでの設定が上手くいっていれば、Apache再起動後、パスごとのアクセス制御が有効になる。 SSLを使うようにする 認証やリポジトリとのやりとりが平文で行われるのはセキュリティ上よろしくないので、SSLを用いて通信路を暗号化する。 個人用途のリポジトリなので自己証明書を使う。 秘密鍵の生成 # openssl genrsa -aes256 2048 > /doko/soko/svn/secret.key Generating RSA private key, 2048 bit long modulus .........................................+++ ...............................................................+++ e is 65537 (0x10001) Enter pass phrase:(パスワード) Verifying - Enter pass phrase:(パスワード) 公開鍵の生成 # openssl req -new -key server.key >server.csr Enter pass phrase for server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Kanagawa Locality Name (eg, city) []:Yokohama Organization Name (eg, company) [Internet Widgits Pty Ltd]:PRODUCTION KusoGA Organizational Unit Name (eg, section) []:CA Common Name (eg, YOUR name) []:svnsvr Email Address []:(メールアドレス) Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:(入力しない) An optional company name []:(入力しない) 自己証明書の生成 # openssl x509 -in server.csr -days 3650 -req -signkey server.key > server.crt Signature ok subject=/C=JP/ST=Kanagawa/L=Yokohama/O=PRODUCTION KusoGA/OU=CA/CN=svnsvr/emailAddress=メールアドレス Getting Private key Enter pass phrase for server.key:(秘密鍵で入力したパスワード) コメント フルネーム: メールアドレス: ウェブサイト: コメントを入力. Wiki文法が有効です: 人間の証明として、ボックス内の全ての文字を入力してください。 この項目は空のままにして下さい: コメントの購読 freebsd/mod_dav_svn_mod_authz_svnでsubversionサーバの構築.1321029802.txt.gz 最終更新: 2011-11-12 01:43by Decomo