Linux平台下Subversion的安装与配置(二)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
 接第一篇,本篇中将着重介绍subversionhttpd结合使用时身份认证和授权相关的内容。

6.生成身份认证文件

 

身份认证文件保存用户的用户名和密码,用于确定用户身份。

 

执行以下命令来生成身份认证文件,位于/home/svnroot/repository,文件名为pwdfile

htpasswd -m /home/svnroot/repository/pwdfile michael

New password: *******

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

 

htpasswd -cm /home/svnroot/repository/pwdfile harry

New password: *****

Re-type new password: *****

 

htpasswd -m /home/svnroot/repository/pwdfile sally

New password: *******

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

 

这样michael, harrysally这三个用户便被创建,其中-c表示创建身份认证文件-m则表示密码使用md5加密。

 

最后,不要忘记将pwdfile文件的所有者改为apache,并且将其权限设为700

 

7.创建授权文件

 

授权文件用于确定每个用户对特定目录的操作权限,格式可参考版本库下的conf/authzconf目录下的authz文件用于svnserve的授权,与我们所使用的mod_authz_svn的授权文件具有相同的格式)。因而我们可以直接把conf下的authz复制到我们想要的/home/svnroot/repository目录下,然后加以修改。

 

这里我么以给test项目分配权限说明subversion的授权机制,项目的目录结构如下图所示:

Repository

        |---test

        |      |---trunk

        |      |---branches

        |      |---tags

        |

        |---other projects…

 

其中,trunk表示主干,branches则为项目的分支,tags存放某个版本的快照。习惯上来说,大多数开发人的本地拷贝都来自truck目录,所以每个开发人员都应有trunk目录的读写权限,这样他们才能正常的进行日常的开发;而分支目录一般在,如某些开发人员需要大幅修改代码以增加新功能,或者代码进入较为稳定的阶段,开始bug去处工作等情况下使用,尽管这意味着这些代码总是有固定的一个或几个开发人员维护,但是基于“源代码共同拥有”的原则,我们还是可以将其设置为所有用户具有读写权限;tags目录则一般用于某个版本的发布,比如当项目到达版本1834时,release1已经完成,那么就可以将它复制到tags目录,作为一个快照存放,取一个好记得多的名字,比如release1(似乎应该只让某些人有写入权限,这样可以防止快照被破坏,可是即使被破坏了又怎么样呢,不要忘了我们在使用一个版本管理软件J)。

 

好吧,回过头来看看我们已经在身份验证文件中添加的用户,现在我们有michael, harrysally三个用户,其中michael是项目的pmharrysally则是开发人员,那么很明显了,我们需要建立两个用户组g_pmg_devmichael属于g_pm组,harrysally则属于g_dev组,分别授权。基于我们刚才的分析,g_pm组和g_dev组的用户都应该拥有对整个项目的读写权限,这也许太过简单了,不过正是我们目前的项目所需要的,什么时候需要一个复杂的授权方案,再修改authz文件也不迟。

 

根据authz文件的语法,我么可以把上述的设置表达成这样:(注意每个有效配置行的前面都不能有空格)

 

   [groups]                                                     //群组设置

   g_pm = micheal                                          //某群组里的成员

   g_dev = harry,sally

 

   [test:/]                                                      //仓库test的根目录的访问权限

   @g_pm = r                                                 //g_pm组用户具有读和写权限,’@’开头的表示群组设置

   @g_dev = r                                                //g_dev用户具有读写权限

 

   [test:/trunk]                                              //仓库testtrunk目录的访问权限

   @g_pm = rw                                               //g_pm组用户具有读和写权限,’@’开头的表示群组设置

   @g_dev = rw                                              //g_dev用户具有读写权限

 

   [test:/branches]                                        //仓库testbranches目录下的访问权限

   @g_pm = rw                                               //g_pm组用户具有读和写权限,’@’开头的表示群组设置

   @g_dev = rw                                              //g_dev用户具有读写权限

 

   [test:/tags]                                                //仓库testtags目录下的访问权限

   @g_pm = rw                                               //g_pm组用户具有读和写权限,’@’开头的表示群组设置

   @g_dev = rw                                              //g_dev用户具有读写权限

 

 

如果需要对某个用户授权,可以这么写:

   [test:/branches]                                        //仓库testbranches目录下的访问权限

   sally = r                                                      //sally用户具有读权限

 

当然,这样的authz文件显得很繁琐,而且没有必要,但是这样的配置在需求出现变化的时候将会很容易修改。

 

不要忘记将authz文件的所有者改为apache,并且将其权限设为700

 

 

8.修改Apache配置文件

 

执行vi /usr/local/apache2/conf/httpd.conf

确保以下两行已被subversion正确添加,这样apache才能正确加载module

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

 

Version Control with Subversion 1.4以及很多howto上提到的

LoadModule dav_module modules/mod_dav.so

我们已经在编译httpd时链接进了核心中,不需要作为共享对象加载。

 

 

