允许用户更改其SVN密码

时间:2011-12-01 16:58:25

标签: svn unix .htpasswd

我已经设置了一个SVN服务器,我想让用户能够更改自己的密码,但我不知道如何实现这一点。用户名和密码存储在我使用htpasswd创建的用户文件中。理想情况下,用户可以登录服务器并运行命令htpasswd / svn / repos / users [username]来更改密码。这种方法的(非常非常明显的)问题是,如果我让所有人都能读写这个文件,他们就能更改任何人的密码,甚至删除svn用户。有哪些替代方案?我对使用shell脚本的unix系统管理没有经验,所以如果这是一个完全没有问题的话,请原谅。

1 个答案:

答案 0 :(得分:2)

我认为你正在使用Apache。正确?

您是否考虑过使用LDAP进行帐户管理? Apache很好地与LDAP集成,Windows域帐户访问也可以由LDAP驱动。这意味着,您可以使用Windows帐户和密码登录Subversion,并且可以使用Windows组来帮助控制访问。这是我的设置:

LoadModule dav_svn_module     modules/mod_dav_svn.so
<Location /source>
        DAV svn
        SVNPath /opt/svn_repos
        AuthType basic
        AuthName "Subversion Repository"
        AuthBasicProvider ldap
        AuthzLDAPAuthoritative off
        AuthLDAPURL "ldap://ldap.mycompany.com:3268/dc=mycompany,dc=com?sAMAccountName" NONE
        AuthLDAPBindDN "CN=svnUser,OU=Users,OU=Accounts,DC=mycompany,DC=com"
        AuthLDAPBindPassword "Swordfish"
        Require ldap-group CN=Developer,CN=Groups,DC=mycompany,DC=com
</Location>

我曾经写过一个小程序,允许用户更改他们的Subversion密码。我现在没有,但这并不难。您知道用户和htpasswd文件的位置。您所要做的就是让用户键入新密码,对其进行加密,然后重写htpasswd文件。我使用了一个符号链接来使我的PHP程序看到htpasswd文件。

但是,我发现在Apache重新启动之后更改htpasswd可能不会生效,并且当人们进行Subversion结帐时,您无法简单地重启Apache。