深入理解 Linux SVN Authz 配置文件 (linux svn authz)

Subversion(SVN)是一个版本控制和文件管理系统,它可以帮助团队协作管理代码库的版本。SVN不仅可以控制代码的版本,还可以控制访问权限,防止非授权人员访问和修改代码。这就是 SVN Authz 配置文件的作用。在 Linux 系统中,用户可以使用 SVN Authz 配置文件精确控制 SVN 仓库中的用户权限。本文将深入剖析 SVN Authz 配置文件的原理,并介绍如何配置 SVN Authz 文件。

一、Authz 文件基础知识

1.1 Authz 配置文件简介

Authz 配置文件是 SVN 仓库保护机制的一部分,通过 authz 文件,管理员可以控制 SVN 仓库中不同用户和组的访问权限。一个完整的 SVN 仓库映射至一个配置文件,管理员可以在该文件中配置哪些用户或组有权访问 SVN 仓库中的哪些路径。Authz 配置文件选择文本格式,例如 .ini 文件或 .conf 文件。

1.2 Authz 文件的工作原理

当 SVN 服务器接受一个客户端用户的访问请求时,服务器根据 authz 文件中的定义检查该用户是否有足够的权限来读取或修改仓库的特定目录或文件。SVN 服务器使用 authz 文件来确保只有授权用户才能访问仓库。

二、配置 Authz 文件

2.1 文件格式

Authz 文件的格式包含两类配置信息,分别是访问规则和用户/组说明。其中,访问规则是用来确定哪个用户或组可以访问仓库中的哪个路径。用户/组说明用于说明不同用户和组的身份。

2.2 配置示例

一个简单的 Authz 文件结构示例如下:

“`

[groups]

project1_team = Tom, Bill, Loka, Marry

[/]

* =

project1_team = r

@admin = rw

[/trunk]

* =

project1_team = rw

@admin = rw

[/branches]

* =

project1_team = r

@admin = rw

[/tags]

* =

project1_team = r

@admin = rw

“`

在上面的示例配置中,groups (用户/组说明)部分定义了一个名为 project1_team 的组,组成员为 Tom、Bill、Loka 和 Marry。其中,方括号 [ ] 用于定义访问规则。 [/] 表示访问整个 SVN 仓库,[trunk] 表示仓库的主干,[branches] 表示分支,[tags] 表示标签。

对于每个路径,* 表示匹配所有用户,@admin 表示管理员组。r 表示只读权限,rw 表示读写权限。在上面的示例中,任何用户或组都有权读取所有的路径。project1_team 组有权读取主干和分支路径,而管理员组有权读取和写入整个仓库。

2.3 访问规则

在定义访问规则时,需要使用路径和访问控制标识符。路径是 SVN 仓库中的一个目录或文件路径。而访问控制标识符则决定了访问者对该路径的访问权限。

以下是一些常见的标识符:

– * —— 匹配所有用户。

– @group_name —— 匹配特定的组。

– username —— 匹配特定的用户。

2.4 用户/组说明

在 authz 文件中定义用户和组的方式如下:

“`

[groups]

project1_team = Tom, Bill, Loka, Marry

“`

其中,groups 部分声明了一个组名为 project1_team,组成员包括 Tom、Bill、Loka 和 Marry。这里的组名和组成员都是自定义的,可以根据实际情况修改。

三、

在本文中,我们深入理解了 Linux SVN 服务器上的 Authz 配置文件,以及它的工作原理和基本配置。掌握 Authz 文件的配置和使用,可以更好地管理和保护 SVN 仓库,确保项目的安全和可靠性。在实际应用中,管理员可以根据需要选择不同的文件格式和配置方式,灵活控制 SVN 仓库的访问权限,确保团队合作高效稳定。

相关问题拓展阅读:

在linux下安装SVN+Apache时,出现 you don’t have permission to access/svn on this server 问题

data/svn/authz.cong文件中是否有给test账号赋权限呢?

验证用户的文件你是建袭返让了,貌似svn仓库你还没有建吧,如拍局果已经有仓库了,检查世弯下权限文件/data/svn/authz.cong写错没有。。

chown apache:apache -R /data/svn

不知道你的svnroot目录下是否已经有了svn内容了还有就是你的码纳燃svn配茄兆置中/是否允许被访问迟虚也要看一下呢

