JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Apache+mod_dav_svn权限控制 svn 权限

wys521 2024-10-16 14:35:28 精选教程 17 ℃ 0 评论

概述

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做负载均衡,然后在上面配合补充一些权限控制。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表