Apache-2.2

Apache:無法設置簡單的 SVN 使用者和訪問權限

  • December 21, 2015

我有一個儲存在 Apache 伺服器上的 SVN 儲存庫。

身份驗證是通過 SSPI 完成的,我正在嘗試將其移至更基本的東西(具有本地使用者/密碼列表)。

我的httpd.conf

LoadModule sspi_auth_module modules/mod_auth_sspi.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_user_module modules/mod_authz_user.so

... 

<Location /svn_toto>

 DAV svn
 SVNParentPath D:\web_server\svn_repositories_test
 AuthzSVNAccessFile D:\web_server\svn_repositories_test\svnaccessfile.txt
 #Satisfy Any
 Require valid-user
 AuthType Basic
 AuthName "Subversion Repository toto"
 AuthUserFile D:\web_server\svn_repositories_test\users.txt

 SVNIndexXSLT "/svnindex.xsl"

</Location>

我的users.txt

[users]
super = super
jean = jean

我的svnaccessfile.txt

[groups]
admin = super

[/]
@admin = rw

[cloisonnement:/]
jean = rw
super = rw

[cloisonnement:/trunk]
jean = rw
super = rw

現在,從客戶端機器上,我嘗試:

svn ls https://servername/svn_toto/cloisonnement/trunk --username super --password super

這失敗並詢問我密碼:

Authentication realm: <https://servername:443> Subversion Repository toto
Username: super
Password for 'super': *****
Authentication realm: <https://servername:443> Subversion Repository toto
Username: super
Password for 'super': *****
svn: E215004: Unable to connect to a repository at URL 'https://servername/svn_toto/cloisonnement/trunk'
svn: E215004: No more credentials or we tried too many times.
Authentication failed

我究竟做錯了什麼?

主要問題:

用於基本 Apache 身份驗證的 AuthUserFile不能是格式的純文字文件user = password,而是由 htpasswd 準備的特殊格式的文件。

您的 currentusers.txt僅可用於基於 svnserve 的儲存庫、svn://協議,而不是 http(s)://。結果,Apache 無法找到使用者super(實際上是任何使用者)並對其進行身份驗證

小故障:

訪問權限AuthzSVNAccessFile從父節點繼承到子節點,因此:如果您有

[/]
@admin = rw

不能為根節點下的單個儲存庫和指定儲存庫內的路徑複製此規則

引用自:https://serverfault.com/questions/744454