接着,在httpd.conf的最后添加以下内容(不包括后面的注释)

   <Location /svn>

   DAV svn

   SVNParentPath /home/svnroot/repository/                           //svn父目录

 

   AuthType Basic                                                                       //客户端认证机制

   AuthName "Subversion Repository"                                        //认证域名称

   AuthUserFile /home/svnroot/repository/pwdfile                   //身份认证文件 

 

   AuthzSVNAccessFile /home/svnroot/repository/authz         //权限配置文件

   Satisfy Any                                                                             //先尝试匿名访问

   Require valid-user                                                                   //仅通过验证的用户可访问版本库

   </Location>

 

其中/svn表示一个url的模式,匹配形如http://host/svnurlSVNParentPath 指定的目录下的所有项目都被subversion 认为是合法的版本库;AuthzSVNAccessFile为授权文件 AuthType 则制定了客户端身份认证机制,Basic表示http基本认证机制;AuthUserFile就是先前创建的密码文件;Satisfy Any Require valid-user告诉apache所有用户先使用匿名方式访问版本库,只有当访问控制策略要求一个真实的用户名时,apache才会对客户端进行身份验证,这是使用得最多的一种授权方式。

 

最后,使用如下命令重启apache httpd,打开浏览器访问http://localhost/svn/test/这个URL便可访问版本库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限的目录。

/usr/local/apache2/bin/apachectl restart

 

至此,我们的版本库已经进行了正确的身份认证和授权配置,并且用户可以通过浏览器来查看当前的版本库的情况,subversion已经处于可用的状态。接下来的一篇中,我们将讨论使用subversion客户端相关的问题以及如何将subversion和apache httpd配置为系统服务。

Reference

1.        Subversion之路--实现精细的目录访问权限控制      郑新星

2.       Version Control with Subversion 1.4(r2730)    Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato

3.       Apache HTTP Server Version 2.2文档中文版   Apache Software Foundation  金步国译

4.       Redhat9 Linux下安装,配置Subversion 1.3.1      Wooin  http://blog.csdn.net/wooin/archive/2006/07/11/903974.aspx

 

Linux CentOS 7 安装Apache Subversion 关于Linux CentOS 7搭建、配置应用svn~ 阅读详情

相关推荐

Linux下基于bitnami的Redmine安装部署以及结合Subversion的设置

