Назад | Перейти на главную страницу

Apache: невозможно настроить простых пользователей SVN и права доступа

У меня есть репозиторий SVN, хранящийся на сервере Apache.

Аутентификация была выполнена через 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

Что я делаю не так?

Главная проблема:

AuthUserFile для базовой аутентификации Apache должно быть не текстовый файл в формате user = password, но в специальной форме, подготовленной htpasswd.

Ваш текущий users.txt можно использовать только для репозиториев на основе svnserve, svn:// протокол, а не http (s): //. В результате Apache не смог найти пользователя super (любой пользователь действительно) и аутентифицировать его

Незначительный глюк:

Права доступа в AuthzSVNAccessFile наследуются от родительского узла к потомкам, таким образом: если у вас есть

[/]
@admin = rw

ты жестяная банка не клонируйте это правило для одного репозитория ниже корневого узла и для пути внутри указанного репозитория