网站首页 > 精选教程 正文
概述
Apache和mod_dav_svn是常用的SVN服务环境。
Apache有两种权限控制机制,一个是基于主机的权限控制,一个是基于用户的权限控制。
本文基于这两种权限控制整理了SVN服务的常用权限控制配置模型。
无权限控制配置
无权限控制配置比较简单,配置svn仓库路径即可,参考如下。
<VirtualHost 0.0.0.0:8080>
<Location /repo>
DAV svn
SVNListParentPath on
SVNParentPath /data/repo/
</Location>
</VirtualHost>
限制IP访问
IP访问限制主要使用Order/Deny/Allow配置项。Order用于指定IP限制的顺序,后面的会覆盖全面的配置。
比如下面配置就是常见的“白名单”方式配置——Order deny,allow设置指令顺序,Deny from all先限制所有的IP访问,然后再通过Allow来打开指定的IP访问。黑名单方式也类似,参考下面配置中注释掉的部分——Order allow,deny设置指令顺序,Allow from all允许所有IP访问,再通过Deny来限制指定IP的访问。
<VirtualHost 0.0.0.0:8080>
<Location /repo>
DAV svn
SVNListParentPath on
SVNParentPath /data/repo/
# IP白名单配置
Order deny,allow
Deny from all
Allow from 192.168.0.
## IP黑名单配置
# Order allow,deny
# Allow from all
# Deny from 192.168.0.
</Location>
</VirtualHost>
用户名密码限制访问
Apache可以使用mod_authz_svn为svn服务添加用户名密码权限控制,参考配置如下:
<VirtualHost 0.0.0.0:8080>
<Location /repo>
DAV svn
SVNListParentPath on
SVNParentPath /data/repo/
AuthType Basic
AuthName "mysvn"
AuthUserFile /data/repo/authz.passwd
AuthzSVNAccessFile /data/repo/authz.conf
Require valid-user
</Location>
</VirtualHost>
AuthUserFile用于配置密码文件,可以使用命令htpasswd来管理密码。注意使用htpasswd管理密码的时候不要带上-p参数,这个参数会明文记录密码,不安全不说,svn服务也不认这种密码。
# 手动输入密码
htpasswd ./authz.passwd username
# 命令行直接替换密码
htpasswd -b ./authz.passwd username mypassword
AuthzSVNAccessFile用于配置SVN服务的用户权限,比如下面配置表示:仓库test1默认用户只读权限,admin用户读写权限;仓库test2,默认用户读写权限。更多详细配置这里不多说了。
[test1:/]
* = r
admin = rw
[test2:/]
* = rw
IP和用户名密码双重限制
配置把IP限制和用户名密码限制加起来就行了,具体配置如下:
<VirtualHost 0.0.0.0:8080>
<Location /repo>
DAV svn
SVNListParentPath on
SVNParentPath /data/repo/
AuthType Basic
AuthName "mysvn"
AuthUserFile /data/repo/authz.passwd
AuthzSVNAccessFile /data/repo/authz.conf
Require valid-user
Order deny,allow
Deny from all
Allow from 192.168.0.
</Location>
</VirtualHost>
用户名密码限制并允许指定IP匿名访问
在有些情况下想要添加用户名密码限制,但对于某些IP又嫌用户名密码太费事,想直接匿名访问,这个时候可以参考下面配置。
这里用到Satisfy配置项,这个配置项用于权限控制模型——all,表示同时需要同时满足两种权限控制;any表示只需要满足任意一种权限控制。我们加上Satisfy Any,就可以允许指定IP匿名访问了。当然还得在AuthzSVNAccessFile中把默认用户的权限打开。
<VirtualHost 0.0.0.0:8080>
<Location /repo>
DAV svn
SVNListParentPath on
SVNParentPath /data/repo/
AuthType Basic
AuthName "mysvn"
AuthUserFile /data/repo/authz.passwd
AuthzSVNAccessFile /data/repo/authz.conf
Satisfy Any
Require valid-user
Order deny,allow
Deny from all
Allow from 192.168.0.
</Location>
</VirtualHost>
后记
这里总结了Apache和mod_dav_svn常用的几种权限控制模型,更复杂的控制需求在单服务上很难配置,可以借助防火墙或者再添加一层nginx做负载均衡,然后在上面配合补充一些权限控制。
猜你喜欢
- 2024-10-16 Linux系统下终端proxy代理配置 linux 代理ip
- 2024-10-16 前端 Jenkins 自动化部署 jenkins自动部署前端文件
- 2024-10-16 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构(附源码)
- 2024-10-16 Java程序员需要具备哪些专业技能?
- 2024-10-16 详解JavaEE中级程序员路线图,其涉及课程资源已更新
- 2024-10-16 Red Hat Enterprise Linux 9 终于来了
- 2024-10-16 使用Openresty实现WAF防火墙功能 waf openresty
- 2024-10-16 计算机本科大四学完SSM后很迷茫,接下来怎么办?
- 2024-10-16 基于SSM分布式系统架构,整套公共微服务服务模块源码分享
- 2024-10-16 4年的java工作经验去应聘16K面试没过,细节如下
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)