基于 WordPress | 主题由 mg12 提供 | 通过 XHTML 1.1CSS 3 验证
  • Subversion 通过 Apache 结合 PAM 达到域验证

    一、概述

    Subversion 是一款开源的版本控制工具。作为 CVS 的替代品,他拥有众多优点。 其中一点即使可以在 Apache 下完全作模块化运行,通过了 Apache 这个接口,就可以使用 Apache 提供的众多功能。

    Apache 自然可以和 PAM 结合,于是 Subversion 也可以通过 PAM 来进行用户的多种验证方式。在企业中域是较多被使用的一种验证方式。 Winbind 已经在前一文中介绍过了。此文不再描述通过 Winbind 加域的方法。

    Subversion 有很棒的中文站。SVN 即为 Subversion 简称。

    二、安装包

    在 CentOS 环境下以下包需要安装:

    httpd #Apache
    mod_dav_svn #Subversion 在 Apache 中的模块
    mod_auth_pam # Apache 中 PAM 模块
    subversion # svn 程序

    通过 yum 即可方便的安装:

    yum install httpd mod_dav_svn mod_auth_pam subversion

    三、http 配置

    在 CentOS 4.5 下 apache 的配置文件在 /etc/httpd 目录下。请注意,/etc/httpd/conf.d 目录下的配置文件具有和 /etc/httpd/conf/httpd.conf 等价的作用,所以劲量让自己的配置在 /etc/httpd/conf.d 下完成。

    创建配置文件: /etc/httpd/conf.d/subversion.conf

    LoadModule dav_svn_module modules/mod_dav_svn.so #此处即为 Apache 调用 SVN 模块
    LoadModule authz_svn_module modules/mod_authz_svn.so #此模块提供了目录级别用户验证的能力,详细资料可以参考 Debian的文档

    #开始定义SVN仓库的位置:

    DAV svn # 通过 DAV 模块调用其 SVN 模块
    SVNPath /var/svn/repos #指定SVN仓库的绝对地址
    AuthType Basic #用户验证方式,验证方式有多种,可以参考 此文,这也是网络上流传比较广的一遍文章。我觉得还可以有更好、更通俗的文章来解释验证方式的问题。
    AuthName “Authorization Realm” #引号内的内容会显示在你访问的 Subversion 服务器标题上。
    AuthPAM_Enabled on #通过这个参数告诉Apache,当用户访问此虚拟目录的时候,启用 PAM 验证接口
    Require valid-user #

    四、创建 SVN 仓库

    使用 svnadmin create 命令来创建仓库:

    svnadmin create /var/svn/repos

    五、配置 PAM

    在安装了 mod_auth_pam 之后,系统中会出现以下两个库文件:

    /usr/lib/httpd/modules/mod_auth_pam.so
    /usr/lib/httpd/modules/mod_auth_sys_group.so

    你需要确保他们在正确的位置,以便 Apache 可以通过 AuthPAM_Enabled on 参数来调用他。

    编辑 /etc/pam.d/httpd 文件来定义 Apache 通过 PAM 时的验证方式。

    以下是我实验中此文件的内容:

    #%PAM-1.0
    auth required /lib/security/pam_winbind.so
    account required pam_permit.so

    有两点需要提醒:首先 /etc/pam.d/httpd 文件也是在 mod_auth_pam 包里面的。其次,很多地方都给出了这样的参数 auth required /lib/security/pam_winbind.so service=system-auth,这在我的电脑上导致了 message 的报警:

    pam_winbind[4603]: pam_parse: unknown option; service=system-auth

    在我去掉了:service=system-auth 参数之后便没有了这样的报警,且功能不影响。

    六、琐碎的处理

    到此,当你重启了 httpd 服务之后,你的 SVN 应该就可以正常工作了。如果出现了一些问题,比如“无权限访问”等。你可以尝试以下操作:

    1.修改 SVN 目录所有人为 apache。
    2.修改 SVN 目录权限。
    3.按照 Ubuntu 论坛中的帖子,执行:

    svnserve -d -T -r /svnpath

    #我还没搞懂这个命令的意思,但他的确为我解决了一些问题。

    您可以通过 http://ip/repos 类似的路径来访问它,具体取决于你在配置文件中的定义。

    不知为何,mod_auth_pam 包我总是 yum 不到,所以也提供在此。此包适合 CentOS 4.5,点击下载

    如果您觉得此文有错误的地方,或者是需要补充的地方,请来信告诉我。

    latteye@gmail.com

    2007年9月12日14:37
目前还没有任何评论.

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">
置顶