前期准备: 1.bitnami-redmine-3.1.1-1-linux-x64-installer.run  2.虚拟机安装好Centos 7 下面开始正式部署: 一、安装bitnami-redmine-3.1.1 1.将bitnami-redmine-3.1.1-1-linux-x64-installer.run 上传到centos7指定文件夹下(如 /home/hadoo

大大大水牛 3637

linux安装subversion

linux安装subversion

Linux环境下ApacheSubversion的集成安装配置指南

mod_dav_svn模块是ApacheSubversion的桥梁,它实现了WebDAV协议(Web-based Distributed Authoring and Versioning),让Apache能够通过HTTP直接访问Subversion仓库。这意味着用户可以通过标准的WebDAV客户端进行版本控制操作,如检出、提交、分支和合并等。mod_dav_svn模块将Subversion仓库映射为一个远程文件系统,使得仓库的内容可以通过HTTP(S)进行访问。

weixin_42443533的博客 970

apache htpasswd 命令

apache htpasswd命令用法   htpasswd [-cmdpsD] passwordfile username   htpasswd -b[cmdpsD] passwordfile username password   htpasswd -n[mdps] u

zhangxuyu1118的专栏 1273

linux中替代htpasswd生成密码的方法

linux中,如果不安装apache,但是又需要用htpasswd生成登录账号,如:配置Nginx,pure-ftpd,subversion等。 那就需要找一个替代htpasswd生成密码的方法,用openssl就可以办到 # printf "user:$(openssl passwd -crypt 123456)\n" &gt;&gt;conf/htpasswd...

经验之谈,不做搬运工 1437

subversion 安装[Linux]

安装subversion

华 英雄 600

Linuxsubversion安装和使用

目录 1、Linuxsubversion下载... 3 2、Linuxsubversion安装... 6 2.1、查询系统之前安装的旧版本... 6 2.2、yum安装yum源默认版本... 7 2.3、yum安装自定义版本... 8 3、LinuxSVN服务端和客户端环境搭建... 13 3.1、服务端命令客户端命令... 13 3.2、版本库的创建删除... 13 ...

Aaron_Run的博客 1万+

Linux平台Subversion安装配置

摘自:http://blog.csdn.net/kryptonum/archive/2007/03/07/1523643.aspx 本文将介绍如何在Linux环境下(以Redhat9为例) 通过Subversion 来构建小组开发过程中最为重要的版本控制环境,包括Subversion 环境的安装配置,以及客户端的配置和使用。(某些操作,如make install需要root权限,简便起见,在没有

Iteam项目组 Smith&Wesson(史密斯威森) 666

Linux平台Subversion安装配置()

本文将介绍如何在Linux环境下(以Redhat9为例) 通过Subversion 来构建小组开发过程中最为重要的版本控制环境,包括Subversion 环境的安装配置,以及客户端的配置和使用。(某些操作,如make install需要root权限,简便起见,在没有特殊说明的情况下,下面的工作均使用root账户完成。)1. 安装Apache HTTP Server httpd是

1万+

Linux系统中安装配置SubversionSVN

用户权限的管理涉及到为用户分配不同的角色,这通常是通过SVN的权限文件实现的。在SVN仓库目录内通常有一个名为conf的目录,其中包含和authz文件:[groups]在这个示例中,我们定义了一个名为developers的用户组,并授予他们对project1仓库的读写权限。

weixin_42509513的博客 539

Subversion服务器安装配置指南

在当今的软件开发领域,版本控制系统的使用是团队协作和代码管理的核心。Subversion(简称SVN)是一个开源的版本控制系统,它允许用户跟踪和管理项目中文件和目录的修改历史。SVN作为CVS的替代品出现,迅速成为业界标准,并且凭借其稳定性和灵活性在IT行业中得到了广泛的应用。SVN的中心是一个中央仓库,这个仓库中存储了项目的所有数据和历史记录。开发者可以检出(checkout)仓库中的数据副本到本地工作空间,进行修改后提交(commit)回仓库。

weixin_32389853的博客 1360

CollabNet Subversion安装配置实战指南

SVN 支持多种服务暴露方式,不同的运行模式直接影响安全性、扩展性和集成能力。理解其工作机制有助于做出合理的技术选型。authz支持组抽象,极大简化权限管理:[groups][/]* =[/docs]* = r语法说明:[groups]段声明组名成员@groupname表示引用组代表所有其他用户rwr空值 = 无权限此结构支持嵌套组(需Apache支持),便于按部门、项目角色划分。

weixin_35752233的博客 1150

SVN 安装配置详尽指南 —— 深入理解Subversion安装使用流程

Subversion是一个开源的版本控制系统,它的设计目标是作为CVS的替代品,提供更好的用户体验、更稳定的架构和更丰富的功能集。SVN使用集中式版本库和原子提交的概念,确保每次提交都是完整的,不会产生冲突的代码混合。此外,SVN还支持分支和标记,便于开发人员进行特性开发和版本管理。通过本文的详尽指南,你已经掌握了在Windows、macOS和Linux三大操作系统上安装配置SVN的全过程。SVN的使用能够极大提升团队的协作效率,确保代码的完整性和版本的一致性。

你好,欢迎来到我的个人技术博客!我是一个还有头发的程序猿,一名热衷于探索编程奥秘的程序员。在这个充满无限可能的数字时代,我致力于通过代码编织梦想,解决问题,不断追求技术的极致。 自从踏上编程之旅以来,我涉足了多个领域,包括但不限于Web开发、移动应用开发 7332

linux源码编译安装subversion

一、下载安装subversion源码包下载 https://subversion.apache.org/download.cgi apr源码包 https://dist.apache.org/repos/dist/release/apr/ apr-util源码包 https://dist.apache.org/repos/dist/release/apr/ serf源码包 https://www.apache.org/dist/serf/ scons源码包 https://sourceforge.net

old boy的博客 4072

linux下的subversion 配置

 背景:刚刚新装的centos5 发布版,敲上命令: svnserve --version得出:svnserve,版本 1.4.2 (r22196)看来系统已为我预装了subversion,我无需安装了 下面开始配置Step1) 建立存储库svnadmin create /home/svn-repos Step

pwlazy的专栏 1万+

Linuxsubversion安装配置

linux下一步步配置subversion软件包:httpd-2.23下载地址http://apache.justdn.org/httpd/httpd-2.2.3.tar.gzapr-1.27apr-util-1.27http://apache.justdn.org/apr/,版号自已找,最好和我的所提供的版本号一样Oracle Berkeley DB 4.0.14下载地...

weixin_30553065的博客 211

Linux系统中Subversion版本控制系统的安装指南

本章节详细介绍了安装SVN过程中可能遇到的权限不足和依赖包缺失问题,并给出了具体的解决方案和建议。用户在遇到这些问题时,可以按照本章节提供的指导进行排查和解决,以确保SVN服务器顺利安装和运行。下一章节将介绍如何对SVN服务器进行基本配置优化。

weixin_35754676的博客 1251

linux subversion安装包,linuxsubversion安装

linuxsubversion安装系统环境: centos5内核:2.6.18-8.el5apache:2.2.8www(W@NeiWang0401)一、安装apachea. tar zxf httpd-2.2.8.tar.gzb。安装apr apr-util# cd srclib/apr#./configure --prefix=/usr/local/apr# make# make inst...

weixin_33898154的博客 685

Linux安装subversion 详细指南

1 下载相关的软件Apache-2.x   http://httpd.apache.org  下载源代码包Subersion    http://subversion.tigris.org/  下载源代码包本文中apache的版本为 Apache/2.2.4 (Unix)Subversion 版本:svnserve 1.4.3 (r23084)2 安装相关软件2.1 安

ΓΟΠΑΠ--静静聆听 6805
上一篇: Linux平台下Subversion的安装与配置(一)
下一篇: 一个星期又要过去了
Kryptonum
博客等级 码龄23年 6粉丝 55原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值