通过sasl配置svnserve认证方式

    在创建一个代码仓库时,通过 repository/conf/svnserve.conf 可以看到,可以通过启用 password-db 来指定可以访问 svn 代码仓库的用户认证信息,但通过该方式只能是明文形式的,有以下缺点:

    1. 用户名和密码均为明文存储,在实际项目开发过程中,管理员需要每个成员提供明文密码,存在安全隐患;
    2. 用户名和密码需要单独手动添加并独立维护;

    subversion 自 1.5 版本以后均支持 SASL 加密认证机制,可以有效地解决以上问题。

    本例中,我将通过 svnserve 的 SASL 认证机制实现以下功能:

    1. 使用 linux 自带的用户认证机制进行 svn 代码仓库的认证;

    操作步骤如下:

    一、在代码仓库的配置文件中,启用 SASL 认证,在开启后,password-db 的指定将直接无效;

    [general]
    anon-access = none           # 不允许匿名访问
    authz-db = authz             # 通过 zuthz 文件配置用户对文件进行访问权限控制
    realm = sasl_test            # 认证域,可以随便填写,在客户端需要通过密码访问时的提示文本
    
    [sasl]
    use-sasl = true              # 启用 SASL 认证机制

    二、创建 、/etc/sasl2/svn.conf, 在启用 SASL 后,svnserve 会加载该配置文件,该文件用于告知 svnserve 采用 SASL 的哪种具体的认证机制

    # vim /etc/sasl2/svn.conf
    pwcheck_method: saslauthd
    mech_list: plain login

    pwcheck_method 指示了检查的方法,我们指定为通过 saslauthd 的方式进行认证。

    三、创建 sasl 服务名

    创建 /etc/pam.d/svn 文件,内容如下:

    auth    required /lib64/security/pam_unix.so
    account required /lib64/security/pam_unix.so

    auth 表示使用 linux 的认证机制进行鉴权,account 表示通过 linux 的帐户管理进行认证。

    四、配置 SASL, 使用 pam 的认证机制

    # vim /etc/sysconfig/saslauthd
    # Directory in which to place saslauthd's listening socket, pid file, and so
    # on.  This directory must already exist.
    SOCKETDIR=/var/run/saslauthd
    
    # Mechanism to use when checking passwords.  Run "saslauthd -v" to get a list
    # of which mechanism your installation was compiled with the ablity to use.
    MECH=pam
    #MECH=shadow
    
    # Options sent to the saslauthd. If the MECH is other than "pam" uncomment the next line.
    # DAEMONOPTS=--user saslauth
    
    # Additional flags to pass to saslauthd on the command line.  See saslauthd(8)
    # for the list of accepted flags.
    FLAGS=

    如上,确保 MECH 的值为 pam, 可选的值可以通过 sasalauthd -v 进行枚举,博主的主机支持如下认证机制:

    [root@vcaptain conf]# saslauthd -v
    saslauthd 2.1.23
    authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

    五、启动 SASL 服务

    # /etc/init.d/saslauthd restart

    六、验证

    可以在 Windows 端通过 TortoiseSVN 客户端 checkout 刚刚创建的代码仓库,这时需要提供密码,输入 linux 开机密码即可。

    注意:若在 svn 仓库的配置文件 svnserve.conf 中启用了目录访问权限机制,需要保证 linux 的用户在 authz 文件中有配置,博主的文件内容如下:

    # cat authz
    [/]
    lory = rw
    root = rw

    本实验在 CentOS 6.5 x86_64 + Subversion_1.8 环境中测试通过。

作者:Lory | 时间:2017-10-14 16:13:54 | 分类:编程经验 | 浏览:76 | 评论:0