svnserver配置文件详解一

简介:

svnserve是SVN自带的一个轻型服务器,客户端通过使用以svn://或svn+ssh://为前缀的URL来访问svnserve服务器,实现远程访问SVN版本库。

    svnserve可以通过配置文件来设置用户和口令,以及按路径控制版本库访问权限。本文详细分析了svnserve配置文件格式,并说明如何使用配置文件控制版本库访问权限。

    本文介绍SVN的版本为1.4.4。

1) svnserve配置文件概述

    svnserve配置文件通常由以下3个文本文件组成:
    svn服务配置文件,该文件版本库目录的conf目录下,文件名为svnserve.conf。
    用户名口令文件,该文件名在文件svnserve.conf中指定,缺省为同目录下的passwd。
    权限配置文件,该文件名也在文件svnserve.conf中指定,缺省为同目录下的authz。

2) svn服务配置文件

    svn服务配置文件为版本库目录中的文件conf/svnserve.conf。该文件仅由一个[general]配置段组成。

    [general]配置段中配置行格式如下:
        <配置项> = <值>

    配置项分为以下5项:
    
    anon-access  控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。
                 即"write"为可读可写,"read"为只读,"none"表示无访问权限。
                 缺省值:read

    auth-access  控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。
                 即"write"为可读可写,"read"为只读,"none"表示无访问权限。
                 缺省值:write

    password-db  指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf
                 目录的相对路径。
                 缺省值:passwd

    authz-db     指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
                 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。
                 缺省值:authz

    realm        指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的
                 认证域相同,建议使用相同的用户名口令数据文件。
                 缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。

    【说明】版本库认证域
    在使用svn客户端访问svnserve服务器时,若需要用户登录,则提示信息如下:
        [root@test root]# svn list svn://192.168.3.45/test
        Authentication realm: <svn://192.168.3.45:3690> 0d545a49-4038-0410-99b4-c66dc73f754e
        Password for 'root': 
    在上述第2行"Authentication realm: <svn://192.168.3.45:3690>"之后显示的字符串为认证域名称。如果在配置文件中为设定认证域,就会提示一个UUID,如上述所示。
    如果在配置文件中指定了如下配置项:
        realm = test
    将在svn客户端提示如下:
        [root@test root]# svn list svn://192.168.3.45/test
        Authentication realm: <svn://192.168.3.45:3690> test
        Password for 'root': 

    例1:svn服务配置文件conf/svnserve.conf的内容如下:
        [general]
        anon-access = none
        auth-access = write
        password-db = http://www.cnblogs.com/conf/passwd
        authz-db = http://www.cnblogs.com/conf/authz
        realm = test
    
    上述配置文件设定非鉴权用户无权限访问该版本库;鉴权用户可对版本库进行读写;用户名口令文件为相对版本库conf目录的文件"http://www.cnblogs.com/conf/passwd";权限配置文件为相对版本库conf目录的文件"http://www.cnblogs.com/conf/authz";版本库的认证域为"test"。

3) 用户名口令文件

    用户名口令文件由svnserve.conf的配置项password-db指定,缺省为conf目录中的passwd。该文件仅由一个[users]配置段组成。

    [users]配置段的配置行格式如下:
        <用户名> = <口令>
    注意:配置行中的口令为未经过任何处理的明文。

    例2:用户名口令文件conf/passwd的内容如下:
        [users]
        admin = admin
        thinker = 123456
        
        该文件中配置了两个用户,用户名分别为"admin"和"thinker"。其中"admin"用户的口令为"admin";"thinker"用户的口令为"123456"。

4) 权限配置文件

    权限配置文件由svnserve.conf的配置项authz-db指定,缺省为conf目录中的authz。该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。

    [groups]配置段中配置行格式如下:
        <用户组> = <用户列表>
    用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"(如:引用用户组"all"要使用字符串"@all")。

    版本库路径权限段的段名格式如下:
        [<版本库名>:<路径>]
    如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"。
    可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:段名为"[/tmp]"的版本库路径权限段设置了所有引用该权限配置文件的版本库中目录"/tmp"的访问权限。

    版本库路径权限段中配置行格式有如下三种:
        <用户名> = <权限>
        <用户组> = <权限>
        * = <权限>
    其中,"*"表示任何用户;权限的取值范围为''、'r'和'rw',''表示对该版本库路径无任何权限,'r'表示具有只读权限,'rw'表示有读写权限。
    注意:每行配置只能配置单个用户或用户组。

    例3:权限配置文件conf/authz的内容如下:
        [groups]
        g_admin = admin,thinker

        [admintools:/]
        @g_admin = rw
        * =

        [test:/home/thinker]
        thinker = rw
        * = r

    在上述配置文件中,定义了一个用户组"g_admin",该用户组包含用户"admin"和"thinker"。然后定义了2个版本库路径权限段。其中,版本库"admintools"只有用户组"g_admin"可读写,其他用户无任何权限;版本库"test"中路径"/home/thinker"只有用户"thinker"有读写权限,其他用户只有可读权限。