如何如何才linux环境下使用apache和svn进行集成

步骤方法:

一 准备需要的安装包。

(1)下载 apache 。通过官网下载,使用了版本 : httpd-2.2.23.tar.gz

(2) 下载Subverson 。建议百度搜索下载。

二 安装

安装顺序有要求, 先安装Apache ,再安装Subversion 。

1 安装apache

把安装压缩包上传linux环境/usr/local/下面。

# cd /usr/local/

# tar zxfhttpd-2.2.23.tar.gz

# cd /usr/local/httpd-2.2.23

# configure -prefix=/usr/local/apache -enable-dav -enable-so && make && make install

2 启动apache, 安装无错误后 进入

#cd /usr/local/apache/bin

# ./apachectl start

若提示启动失败,端口口被占用: #vi /usr/local/apche/conf/http.conf

找到

#Listen 12.34.56.78:80

Listen 80

将80修改为自己的端口好。我修改为81 Listen若启动成功,不用修改端口号。

重启apache ,客户端输入地址

(端口号为81) 或

(端口号默认80)

页面展示

It works! 字样 ,表示安装成功。

3 安装Svn

把安装压缩包和拷到linux环境野并/usr/local/下面。

# cd /usr/local/

# tar zxf subversion-1.6.12.tar.gz

# tar zxf subversion-deps-1.6.12.tar.gz

(安装包解压缩,解压缩后生成安装文件芹兆夹,两个文件都会解压缩到同一个文件夹下)

# cd /usr/local/subversion-1.6.12

# rm -rf apr

# rm -rf apr-util(删除subversion自带的apr和apr-util文件夹,用apache的就可以)

# cd /usr/local/subversion-1.6.12

#

./configure -prefix=/usr/local/subversion -with-apxs=/usr/local/apache/bin/颂首迹apxs -with-apr=/usr/local/apache/bin/apr-1-config -with-apr-util=/usr/local/apache/bin/apu-1-config

#

make

#

make install

# svnserve –version

— 安装到此,没有出现任何错误。但是 执行#svnserve

–version 显示的版本不是1.6的,而是1.4(老版本)说明之前安装过旧版本的svn。

解决办法#vi

/etc/profile

在最后填加

#set svnpath

export PATH=/usr/local/subversion1.6/bin:$PATH

export PATH

保存退出。

执行 #scource /ect/profile

重新执行 #svnserve –version –ok

4 检查svn是否与apache兼容

# vi /usr/local/apache/conf/httpd.conf

查找文件中是否增加了

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

两行信息,并且查看/usr/local/apache/modules 下是否有mod_dav_svn.so,

和mod_authz_svn.so 文件

如果http.conf 中没有增加代码。modules 下有mod_dav_svn.so,

和mod_authz_svn.so

文件,再http.conf中增加那两行代码。

如果没有mod_dav_svn.so,

和mod_authz_svn.so,svn安装的错误。按照步骤重装。

配置 svn+apache

1 创建svn库

(1) 创建 svn专用户 # useradd pocsvn

(2) 创建SVN 版本库目录 #mkdir /home/pocsvn/project

(3) 创建SVN仓库 # svnadmin create /home/pocsvn/project/poc

(4) 将目录 project 目录拥有者修改为 pocsvn 用户 :

#chown -R pocsvn:pocsvn /home/pocsvn/project

并 增加权限 chmod 755 /home/pocsvn/project

2 配置svn 依赖apache

(1) 使用root用户 # vi /usr/local/apache/conf/httpd.conf 将

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

前的注释去掉(我安装时这两行没有注释。网上查有人说这两行会有注释。有的话去掉注释)

(2 )找到

User apache

Group apache

修改为

User pocsvn

Group pocsvn

(3) 在文件末尾添加

DAV svn

SVNParentPath /home/pocsvn/projectsvn库的根目录

AuthType Basic

AuthName “welcome to cjybt”浏览器登陆时的提示信息。随便写

AuthUserFile /home/pocsvn/project/passwd

— 用户的密码信息

AuthzSVNAccessFile /home/pocsvn/project/poc/conf/authz

— 指向svn库的conf目录下authz

Require valid-user

— (”Require valid-user”告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能之一个用户可以访问新建库)

(4) 生成passwd文件

#htpasswd -bc /home/pocsvn/project/passwd hello hello123

