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
Что я делаю неправильно?
1 ответ
Главная проблема:
AuthUserFile для базовой проверки подлинности Apache должен быть не текстовым файлом в формате user = password
, но в специальной форме, подготовленной htpasswd.
Ваш текущий users.txt
может использоваться только для репозиториев на основе svnserve, svn://
протокол, а не http(s)://. В результате Apache не смог найти пользователя super
(любой пользователь на самом деле) и аутентифицировать его
Незначительный глюк:
Права доступа в AuthzSVNAccessFile
наследуются от родительского узла к потомкам, таким образом: если у вас есть
[/]
@admin = rw
Вы не можете клонировать это правило для одного репозитория ниже корневого узла и для пути внутри указанного репозитория.