svn: Can't open file '.svn/lock': Permission denied”

版本管理 0 894 团子精英 收藏

在配置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配置的权限属及权限组,如下图:

svn0.png


编译的apache程序,一般都是在apache编译指定参数prefix的目录中,同样也叫httpd.conf

通过apache的配置文件中的User与Group,我们赋予svnrepo特定权限即可

chown -R apache:apache svnrepo

注:此处如果是其他用户或者组,请自定修改,一定要-R 继承权限


svn1.png


造成这个问题的主要原因是,在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


相关推荐:

网友留言:

您需要 登录账户 后才能发表评论

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码