You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04.4下如何创建目录访问受限的SVN用户

Ubuntu 20.04 下SVN受限访问用户配置实操

默认前提:你的SVN为标准svnserve部署,全程操作需要SVN管理员或服务器root权限。


1. 创建SVN认证账号

先定位到SVN仓库的配置目录,单仓库部署的话配置文件一般在仓库路径下的conf文件夹内,比如仓库存放在/var/svn/proj_repo,配置路径就是/var/svn/proj_repo/conf/。
打开目录下的passwd用户密码文件,在[users]段末尾新增协作用户的账号密码,格式为用户名 = 密码,示例:

[users]
# 原有管理员账号保留,下方新增协作账号
collab_zhang = 自定义强密码

如果是多仓库共用统一认证文件,直接修改全局配置中指定的passwd文件即可,无需逐仓库添加账号。

2. 配置全局默认拒绝规则,从根源避免权限泄露

打开同目录下的authz权限配置文件,先配置全局默认规则,所有未明确授权的路径默认禁止所有用户访问:

[groups]
# 可按需分组,方便后续批量管理权限
admin_group = 你的管理员账号
collab_group = collab_zhang

# SVN根目录默认全禁止
[/]
* =
@admin_group = rw

等号后留空即代表无任何读写权限。

3. 给协作用户开放指定可访问范围

根据实际需求,给协作账号/协作组开放允许访问的仓库或目录权限。单仓库路径授权格式为[仓库名:目录路径],示例:

# 开放proj_repo仓库下的公共开发目录读写权限
[proj_repo:/public_dev]
@collab_group = rw

# 如果需要开放整个仓库的访问权,直接配置仓库根路径即可
# [proj_repo:/]
# @collab_group = r

如果只需要给用户读权限,把rw改成r即可。

4. 明确禁止保密目录的访问权限

找到你存放私有保密文件的目录路径,单独添加权限规则。SVN的authz权限匹配遵循「最细分路径规则优先级最高」的逻辑,哪怕父目录给了访问权,子目录单独配置禁止就会生效,示例:

# 保密目录为proj_repo下的private_secret路径
[proj_repo:/private_secret]
@collab_group =
collab_zhang =

配置后协作用户访问该目录时会直接返回403权限不足错误。

5. 校验服务配置并重启生效

打开仓库配置目录下的svnserve.conf文件,确认以下配置项未被注释,路径指向正确:

[general]
anon-access = none # 禁止匿名用户访问
auth-access = write # 认证用户按权限执行写入
password-db = passwd # 指向刚才修改的passwd文件,用全局认证就写绝对路径
authz-db = authz # 指向刚才修改的authz权限文件,全局同理写绝对路径

保存后重启svnserve服务加载新配置:

sudo systemctl restart svnserve

6. 权限校验

本地执行命令分别测试可访问目录和保密目录的访问权限,确认规则生效:

# 测试公共目录,应可正常拉取内容
svn co svn://你的服务器地址/proj_repo/public_dev --username collab_zhang
# 测试保密目录,应返回权限不足错误
svn co svn://你的服务器地址/proj_repo/private_secret --username collab_zhang

补充:如果你是用Apache+mod_dav_svn方式部署的SVN,仅需把用户创建步骤替换为htpasswd命令添加Apache认证用户即可,authz路径权限规则和上述操作完全一致,无需调整。


内容的提问来源于stack exchange,提问作者Priyesh Jakhmola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 04:31:04