Subversion(Linux) + Active Directory

В добавление к статье про доменную авторизацию в линукс+вмваре попробую описать subversion.

Считаем, что доменная авторизация работает и нужно докрутить ее на сабвершн. Считаем что сабвершн уже установлен и работает.

Качаем mod_auth_pam устанавливаем эти модули их два. Добавляем их в файл httpd.conf

LoadModule auth_pam_module modules/mod_auth_pam.so
LoadModule auth_sys_group_module modules/mod_auth_sys_group.so

Также добавляем Локейшн.

<Location /svn>
         DAV svn
         # SVNAutoversioning on
         AuthzSVNAccessFile /docs/svn/svnaccess.conf
         SVNParentPath /docs/svn/repos
         AuthUserFile /dev/null
         AuthType Basic
         AuthName "SVN repository"
         AuthPAM_Enabled on
         AuthGROUP_Enabled on
         AuthPAM_FallThrough off
         AuthGROUP_FallThrough off
         Require valid-user
         AuthBasicAuthoritative off
</Location>

Основные моменты. Файл svnaccess.conf нужен для распределения доступа к веткам svn. У него простой синтаксис:


     [groups]
     group_name = user1, user2
     group_name2 = user3, user4

     [/]
     * = r
     [/]
     inot = r
     [/example]
     inot = rw
     @group_name = r

Инот пользователь, r-read, w-write. После тага [groups] декларируются группы, где через запятую идут пользователи. Потом эту группу можно использовать поставив перед ней @.

Меняем файл /etc/pam.d/httpd

#%PAM-1.0
auth sufficient /lib64/security/pam_winbind.so
account required /lib64/security/pam_winbind.so

Вот собственно вся настройка… Есть одина фишка, для разграничения прав используется файлик, что не очень удобно. Либо я чето не дочитал, либо в него нельзя вносить группы. Но группы можно вносить в локейшн.

require group DOMAIN\user

вот таким параметром. У меня пока не было надобности проверять, но я думаю что все работает. Тоесть открываем в файлике для всех rw. Но попасть туда смогут только те кто входит в группу. Тоесть не надо заходить на сервер чтобы добавить человеку доступ. Просто кидаем его в нужную группу в АД и пользуемся.

Немного подводных камней. Если доменный юзер создает проект через ssh под своим доменным акаунтом, он и создается с его правами и апач перестает получать к нему доступ. Как решать выбирать тому кто будет решать. Я вижу 3 способа.

1. Создавать проекты через суду.

2. Каждый раз выдавать права, если проекты добавляются редко.

3. Поставить какую нибудь надстройку на svn c веб интерфейсом, которая сраза будет создавать проекты из под пользователя апача.