2011-12-01 134 views
3

我已经设置了一个SVN服务器,我想让用户能够更改自己的密码,但我不确定如何完成此操作。用户名和密码存储在我使用htpasswd创建的用户文件中。理想情况下,用户可以登录到服务器并运行命令htpasswd/svn/repos/users [username]更改密码。这种方法的(非常非常明显的)问题是,如果我使这个文件对所有人都可读和可写,他们就能够更改任何人的密码,甚至可以删除svn用户。有什么替代品?我对shell脚本的unix系统管理没有经验,所以如果这是一个总的问题,不好意思。允许用户更改SVN密码

+0

找到了一个类似的问题很好的答案:http://stackoverflow.com/questions/4736413/apache-htpasswd-secure-password-change –

回答

2

我认为你使用的是Apache。对?

您是否考虑过使用LDAP进行帐户管理? Apache非常好地与LDAP集成,Windows Domain帐户访问也可以由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> 

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

但是,我发现改变htpasswd可能不会影响,直到Apache重新启动后,并且当人们正在进行Subversion签出时,您不能简单地重新启动Apache。

+0

请你分享你的PHP程序? – Razavi