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

Основные моменты. Файл 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 веб интерфейсом, которая сраза будет создавать проекты из под пользователя апача.