LINUX.ORG.RU

Git|WebDav|RO


0

0

Добрый день. Есть следующая проблема: В наличие apache,webdav и git. Все работает с таким конфигом:

<Location /repo.git>
DAV on
AuthType Basic
AuthName "Git"
AuthUserFile /var/www/tratata/passwd.git
Require valid-user
</Location>

Но хотелось бы еще иметь пользователей, с правами read-only на проект, сейчас получается, что все кто авторизовываются имеет права rw. С svn это решается дописыванием трех строчек к верхнему конфигу:

DAV svn
SVNParentPath тра-та-та
# our access control policy
AuthzSVNAccessFile тра-тата/svn

Где в /var/www/tratata/svn можно задавать права rw/ro для пользователей в каждом проекте. Как провернуть нечто подобное с git так и не поняли. Ясно, что есть gitosis, но хотелось бы авторизацию по паролю. Спасибо.


Я (тоже?) попал в git из svn, поэтому хотел делать нечто подобное. Чтение документации навело на мысль, что разработчики гита считают, что, во-первых, разделение прав внутри репозитория не нужно (и я не смог придумать разумного довода против). И во-вторых, разработчики ходят через git+ssh, а прочие анонимы - через git.

Теперь про WebDAV... Попробуй <Limit> и авторизацию самим апачем. То есть не только аутентификацию, но и разграничение, кому можно писать, а кому нет. Сам не пробовал такое делать, но очень похоже, что можно.

const86 ★★★★★
()

<Location /repo.git>
DAV on
<LimitExcept GET PROPFIND OPTIONS REPORT>
AuthType Basic
AuthName "Git"
AuthUserFile /var/www/tratata/passwd.git
Require valid-user
</LimitExcept>
</Location>

Что-то в этом роде. В результате LimitExcept будет спрашивать пользователя и пароль на все операции, кроме "GET PROPFIND OPTIONS REPORT"

То есть, анонимный доступ на RO.

Оно?

Slavaz ★★★★★
()
Ответ на: комментарий от const86

>И во-вторых, разработчики ходят через git+ssh, а прочие анонимы - через git.
Это ясно) Но от этого не легче =)

>Попробуй <Limit> и авторизацию самим апачем. То есть не только аутентификацию, но и разграничение, кому можно писать, а кому нет.

Спасибо, надо посмотреть.

Slavaz, К сожалению немного не то, т.к. нужен именно не анонимный доступ ro, а с аутентификацией.

arhibot
() автор топика
Ответ на: комментарий от Slavaz

> Оно?

А если вытащить Auth* и Require valid-user из лимита, а внутри сделать Require с именем группы, куда внести пользователей с доступом на запись? Апача под рукой нет, бредю по старым воспоминаниям :)

const86 ★★★★★
()
Ответ на: комментарий от const86

Всем спасибо. Заработало с таким конфигом:

<Location /repo.git>
DAV on
<LimitExcept GET PROPFIND OPTIONS REPORT>
AuthType Basic
AuthName "GitGr"
AuthGroupFile /var/www/host/rw.git
Require group rw
</LimitExcept>
AuthType Basic
AuthName "Git"
AuthUserFile /var/www/host/passwd.git
Require valid-user
</Location>

arhibot
() автор топика
Ответ на: комментарий от arhibot

Возник еще один вопрос. Куда вобще надо смотреть, хочется нечто вроде этого, гугл молчит что-то как партизан:

<Location /*.git/>
DAV on
AuthType Basic
AuthName "Git"
AuthUserFile /var/www/host/passwd.git
AuthGroupFile /var/www/host/htdocs/$CURRENT_LOCATION/rw.git # !!!!
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require group rw
</LimitExcept>
<Limit *>
Require group all
</Limit>
Require valid-user
</Location>

Ясно, что есть mod_macro, но перезапускать апач при добавление проекта как-то совсем не хочется.

arhibot
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.