在配置httpd(apache)配合svn(subversion)之后,访问svn仓库正常,但是在commit文件的时候提示:
svn: Can't open file '.svn/lock': Permission denied”
今天对这个问题有些感悟,写篇文章来剖析一下httpd与svn配合时候的svnrepo(svn仓库)权限问题。
首先说问题原因:造成这个问题的主要原因就是svn仓库的权限不对。
其次说造成这个问题的可能原因:
1、svn仓库没有赋予特定的权限
2、httpd的配置文件中修改了用户
解决这个问题也很简单:
1、svnrepo赋予特定的权限,一般是
chown -R apache:apache svnrepo
2、直接给svnrepo一个777的权限。
下面,我将分析下这个问题的集中可能性配置错误
一、httpd(apache)配置的权限属及权限组
一般来讲,通过yum或者apt安装的apache默认的配置文件在/etc/httpd/conf/目录下,文件名为httpd.conf
打开httpd.conf文件,找到User行,可以看到apache配置的权限属及权限组,如下图:
编译的apache程序,一般都是在apache编译指定参数prefix的目录中,同样也叫httpd.conf
通过apache的配置文件中的User与Group,我们赋予svnrepo特定权限即可
chown -R apache:apache svnrepo
注:此处如果是其他用户或者组,请自定修改,一定要-R 继承权限
造成这个问题的主要原因是,在svnadmin create svnrepo的时候,大家通常使用root或者其他账户,apache账户的nologin属性使得无法在第一时间修正权限。
二、终极解决
修改httpd.conf中的User和Group项为当前用户及用户组。
配置svnrepo的主目录为当前用户可读可写可执行,在使用当前用户进行svnadmin create svnrepo的时候自动赋予属性与权限。
三、特殊方式解决
通常来讲,目录的权限为 所属者:所属组:其他人 三种模式。
而svnrepo需要的是httpd(apache)配置文件中的User和Group具备rwx权限,也就是读写执行权限才可以。
如果svnrepo直接具备了 ”其他人“的读写执行权限,那么也可以成功解决此问题
chmod -R 777 svnrepo
网友留言: