2011-12-01 130 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