—在/home/pocsvn/project/下生成passwd文件,用户名为hello,密码为hello123

#htpasswd -b /home/pocsvn/project/passwd hello2 hello123

—在/home/pocsvn/project/passwd文件中添加用户名为hello,密码为hello123

(5) 编辑用户权限文件 authz

#vi /home/pocsvn/project/poc/conf/authz

表示群组设置

admin = hello –表示admin群组里的成员有hello,如果要配置多个,用逗号分隔

develop = hello2 –表示develop群组里的成员有hello2,如果要配置多个,用逗号分隔

表示仓库poc的根目录下的访问权限

hello = rwpoc仓库hello用户具有读和写权限

hello2 = rpoc仓库hello2用户具有只读权限

@admin = rw –表示群admin的成员都具有读写权限

@develop = r –表示群poc的成员都具有只读权限

表示在所有仓库的根目录下

* = r表示对所有的用户都具有读权限

— 在编辑authz时,所有行都必须要顶头写,不能有缩进,否则报错。

(5)修改权限

chmod 755 /home/pocsvn/project/passwd

chown -R pocsvn:pocsvn /home/pocsvn/project/passwd

(6)启动svn

切换到pocsvn用户 #svnserve -d –listen-portr /home/pocsvn/project

-d 表示以 daemon 方式(后台运行)运行

-r 指定根目录是/home/pocsvn/project

–listen-port表示在8888端口上进行监听

检查svn其否启动

ps -ef|grep svnserve 或 ps -ef|grep 8888

(7)重启apache,切换回root用户。启动apache

(8) 客户端 访问 : 出现登陆窗口则为配置成功。

–如果登陆后提示403或无法访问。为权限配置不对,重新配置下权限即可。

至此,svn和apache结合的svn配置就搭建好了。

在安装的过程中出现的问题总结如下:

1 启动apache 报错httpd: Syntax error on line 111 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so

into server: /usr/local/subversion/lib/libsvn_subr-1.so.0: undefined symbol: apr_hash_clear

解决办法:重新安装apache,注意增加参数

命令 # ./configure –prefix=/usr/local/apache2/ –enable-dav –enable-so

–enable-dav –enable-so参数是必须要加的,你还可以根据您的需要添加其他的参数。

–enable-dav 启用davweb支持,是subversion+apache组合必选,缺少的话,在运行apache会出现undefined symbol: dav_register_provider的错误

–apr 和 apr-util一般会在httpd的安装包内,subversion安装会使用到apr和par-util,如果当前系统没有,更好安装一下

2 重转apache后。必须重装subversion,重装svn是执行make ,make install 是提示有错误信息。

可以先执行# make clean ,然后在 #make ,#make install

更好一次装好,重装的话问题不少。

3 apr 和apr-util有问题。

网上资料在svn和apache集成的时候是有分开装apr,和apr-util的,这两个在apache中就有了。删除原来的。

# rpm -qa|grep subversion

subversion-1.4.4.el5

# rpm -e –allmatches subversion

# rpm -qa|grep apr

apr-1.2.7-11

apr-util-1.2.7-7.el5

apr-1.2.7-11

apr-util-1.2.7-7.el5

# rpm -e –allmatches apr-util

# rpm -e –allmatches apr

# echo ‘/usr/local/APR/lib’>>/etc/ld.so.conf

# echo ‘/usr/local/ARP-util/lib’>>/etc/ld.so.conf

# ldconfig

安装apache

1、已root用户登陆centos

Connecting to 192.168.1.133:22…

Connection established.

Escape character is ‘^@>’.

Last login: Sat Feb 25 13:10:

#

2、创建并切换到下载文件存放目录:

# mkdir /soft && cd /soft

3、下载httpd-2.2.22.tar.gz

# wget

4、解压下载下来的 apache 包

# tar -xzvf httpd-2.2.22.tar.gz

5、进入解压后的文件夹

# cd httpd-2.2.22

#

6、对apache进行检查及配置 :

# ./configure –prefix=/usr/local/apache2 –enable-dav –enable-so –enable-modules=most

7、编译谨卖禅并安装apache

# make && make install

安装apache功能支持库文件apr

1、 进入下载文件存放目录:

# cd /soft/

2、 下载apr

# wget

3、 解压下载下来的apr-1.4.6.tar.gz

