关于subversion+apache集成linux用户验证[摘]

原文地址:http://spaces.msn.com/members/stevengong/

关于svn

很抱歉,最近比较忙,所以没有空回复,因为我希望能够多写一些东西。使用版本管理工具管理项目已经很久了,从一开始的cvs到现在的svn(接触过vss但是没有管理的经历)。要是一开始使用svn有点跟风的原因的话,那么我现在要说的是,现在使用cvs的管理员们,请尽快移植到svn吧,因为有"一千个移植的理由"(夸张)。

真不知道那时管理cvs的时光是怎么过来的,真是不堪回首啊!首先是配置的时候千万不能忘记配置cvswrapper,因为cvs没有自动判别binary的方式,所以必须让你告诉她。然后是branch的管理,打n个tag不说,进行merge的过程实在是不爽,发生重复merge的情况是常有的事。

svn似乎是专门为痛苦的cvs管理员设计的。我们再也不用为binary file发愁了,branch管理已经变得如此的轻松,以至于管理员们会以做branch为乐(别把我的话当真,branch管理的原则是尽量不要branch)。merge的过程连一个没有什么经验的程序员都会操作,这个是使用cvs的时候难以想象的。

另外,svn提供的http访问使得和其他系统的整合成为可能。尽管cvs有viewcvs的工具,但是其使用并不是那么自然。svn的http访问犹如访问文件系统,我们可以把一个url贴到某一个地方作为引用,多么神奇,这个引用具有了版本控制的能力,因为每一次的访问都是最新的版本。

当然,除此之外,svn的安装配置也是十分方便的,不过可惜没有一个完整的教程包含从0开始的安装,所以在这里我写了这样一个guide,一方面作为备忘,一方面作为对希望配置svn的人们提供方便。

圆圆给的url我看过了,那个是一个不错的贴子,不过说实话,我的确对m$的东西不怎么感兴趣,当然,如果m$会使用svn的话,我会感到很高兴的。

至于shadow authentication,我也是最近才找到的。我们以前都使用svn book里面提供的方式,用htpasswd来生成user/pass。但是这种方式的致命问题是,修改password很麻烦,因为我们都希望password是让自己设置的。通过和linux帐号的整合,可以让用户直接登录到系统上,自己修改。shadow authentication面临的最大问题是shadow这个文件是只有root有访问权限的,而web server使用的是apache帐号,所以shadow里面使用了一个validate程序,这个程序是setuid root的,而shadow module使用了pipe来和这个程序通讯。通过这种方式就可以在低权限的情况下访问高权限的文件了。当然,我还没有仔细研究过代码,这个是从文档里面看来的,有点shameless,呵呵!

19:59  |  固定链接 | 评论 (1) | 引用通告 (0) | 记录它 | 计算机与 Internet
固定链接 关闭
http://spaces.msn.com/members/stevengong/Blog/cns!1phAA1y9NYKG760VwC-9jyrQ!119.entry
4月1日
A step-by-step configuration guide for SVN server setup with HTTPS based on shadow authentication

Abstraction:This guide will step-by-step show the installation and configuration process for SVN server with HTTPS based on linux shadow authentication.

Detail:

Before you can install svn server with SSL support, please make sure you have openssl, svn, apache and mod_shadow_auth module packages at hand. You can download them below:

  • openssl: http://www.openssl.org
  • svn: Subversion Binary for Redhat 9
  • apache: http://httpd.apache.org
  • mod_shadow_auth: Shadow authentication module for apache

Firstly, please install openssl if you haven't. You can also find RPM binary in RH9 CDs.

Install or update the svn RPM. The necessary RPMs are: apr, apr-util, neon, subversion, subversion-server.

Then, compile apache2. I recommend you to compile mod_ssl and mod_dav as builtin module. (/path/to/configure --prefix=/path/to/installation --enable-ssl --enable-dav)

Compile and install mod_shadow_auth. That is 'make all' and 'make install'. Note: before you enter 'make', please modify 'makefile' to make the env point to your apache2 installation.

Now, it's done. You can begin configuring your SVN server now.

  • Create SVN repository: svnadmin create /path/to/repo && chown -R apache:apache /path/to/repo. The second command let the apache2 access your repository.
  • Prepare SSL certifications. I suppose you don't have enough money to buy a certification from, say, Verisign. Create a self-signed certification yourself.
    • Create a key: openssl genrsa -des3 -out /path/to/key/keyfile 1024
    • Create a request: openssl req -new -days 1800 -key /path/to/key/keyfile -out /path/to/req/reqfile
    • Create a certificate: openssl x509 -in /path/to/req/reqfile -signkey /path/to/key/keyfile -out /path/to/crt/crtfile
    During these steps, the console may request you to input password for your key several times. The '-des3' option means you use des3 to encrypt your rsa keys.
  • Configure apache for ssl: edit /path/to/apache2/conf/ssl.conf-->edit SSLCertificateFile to point to /path/to/crt/crtfile-->edit SSLCertificateKeyFile to point to /path/to/key/keyfile.
  • Configure apache server for SVN. Copy /usr/lib/httpd/modules/mod_authz_svn.so and mod_dav_svn.so to /path/to/apache2/modules. Open /path/to/apache2/conf/httpd.conf. Add several 'LoadModule' directive if you'd like to for modules you just copied. (In apache2, it's not necessary though). Add a 'Location' tag like thus:

<Location /your_repo>

    DAV svn

    SVNPath /path/to/repo

    AuthType Basic

    AuthName "Subversion repository"

    AuthShadow on

    <LimitExcept GET PROPFIND OPTIONS REPORT>

        Require group yourgroup

    </LimitExcept>

</Location>

You can modify 'Require group' to 'Require user' if you want to do user-based authentication.

Now, start apache: /path/to/apache2/bin/apachectl startssl. You'll need to input your password for your rsa-key. Then all is done.

Summary:The benefit for authentication based on shadow is that it's easy to integrate user management to os and let the management more smooth. (eg. modification of password)

你可能感兴趣的:(apache,linux,SVN,Authentication,subversion,branch)