必须同时配置认证文件与授权文件且用户名一致,否则用户能登录却无权访问;用htpasswd管理密码文件,authz定义组与路径权限,apache配置中启用authzsvnaccessfile并require valid-user。

要在 Apache 服务器上精确控制不同用户对 Subversion 仓库中特定目录的读写权限,必须同时配置认证文件与授权文件,并确保两者用户名完全一致,否则用户能登录却无权访问任何路径。
创建和管理 SVN 用户密码文件
进入 Apache 的 conf 目录,执行 htpasswd 命令生成初始密码文件:
htpasswd -c /etc/apache2/conf/passwd admin
这一步会提示输入并确认密码,生成加密后的 admin 用户条目。
添加第二个用户时,【必须去掉 -c 参数】,否则已有用户会被覆盖:
htpasswd /etc/apache2/conf/passwd dev1
删除用户只需加 -D 参数:
htpasswd -D /etc/apache2/conf/passwd dev1
密码文件内容不可编辑,所有增删改都必须用 htpasswd 命令操作。直接修改文件会导致 Apache 启动失败或认证失效。
编写 svnaccessfile 授权规则文件
新建文件 /etc/apache2/conf/authz,内容按以下结构编写:
[groups]
admins = admin
devs = dev1, dev2
docs = writer1
[/]
* = r
@admins = rw
[myproject:/trunk/src]
@devs = rw
[myproject:/branches/feature-x]
@devs = rw
dev1 = r
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
注意:方括号内的路径必须与浏览器访问 URL 中的路径严格对应,比如
【路径中不能含中文或空格】,否则 Apache 解析失败,用户访问时返回 500 错误。
在 httpd.conf 或 dav_svn.conf 中启用权限控制
打开 /etc/apache2/mods-enabled/dav_svn.conf(Ubuntu)或 Apache 安装目录下的 httpd.conf,定位到
确保已启用以下三行(取消注释并核对路径):
AuthType Basic
AuthUserFile /etc/apache2/conf/passwd
AuthzSVNAccessFile /etc/apache2/conf/authz
Require valid-user 行必须存在,否则权限规则不生效,所有请求都被放行。
如果使用 SVNParentPath 模式,
验证并重启服务
第一步:检查配置语法是否正确:
apache2ctl configtest
第二步:若输出 Syntax OK,则执行:
systemctl restart apache2
第三步:用浏览器访问 http://your-server/svn/myproject,输入 admin 账号,确认能列出目录;再用 dev1 登录,尝试访问 /trunk/src —— 应可读写,但访问 /trunk/docs 应提示 Forbidden。