# tar -xzvf apr-1.4.6.tar.gz

4、 进入解压后配樱的目录;

# cd apr-1.4.6

5、 配置、编译、安装:

# ./configure && make && make install

安装apache功能支持库文件apr-util

1、 进入下载文件存放目祥尘录:

# cd /soft

2、下载apr-util

# wget

3、解压下载下来的apr-util-1.4.1.tar.gz

# tar -xzvf apr-util-1.4.1.tar.gz

4、进入解压后的目录;

# cd apr-util-1.4.1

6、 安装配置,需要指定apr的安装位置:

# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr/

7、 编译,安装:

# make && make install

安装sqlite

1、 进入下载文件存放目录:

# cd /soft/

#

2、 下载sqlite

# wget

3、 解压下载下来的sqlite

# tar -xzvf sqlite-autoconf.tar.gz

4、 进入解压后的文件夹

# cd sqlite-autoconf

#

5、 配置、编译、安装

# ./configure –prefix=/usr/local/sqlite && make && make install

安装Subversion

1、 进入下载文件存放目录

# cd /soft

2、 下载svn server

# wget

3、 解压下载下来的Subversion 1.7.3

# cd subversion-1.7.3

4、 在当前目录创建sqlite-amalgamation文件夹:

# mkdir sqlite-amalgamation

5、 拷贝sqlite3.c到刚建好的文件夹:

# cp /soft/sqlite-autoconf/sqlite3.c /soft/subversion-1.7.3/sqlite-amalgamation/

6、 配置安装,需要指定apache、apr、apr-util等目录:

# ./configure –prefix=/usr/local/svn –with-apxs=/usr/local/apache2/bin/apxs –with-apr=/usr/local/apr/bin/apr-1-config –with-apr-util=/usr/local/apr-util/bin/apu-1-config –with-zlib=/usr/local/zlib/ –with-neon=/usr/local/neon/ –with-ssl –enable-maintainer-mode

7、 编译并安装:

# make && make install

相关配置

1、 增加SVN用户验证文件,设置用户及密码,首次创建使用-c参数,后续不需要加-c参数,否则将会重新创建此文件:

# /usr/local/apache2/bin/htpasswd -cm /usr/local/svn/svn-auth.conf wdj

2、 增加wl用户:

# /usr/local/apache2/bin/htpasswd -m /usr/local/svn/svn-auth.conf wl

3、 增加svn用户及权限配置文件:

# vi /usr/local/svn/svn-access.conf

developers = wdj,wl

* = r

@developers = rw

@developers = rw

说明:

svn用户所属组,组名 = 用户名,用户名…

svn仓库为test的操作权限为@developers组的用户为可读可写

4、 配置apache httpd.conf文件

# vi /usr/local/apache2/conf/httpd.conf

5、 在文件最后加入以下内容:

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

DAV svn

SVNParentPath /opt/svndata

AuthType Basic

AuthName “Subversion repository”

AuthUserFile /usr/local/svn/svn-auth.conf

Require valid-user

AuthzSVNAccessFile /usr/local/svn/svn-access.conf

说明:

SVNParentPath:svn仓库位置

AuthUserFile:svn用户验证文件

AuthzSVNAccessFile:svn用户权限验证文件

6、 创建SVN仓库目录:

# mkdir -p /opt/svndata/test

7、 创建svn仓库:

# svnadmin create /opt/svndata/test

8、 设置仓库拥有者和权限:

# chown -R daemon /opt/svndata/test && chmod -R 755 /opt/svndata/test

启动服务并测试

1、 启动apache(由于集成了svn,所有不需要单独启动svn服务)

# /usr/local/apache2/bin/apachectl start

2、 使用浏览器访问仓库:

(输入刚才创建的wdj用户名及设置的密码)

3、 正常显示test – Revision 0: / 说明apache和svn已经集成完成

4、 使用TortoiseSVN 或者eclipse svn插件 提交或更新文件,地址为:

linux svn authz的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux svn authz,深入理解 Linux SVN Authz 配置文件,在linux下安装SVN+Apache时,出现 you don’t have permission to access/svn on this server 问题,如何如何才linux环境下使用apache和svn进行集成的信息别忘了在本站进行查找喔。


数据运维技术 » 深入理解 Linux SVN Authz 配置文件 (linux svn authz)