5) 总结

    在本文中,详细介绍了svnserve程序的3个配置文件。SVN管理员可以通过这3个配置文件设置svnserve服务的用户名口令,以及对版本库路径的访问权限。这些配置文件保存后就立即生效,不需要重启svnserve服务。
    需要强调的是本文介绍的配置文件只对svnserve服务有效,即客户端通过前缀为svn://或svn+ssh://的URL访问版本库有效,而对通过前缀http://、https://或file:///的URL无效。


本文转自 吃草的青蛙 51CTO博客,原文链接:http://blog.51cto.com/tlinux/1739421,如需转载请自行联系原作者
相关文章
【鸿蒙软件开发】进度条Progress
【鸿蒙软件开发】进度条Progress
411 0
|
Java API Android开发
22. 【Android教程】滚动条 ScrollView
22. 【Android教程】滚动条 ScrollView
213 2
|
人工智能 自然语言处理 计算机视觉
Meta发布混合多模态模型—Chameleon
【8月更文挑战第5天】Meta AI团队近期发布了Chameleon,一种基于早期融合的混合多模态模型,能在任意顺序下理解和生成图像与文本。此34B参数模型经10万亿token训练,展现出卓越的多模态处理能力。Chameleon在视觉问答、图像字幕生成等任务中成绩亮眼,特别是在图像字幕生成上表现优异,文本生成上亦具竞争力,且有一定的图像生成能力。其性能在新混合模态生成评估中媲美甚至超越大型模型。尽管如此,Chameleon仍面临特定任务处理及计算资源需求等方面的挑战。论文已发布于arXiv。
281 11
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版操作报错合集之在进行数据处理时,遇到文件末尾添加了回车换行符但仍然报错,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
运维 Java Shell
手工触发Full GC:JVM调优实战指南
本文是关于Java应用性能调优的指南,重点介绍了如何使用`jmap`工具手动触发Full GC。Full GC是对堆内存全面清理的过程,通常在资源紧张时进行以缓解内存压力。文章详细阐述了Full GC的概念,并提供了两种使用`jmap`触发Full GC的方法:通过`-histo:live`选项获取存活对象统计信息,或使用`-dump`选项生成堆转储文件以分析内存状态。同时,文中也提醒注意手动Full GC可能带来的性能开销,建议在生产环境中谨慎操作。
3038 1
|
Web App开发 缓存 运维
CentOS命令大全:从入门到精通
CentOS命令大全:从入门到精通
1506 1
|
存储 缓存 监控
深入理解Java线程池ThreadPoolExcutor实现原理、数据结构和算法(源码解析)
Java线程池的核心组件包括核心线程数、最大线程数、队列容量、拒绝策略等。核心线程数是线程池长期维持的线程数量,即使这些线程处于空闲状态也不会被销毁;最大线程数则是线程池允许的最大线程数量,当任务队列已满且当前线程数未达到最大线程数时,线程池会创建新线程执行任务;队列容量决定了任务队列的最大长度,当新任务到来时,如果当前线程数已达到核心线程数且队列未满,任务将被放入队列等待执行;拒绝策略则定义了当线程池无法处理新任务时的行为,如抛出异常、丢弃任务等。
254 1
|
存储 监控 安全
日志服务SLS:为数据安全保驾护航
日志服务SLS:为数据安全保驾护航 在数字化时代,数据安全成为企业关注的焦点。阿里云日志服务SLS(Log Service)通过密钥管理服务KMS(Key Management Service)对数据进行加密存储,提供数据静态保护能力。同时,SLS支持基于SSL/TLS的HTTPS加密传输,有效防止数据在云端的潜在安全风险。
307 7
|
Devops Python
【DevOps】 Mkdocs 静态站点生成器 简介及实践
MkDocs是一个基于Python的静态站点生成器,它可以将Markdown格式的文档转换为漂亮的静态网站。MkDocs提供了一种简单而灵活的方式来创建文档,并支持多种主题和插件。
234 0
|
存储 Perl
STM32速成笔记(八)—DMA
本文介绍了DMA的概念,用途。对于STM32F103ZET6的DMA做出了详细地介绍,给出了DMA配置步骤。最后,以配置DMA搬运ADC转换结果为例,给出了DMA的配置和使用方法。
622 0
STM32速成笔记(八)—DMA