Subversion ----> svnserve.conf / authz / passwd / hooks-env.tmpl <<翻译笔记>>

时间:2024-01-07 11:55:50

Subversion ----> svnserve.conf / authz / passwd / hooks-env.tmpl <<翻译笔记>>

svnserve.conf

假如你使用这个文件去允许访问这个仓库,那么这个文件控制着svnserve后台进程的配置。(但是如果你只是允许通过http和/或者 file:URLs,则这个文件就不起作用了。)原文是irrelevant,中文是不相干,无关的意思,这里笔者将其意译为不起作用。

可以通过访问http://subversion.apache.org/获取更多信息。

[general]

anon-access和auth-access两个选项分别控制着访问仓库的未经身份验证的用户和已认证的用户。

它们的有效值是write,read和none。

把值设置成none,结果等价于禁止读和写两种操作。

对仓库的访问权限,read允许只读访问权限,write允许完整的读和写的访问权限。

下面的示例配置是默认的配置,指定匿名的用户对仓库只有读的访问权限,然而已经认证的用户对仓库拥有读和写的访问权限。

anon-access = read
auth-access = write

password-db选项控制着密码数据库文件的位置。除非你以“/”开头指定一个新的路径,该文件的路径是相对于包含这个配置文件(笔者注:该配置文件是指svnserve.conf)的目录。

如果SASL被激活可用,那么该文件(笔者注:该文件是指passwd)将无效。注释掉下面的一行表示使用默认的密码文件。

password-db = passwd

auth-db选项控制着基于路径的访问控制的认证规则(文件)的位置。除非你以“/”开头指定一个新的路径,该文件的路径是相对于包含这个配置文件(笔者注:该配置文件是指svnserve.conf)的目录。指定的路径可能是仓库的相对路径URL(^/)或者Subversion 仓库的文本文件的绝对文件路径(file://)。如果你不指定一个authz-db的值,基于路径的访问控制将无效。注释掉下面的一行表示使用默认的认证文件。

authz-db = authz

groups-db选项使用组定义控制文件的位置,并允许分开维护组与授权规则。 groups-db文件的格式与authz-db文件的格式相同,并且应包含带有组定义的单个[groups]部分。 如果启用该选项,则authz-db文件不能包含[groups]部分。 除非指定以/开头的路径,否则文件的位置相对于包含此文件的目录。指定的路径可能是仓库的相对路径URL(^/)或者Subversion 仓库的文本文件的绝对文件路径(file://)。 默认情况下不使用此选项。

groups-db = groups

此选项指定仓库的身份验证领域。 如果两个仓库具有相同的身份验证领域,则它们应具有相同的密码数据库,反之亦然。 默认领域是仓库的uuid。

realm = My First Repository

force-username-case选项使svnserve对用户名进行大小写标准化,在与上面配置的authz-db文件中的授权规则进行比较之前。 有效值为“upper”(大写用户名),“lower”(小写用户名)和“none”(用于比较用户名,不进行大小写转换,这是默认行为)。

force-username-case = none

hooks-env选项指定钩子脚本环境配置文件的路径。 如果指定了绝对路径,则此选项将覆盖每个仓库的默认值,并可用于在单个文件中为多个仓库配置钩子脚本环境。 除非指定绝对路径,否则文件的位置相对于包含此文件的目录。

hooks-env = hooks-env

[sasl]

此选项指定是否要使用Cyrus SASL库进行身份验证。 默认值为false。 启用此选项需要使用Cyrus SASL支持构建svnserve; 运行'svnserve --version',检查并查找'Cyrus SASL身份验证可用'的字样。

use-sasl = true

这些选项指定希望SASL提供的安全层的所需强度。 0表示不加密,1表示仅完整性检查,大于1的值与加密的有效密钥长度相关(例如128表示128位加密)。 以下值是默认值。

min-encryption = 0
max-encryption = 256

passwd

此文件是svnserve的示例密码文件。 它的格式类似于svnserve.conf的格式。 如下面的示例所示,它包含一个标记为[users]的部分。 每个用户的名称和密码如下,每行一个帐户。

[user]

# harry = harryssecret
# sally = sallyssecret

authz

此文件是svnserve的示例授权文件。 其格式与mod_authz_svn授权文件的格式相同。 如下所示,每个部分定义路径的授权和部分名称指定的(可选)仓库。

授权如下。 授权行可以参考:
   - 单个用户,
   - 在特殊[groups]部分中定义的一组用户,
   - 在特殊[aliases]部分中定义的别名,
   - 所有经过身份验证的用户,使用“$authenticated”令牌,
   - 只有匿名用户,使用'$anonymous'令牌,
   - 任何人,使用'*'通配符。

可以通过在规则前加上“〜”来反转匹配。 规则可以授予读('r')访问权限,读写('rw')访问权限,或者不授予访问权限(' ')。

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

hooks-env.tmpl

此文件是示例钩子脚本环境配置文件。默认情况下,挂钩脚本在空环境中运行。 如下所示,每个部分定义特定钩子脚本的环境变量。 [default]部分定义了所有钩子脚本的环境变量,除非被特定于钩子的部分覆盖。

此示例为所有钩子脚本配置UTF-8语言环境,以便可以将特殊字符(如变音符号)打印到stderr。 如果UTF-8与mod_dav_svn服务器一起使用,则httpd.conf中的SVNUseUTF8选项也必须设置为“yes”。 使用svnserve,svnserve进程的LANG环境变量必须设置为此处给出的相同值。

[default]
LANG = en_US.UTF-8

这为预提交钩子设置了PATH环境变量。

[pre-commit]
PATH = /usr/local/bin:/usr/bin:/usr/sbin

笔记:

去掉svnserve.conf中anon-access的注释,把默认值设置成none,然后再checkout,会报错

--listen-port选项修改svnserve监听端口,例如,svnserve -d -r /opt/svn --listen-port 12050
对于-r的理解。
-r指明了一个虚拟的根目录,在客户端进行co时,指出的位置都是相对于这个根目录。
例如:svn://192.168.1.103:12050/myrepo中,12500后的“/”指的是:/opt/svn
拼起来就是:/opt/svn/myrepo!
如果有多个svnserve服务器,可以设置多个svn虚拟根目录,一个svnserve进程对应一个svn虚拟根目录,当然,每个进程监听的端口是不一样的。

svnserve.conf的anon-access和password-db结合使用实现用户名登录认证

修改conf/passwd文件实现添加svn账户:
[user]
用户名 = 密码

修改conf/authz文件设置用户对当前svn库拥有读写权限:
[/]
用户名 = rw

参考博客:

https://blog.csdn.net/test1280/article/details/70655251

idea 使用svn???

前提是开启svn 服务器,右击项目 -> Subversion -> share directory...

idea 使用git???