1

Недавно мы установили SVN 1.6.11 и пытаемся запустить его с использованием сервера Apache (2.2.15) после того, как обнаружим, что svnserve не отвечает нашим потребностям. Наша система - RHEL 6, и мы хотели бы использовать учетные записи пользователей ADS, поскольку создание новой группы учетных записей отдельно для использования SVN кажется излишним. Мы пытаемся использовать pwauth для внешней авторизации с использованием системных учетных записей.

До сих пор, несмотря на то, что мы следовали нескольким онлайновым учебникам по этому вопросу, нам не удалось заставить работать pwauth после настройки Apache, PAM и файла authz для использования mod_dav в качестве части аутентификации. Чтобы дать представление о том, что мы использовали, мы следовали общей схеме нескольких сайтов по этому вопросу, но пока не имели успеха.

Вот дополнительная информация о сервере Apache, который мы используем:

[svn]# httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Apr 29 2013 04:13:12
Server's Module Magic Number: 20051115:25
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

В httpd.conf мы настроили порт 80 для прослушивания, NameVirtualHost на *:80, и у нас есть эта настройка VirtualHost:

<VirtualHost *:80>
    DocumentRoot "/"

    ServerName usfrk-sw-p1.thermo.com

    AddExternalAuth         pwauth   /usr/local/bin/pwauth

    SetExternalAuthMethod   pwauth   pipe

    <Location /repos >
        DAV                    svn
        SVNParentPath          /home/svnroot
        AuthType               Basic
        AuthName               "Thermo EPM SVN repository"
        AuthzSVNAccessFile     /home/svnroot/conf/authzapache
        AuthBasicProvider      external
        AuthExternal           pwauth
        Satisfy                Any

        <limitexcept GET PROPFIND OPTIONS REPORT>
                Require valid-user
        </limitexcept>
    </Location>
</VirtualHost>

Ранее мы загружали модули DAV в следующем порядке:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule authnz_external_module /usr/lib64/httpd/modules/mod_authnz_external.so

В книге "Управление версиями с помощью Subversion" отмечается, что файл mod_dav.so следует загружать перед любыми другими модулями SVN. Насколько мы можем судить, это единственные модули, которые нам нужны для этого.

Для файла authzapache мы настроили две отдельные группы пользователей. Единственное, что может показаться задержкой, это то, что имена включают в себя обратную косую черту, и мы не до конца поняли, нужна ли одна или две обратные косые черты, поскольку некоторые вещи отбрасывают одну (имена имеют вид DOMAIN\firstname.lastname).

В случае pwauth одной из возможных проблем является определение SERVER_UIDS в файле config.h. В настоящее время мы установили идентификатор группы наших локальных пользователей. Тем не менее, некоторая документация предполагает, что это должен быть идентификатор пользователя apache. Мы не уверены, что нам следует делать здесь, и, насколько мы знаем, это может быть тем, что нам мешает.

В конечном счете, мы запускаем команду «net ads info» и получаем то, что похоже на хороший отзыв. Затем мы устанавливаем группу пользователей (AllowUsers) в /etc/ssh/sshd_config.h. Следующий тест должен проверить pwauth как внешний аутентификатор, и вот как это выглядит:

[svn]$ pwauth && echo 'yay' || echo 'nay'
nay

Пытаясь получить больше информации об этом, мы запускаем и получаем следующее:

[svn]$ pwauth; echo $?
50

Согласно сайту, на котором была эта информация, возвращение 50 предполагает, что pwauth запускается как недопустимый пользователь. Мы еще не выяснили, как исправить это до сих пор, или это даже корень проблемы с использованием pwauth.

Где-то здесь отсутствует ссылка. SVN настроен и нормально работает на сервере, но нам нужно разрешить доступ удаленным пользователям, а также ограничить часть этого доступа. Любая идея будет принята с благодарностью.

1 ответ1

0

Если вы хотите использовать пакет EPEL для pwauth, он закомментирует SERVER_UIDS и зависит от процесса, находящегося в группе apache. Он устанавливается как исполняемый группой apache по умолчанию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .