ユーザーが許可されていない場合
svnserverで実行されている場合は、[リポジトリパス]/conf/svnserve.confの中身を確認しましょう。
apache httpd+svnで実行されている場合は、リポジトリにhttpdを動かしているユーザー(大抵はapacheやwww)の書き込み権限が必要です。
- [paso ~]chown apache:apache -R [リポジトリパス]
iptablesで許可されていない場合
現状のiptablesの状態を知るため、「iptables -L」でチェックします。
- [root ~] iptables -L
- Chain INPUT (policy DROP)
- target prot opt source
- ACCEPT all -- anywhere anywhere
- ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ftp
- Chain FORWAD (policy DROP)
- .
- .
上記のように、svnやhttpに該当するようなルールが無い場合は、それに関するルールを追加する必要があります。
- [root ~]iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
- httpd+SVNの場合はhttpのみでOK
- [root ~]iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport http -j ACCEPT
SELinuxで許可されていない場合
特にApache httpd+SVNの場合ですが、SELinuxで許可されていない場合、db/txn-current-lockが読めないため、
コミット時に「[リポジトリパス]/db/txn-current-lock': Permission denied」と表示されます。
手っ取り早く回避するにはSELinuxの設定を「Permissive」にします。
- [root ~]getenforce
- Enforcing
- [root ~]setenforce Permissive
- [root ~]getenforce
- Permissive
厳密に設定したい方はSELinuxのhttpdの設定を行い、リポジトリのコンテキスト情報を変更する必要があります。
- [root ~]setsebool httpd_builtin_scripting on
- [root ~]setsebool httpd_enable_cgi on
- [root ~]chcon -R -h -t httpd_sys_content_t [リポジトリパス]
- lsを使ってコンテキストの状態を確認
- [root ~]ls -Z
- -rw-r--r--. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 README.txt
- drwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 conf/
- drwxr-xr-x. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 dav/
- drwxr-sr-x. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 db/
- -r--r--r--. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 format
- drwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 hooks/
- drwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 locks/