在 CentOS 7 上部署 SVN 服务端时,svnserve.conf 是核心配置文件,位于版本库的 conf/ 目录下(例如 /var/svn/repo/conf/svnserve.conf)。它控制 SVN 服务的认证、权限和访问规则。以下是对其关键参数的详细解析及配置建议:
⚙️ 一、核心配置参数详解
1. anon-access
-
作用:控制匿名用户(未登录用户)的访问权限。
-
可选值:
none:禁止访问(推荐✅)。read:只读访问(默认值⚠️,存在安全风险)。write:读写访问(❌ 强烈不推荐,极不安全)。
-
示例:
anon-access = none
2. auth-access
-
作用:控制认证用户(已登录用户)的访问权限。
-
可选值:
write:可读可写(推荐✅)。read:只读访问。none:禁止访问(极少使用)。
-
示例:
auth-access = write
3. password-db
-
作用:指定存储用户名和密码的文件路径。
-
路径规则:
- 相对路径(如
passwd):相对于conf/目录(默认配置)。 - 绝对路径(如
/etc/svn/passwd):需确保 SVN 进程有读取权限。
- 相对路径(如
-
示例:
password-db = passwd # 使用 conf/passwd 文件
4. authz-db
-
作用:指定权限控制文件(
authz),实现路径级精细授权。 -
功能:
- 支持按用户、用户组分配目录权限(如
rw、r、none)。 - 支持多版本库统一管理(通过绝对路径指向共享文件)。
- 支持按用户、用户组分配目录权限(如
-
示例:
authz-db = authz # 使用 conf/authz 文件
5. realm
-
作用:定义版本库的认证域名称,显示在客户端登录提示中。
-
推荐值:
- 版本库名称(如
realm = MyProjectRepo)。 - 若留空,默认使用版本库 UUID(不直观)。
- 版本库名称(如
-
示例:
realm = MyProjectRepo
📊 二、配置参数总览表
| 参数名 | 可选值 | 默认值 | 功能说明 | 推荐值 |
|---|---|---|---|---|
anon-access |
none/read/write | read | 匿名用户权限 | none |
auth-access |
none/read/write | write | 认证用户权限 | write |
password-db |
文件路径 | passwd | 用户名密码文件路径 | passwd |
authz-db |
文件路径 | authz | 路径权限控制文件路径 | authz |
realm |
自定义字符串 | UUID | 认证域名称(客户端登录提示) | 版本库名称 |
⚠️ 三、关键配置注意事项
-
格式规范:
- 所有配置项必须顶格书写,开头不能有空格。
- 取消注释时需删除行首的
#和空格(例如# anon-access = read→anon-access = none)。
-
权限文件路径:
- 若需多个版本库共享用户/权限文件,可指定绝对路径(如
password-db = /etc/svn/passwd)。
- 若需多个版本库共享用户/权限文件,可指定绝对路径(如
-
生效规则:
- 修改
svnserve.conf需重启 SVN 服务生效:pkill svnserve svnserve -d -r /var/svn # 重新启动 - 修改
passwd或authz文件无需重启服务。
- 修改
-
安全建议:
- 禁用匿名访问(
anon-access = none),避免未授权访问。 - 权限文件(
authz)中避免使用* = rw,应细化到具体用户组。
- 禁用匿名访问(
🛠️ 四、完整配置示例
# /var/svn/repo/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = MyProjectRepo
🔍 五、常见问题排查
-
认证失败:
- 检查
passwd文件格式(用户名 = 密码)及文件权限。 - 确认
svnserve.conf中未包含多余空格(如password-db = passwd✅ vspassword-db= passwd❌)。
- 检查
-
权限不生效:
- 检查
authz文件语法(组名用@前缀,如@dev_team = rw)。 - 确保用户已在
passwd中定义,且在authz中被正确引用。
- 检查
通过合理配置 svnserve.conf,可构建安全高效的 SVN 服务环境。建议结合 authz 文件实现细粒度权限控制,并定期审计访问日志(通过 --log-file 参数启用)。
浙公网安备 33010602011771号