Subversion权限配置的一些参考(纯svn和基于apache)

安全和权限

-          对于以svnserve -d启动的服务器,修改代码库目录/conf/svnserve.conf,主要步骤:(在配置文件中,变量前不要有空格。)

1)        对于svnserve.conf,注意[general]段,其中4项的主要含义:

Ø         anon-access 定义匿名用户的权限(writereadnone)。

Ø         auth-access 定义认证过用户的权限(writereadnone

Ø         password-db 定义用户密码列表文件名

Ø         realm 一般是版本库的uuid。如果有2个版本库的这个属性一样,那么password-db的值也必须一样。反之亦然。

2)        定义用户密码列表文件内容,格式:

[users]

    用户名=密码,注意这个是大小写敏感的。

3)        启动服务器,在提示用户输入安全信息时,缺省是用户的OS的登录名,此时直接提示输入密码。如果密码不对,则会提示输入用户名,然后是密码。

例子:

svnserve.conf

[general]

### 禁止匿名用户访问

 

anon-access = none

### 验证过的用户具有读写权限

 

auth-access = write

### 定义用户密码列表文件名文件名为

userlist.txt

 

 

password-db = userlist.txt

### 定义

realm

 

 

realm = My First Repository

用户密码列表文件名

userlist.txt

[users]

foxgem1=foxgem1

对于这种方式,无法定义对于代码库下具体目录的权限。如果有这个需要,那么可以采用与Apache2集成的方式解决。

-          对于与Apache2集成的服务器,修改httpd.conf,主要步骤:(需要在Apache2中配置mod_authz_svn,建议先安装Apache2,再安装Subversion。此处主要是利用Apache2对于目录的访问控制,可以从Apache2的手册中获得更多的信息。)

1)        使用htpasswd建立userlist。如果文件不存在,那么使用htpasswd -cm;文件存在,则使用htpasswd -m。其中c代表createm代表使用MD5加密口令。如:

   $ ### First time: use -c to create the file

   $ ### Use -m to use MD5 encryption of the password, which is more secure

   $ htpasswd -cm /etc/svn-auth-file harry

    New password: *****

    Re-type new password: *****

    Adding password for user harry

   $ htpasswd /etc/svn-auth-file -m sally

    New password: *******

    Re-type new password: *******

    Adding password for user sally

 

 

 

2)        httpd.conf中的<location>2种使用方式:

Ø         只允许指定用户

    <Location /svn>

       DAV svn

       SVNParentPath /usr/local/svn

      

AuthType Basic

 

 

       AuthName "Subversion repository"

 

 

 

       AuthUserFile /etc/svn-auth-file

 

 

 

       Require valid-user

 

 

 

    </Location>

Ø         对于指定操作之外的用户,应用权限认证

    <Location /svn>

       DAV svn

       SVNParentPath /usr/local/svn

      

AuthType Basic

 

 

       AuthName "Subversion repository"

 

 

 

       AuthUserFile /path/to/users/file

 

 

 

       # 对于get操作之外,需要验证。

 

       <LimitExcept GET PROPFIND OPTIONS REPORT>

 

 

 

          Require valid-user

 

 

 

       </LimitExcept>

    </Location>

3)        以上2步建立了和svnserve -d相同的访问控制。如果要应用目录控制,那么:

a)         建立目录访问策略文件,文件格式与svnserve.conf的语法类似。对于每个要控制的路径:

[repos-name:path][path]

username= r,rw

如果没有提及用户,那么就没权限;如果指明用户,但是等号右边什么也不写,即是显式的拒绝。如果左边使用*,则表示所有的用户。对于使用了SVNParentPath,需要指明repos-name。否则,可以省略。在文件中还可以使用[groups]建立组,例子:

[groups]

calc-developers = harry, sally, joe

paint-developers = frank, sally, jane

everyone = harry, sally, joe, frank, sally, jane

 

 

[calc:/projects/calc]

###使用时注意,组名前有@

@calc-developers = rw

[paint:/projects/paint]

@paint-developers = rw

jane = r

 

 

 

b)        <location>中使用AuthzSVNAccessFile,典型的3种配置方式:

方式一:允许匿名存取

<Location /repos>

       DAV svn

       SVNParentPath /usr/local/svn

      

AuthzSVNAccessFile /path/to/access/file

 

 

    </Location>

方式二:不允许匿名存储

 

    <Location /repos>

       DAV svn

       SVNParentPath /usr/local/svn

      

AuthzSVNAccessFile /path/to/access/file

 

 

       # 只有认证用户可以存取

 

       Require valid-user

 

 

 

       # 认证方式

 

       AuthType Basic

 

 

 

       AuthName "Subversion repository"

 

 

 

       AuthUserFile /path/to/users/file

 

 

 

    </Location>

方式三:方式12的混合模式

 

<Location /repos>

       DAV svn

       SVNParentPath /usr/local/svn

      

AuthzSVNAccessFile /path/to/access/file

 

 

       # 先尝试匿名,如果不行再尝试认证用户

 

       Satisfy Any

 

 

 

       Require valid-user

 

 

 

       # 认证方式

 

       AuthType Basic

 

 

 

       AuthName "Subversion repository"

 

 

 

       AuthUserFile /path/to/users/file

 

 

 

    </Location>

例子:

httpd.conf

 

 

 

<Location /repo>

    DAV svn

    svnpath D:/studycases/subversion/repository

    AuthzSVNAccessFile D:/studycases/subversion/pathright.txt

    Satisfy Any

    Require valid-user

    AuthType Basic

    AuthName "Subversion repository"

    AuthUserFile D:/studycases/subversion/svnuser.txt

</Location>

用户密码列表文件名

svnuser.txt

foxgem:$apr1$kY/…..$rXDeLPlm9b0uacF7zM.dl.

(注意这是使用htpasswd产生的)

 

目录访问策略文件

pathright.txt

 

[/project]

foxgem= r

[/test]

foxgem=rw

你可能感兴趣的:(apache,应用服务器,SVN,Access,subversion)