2013年2月2日土曜日

リポジトリ別にアクセス制御するSubversionの設定方法

プロジェクト別にSVNのリポジトリを分け、LDAPのグループとひも付けることにより、
他のプロジェクトのリポジトリへのアクセスができないように設定します。
※OpenLDAPの設定情報はこちらをご参照ください。


【OpenLDAPサーバ】
OS: CentOS 6.3(64-bit)
openldap-servers: 2.4.23-26.el6_3.2
IP: 192.168.77.146

【Webサーバ】
OS: CentOS 6.3(64-bit)
Apache: 2.2.15
Subversion: 1.6.11
IP: 192.168.77.147


■subversionインストール
[root@web03 ~]# yum -y install subversion (中略) Package subversion-1.6.11-7.el6.x86_64 already installed and latest version Nothing to do [root@web03 ~]#
※すでにインストール済み。

■mod_dav_svnインストール
[root@web03 ~]# yum -y install mod_dav_svn (中略) ====================================================================== Package Arch Version Repository Size ====================================================================== Installing: mod_dav_svn x86_64 1.6.11-7.el6 base 79 k Transaction Summary ====================================================================== Install 1 Package(s) (省略)
※/etc/httpd/conf.d/subversion.conf が自動生成された。

■svnリポジトリ格納ディレクトリ作成
[root@web03 ~]# mkdir /var/www/svn [root@web03 ~]# mkdir /var/www/svn/repos1 [root@web03 ~]# mkdir /var/www/svn/repos2

■svnリポジトリ作成
[root@web03 ~]# svnadmin create /var/www/svn/repos1/project_A [root@web03 ~]# svnadmin create /var/www/svn/repos1/project_B [root@web03 ~]# svnadmin create /var/www/svn/repos2/project_C [root@web03 ~]# svnadmin create /var/www/svn/repos2/project_D

■所有者変更および確認
[root@web03 ~]# chown -R apache: /var/www/svn/ [root@web03 ~]# ll /var/www/svn/repos2/project_D/ 合計 24 -rw-r--r-- 1 apache apache 229 2月 1 23:13 2013 README.txt drwxr-xr-x 2 apache apache 4096 2月 1 23:13 2013 conf drwxr-sr-x 6 apache apache 4096 2月 1 23:13 2013 db -r--r--r-- 1 apache apache 2 2月 1 23:13 2013 format drwxr-xr-x 2 apache apache 4096 2月 1 23:13 2013 hooks drwxr-xr-x 2 apache apache 4096 2月 1 23:13 2013 locks [root@web03 ~]#
※svnadminには削除するサブコマンドが用意されていなため、削除する場合はrmコマンドを利用する。

■subversion.conf設定
[root@web03 ~]# vi /etc/httpd/conf.d/subversion.conf [root@web03 ~]# grep -v "^#\|^$" /etc/httpd/conf.d/subversion.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /repos1> DAV svn SVNListParentPath on SVNParentPath /var/www/svn/repos1 AuthType Basic AuthName "subversion authentication" AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL ldap://192.168.77.146:389/ou=unit01,dc=open_ldap,dc=com?cn?sub?(objectClass=person) Require valid-user </Location> <Location /repos2> DAV svn SVNListParentPath on SVNParentPath /var/www/svn/repos2 AuthType Basic AuthName "subversion authentication" AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL ldap://192.168.77.146:389/ou=unit02,dc=open_ldap,dc=com?cn?sub?(objectClass=person) Require valid-user </Location> [root@web03 ~]# /etc/init.d/httpd restart
※表示の都合上タグを"<"と">"で記載。
※「SVNListParentPath on」とするとリポジトリ一覧を表示可能。



■ブラウザからアクセス
https://192.168.77.147/repos1/
Basic認証の画面が表示され、OpenLDAPに登録したユーザでアクセスできるはず。


その後、
https://192.168.77.147/repos2/
にアクセスすると再びBasic認証画面が表示される。



■TortoiseSVNおよび日本語パックをダウンロード
※以下の情報はググればいくらでも出てくるので説明を簡略化します。
http://sourceforge.jp/projects/tortoisesvn/releases/ からOSに適合するインストーラをダウンロードする。
TortoiseSVNをダウンロードしてインストールする。
日本語パックをダウンロードしてインストールする。

■TortoiseSVN設定
※以下の情報はググればいくらでも出てくるので説明を簡略化します。
⇒日本語化設定
デスクトップ上で右クリック⇒「TortoiseSVN」⇒「Settings」で「Settings」ウィンドウを開き、Language→日本語

⇒リポジトリチェックアウト(ダウンロード)
デスクトップ上で右クリック⇒「SVNチェックアウト」で「チェックアウト」ウィンドウを開き、
リポジトリのURL⇒リポジトリのURL(例→ https://192.168.77.147/repos1/project_A/)
チェックアウトディレクトリ⇒クライアントマシン上の任意のフォルダ
「OK」ボタン押下して、作成したリポジトリがダウンロードされることを確認

⇒リポジトリコミット(アップロード)
クライアント上のリポジトリ内に適当なフォルダやファイルを作成する
リポジトリ上で右クリック⇒「SVNコミット」で「コミット」ウィンドウを開き、
「全て選択/全て非選択」をチェックして「OK」ボタン押下
※ユーザー名/パスワード入力画面にて、OpenLDAPで登録したユーザー名/パスワードを入力。

いったんクライアント上のリポジトリを削除後再度リポジトリチェックアウトを実施し、
リポジトリコミットした内容が反映されていることを確認

0 件のコメント:

コメントを投稿