URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 87733
[ Назад ]

Исходное сообщение
"SVN проблема"

Отправлено 2k3 , 28-Дек-09 16:59 
Всем привет, имеется два сервака на debian, на одном стоит сервер svn на втором его рабочая копия(репозитария). При том что на самом серваке svn работает от рута а его рабочая копия от www-data. При обновлении рабочей копии ( update ) новым правам назначаются рутовские права, а должны быть www-data. может ли это быть связано с тем что сервер svn работает от рута ? подскажите если не трудно. спасибо заранее.


Содержание

Сообщения в этом обсуждении
"SVN проблема"
Отправлено sHaggY_caT , 28-Дек-09 17:40 
>Всем привет, имеется два сервака на debian, на одном стоит сервер svn
>на втором его рабочая копия(репозитария). При том что на самом серваке
>svn работает от рута а его рабочая копия от www-data. При
>обновлении рабочей копии ( update ) новым правам назначаются рутовские права,
>а должны быть www-data. может ли это быть связано с тем
>что сервер svn работает от рута ? подскажите если не трудно.
>спасибо заранее.

С этим и связано. Используйте пост-коммит хук для chown на нужного владельца, а еще лучше, откажитесь от запуска svn-клиента под рутом (зачем может быть нужен такой ужас?)



"SVN проблема"
Отправлено sHaggY_caT , 28-Дек-09 18:43 
>[оверквотинг удален]
>>на втором его рабочая копия(репозитария). При том что на самом серваке
>>svn работает от рута а его рабочая копия от www-data. При
>>обновлении рабочей копии ( update ) новым правам назначаются рутовские права,
>>а должны быть www-data. может ли это быть связано с тем
>>что сервер svn работает от рута ? подскажите если не трудно.
>>спасибо заранее.
>
>С этим и связано. Используйте пост-коммит хук для chown на нужного владельца,
>а еще лучше, откажитесь от запуска svn-клиента под рутом (зачем может
>быть нужен такой ужас?)

Хотя подождите. Невнимательно прочитала, чушь какая-то получается: если клиент (то есть бинарь, делающий svn update) работает от обычного юзера, делать файлы, принадлежащие руту он  не может.

Что-то Вы намудрили :)


"SVN проблема"
Отправлено ALex_hha , 28-Дек-09 18:19 
>Всем привет, имеется два сервака на debian, на одном стоит сервер svn
>на втором его рабочая копия(репозитария). При том что на самом серваке
>svn работает от рута а его рабочая копия от www-data. При
>обновлении рабочей копии ( update ) новым правам назначаются рутовские права,
>а должны быть www-data. может ли это быть связано с тем
>что сервер svn работает от рута ? подскажите если не трудно.
>спасибо заранее.

svnserve или mod_dav? Запускать от рута ОЧЕНЬ плохая идея


"SVN проблема"
Отправлено 2k3 , 29-Дек-09 09:12 
пользователь тоже все выполняет из под рута и сервер под рутом =) Это не моя идея, просто досталась такая конфигурация в наследство. Выход из этой ситуации - перевести сервак на www-data ? Или можно как то еще решить проблему ?

"SVN проблема"
Отправлено ALex_hha , 29-Дек-09 12:49 
>пользователь тоже все выполняет из под рута и сервер под рутом =)
>Это не моя идея, просто досталась такая конфигурация в наследство. Выход
>из этой ситуации - перевести сервак на www-data ? Или можно
>как то еще решить проблему ?

Еще раз, как работает svn?


"SVN проблема"
Отправлено 2k3 , 29-Дек-09 14:15 
Вобщем есть сервак(1), там поднят svn. Есть сервак(2) второй на котором стоит рабочая копия svn с сервера 1. Сервак 1 работает од рутом, сервак 2 работает под рутом. Т.е все действия и на сервере и на клиенте делаются из под рута.
1 сервер (сервер svn) вот такие права к проекту:
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

2 сервер(рабочая копия) на папку и файлы:

Access: (0755/drwxr-xr-x)  Uid: (   33/www-data)   Gid: (   33/www-data)

Это все безобразие исправляет скрипт ( cd /home/project/1 && chown -R www-data.www-data * && chown root.root mail_spooler grabber )

Вот как то так это работает, только скрипт каждый раз юзать не айс, вот и пытаюсь разобраться.
Подскажите что не так


"SVN проблема"
Отправлено djaarf , 29-Дек-09 14:43 
Каждый раз скрипт юзать это более нормально чем работать с рабочей копией от рута, что мешает работать с рабочей копией от www-data?



"SVN проблема"
Отправлено sHaggY_caT , 29-Дек-09 15:03 
>[оверквотинг удален]
>
>Access: (0755/drwxr-xr-x)  Uid: (   33/www-data)   Gid: (
>  33/www-data)
>
>Это все безобразие исправляет скрипт ( cd /home/project/1 && chown -R www-data.www-data
>* && chown root.root mail_spooler grabber )
>
>Вот как то так это работает, только скрипт каждый раз юзать не
>айс, вот и пытаюсь разобраться.
>Подскажите что не так

Сделайте обычного пользователя(например, user-svn), дайте ему права cmdalias в sudo (man sudoers, если не справитесь, спрашивайте, подскажем как) дайте права на скрипт, который будет делать chown -R

Скрипт нужно запускать автоматически, через post-commint хук (подробно описано в официальной документации Subversion что это и как делается)

Давать пользователю Apach'а shell, что бы из-под него работал svn-клиент? Этого нельзя делать ни в коем случае :(((


"SVN проблема"
Отправлено djaarf , 29-Дек-09 15:35 

>
>Давать пользователю Apach'а shell, что бы из-под него работал svn-клиент? Этого нельзя
>делать ни в коем случае :(((

Ктото сказал что нужно давать ему шел?


"SVN проблема"
Отправлено djaarf , 29-Дек-09 15:42 
Хуки то работают на сервере svn (или я неправ?), а у него проблема в рабочей копии на другом хосте


"SVN проблема"
Отправлено sHaggY_caT , 29-Дек-09 16:04 
>Хуки то работают на сервере svn (или я неправ?), а у него
>проблема в рабочей копии на другом хосте

обычно такое решается через ssh-ключ. Можно прописать в списке команд для пользователя, под которым будет ходить subversion, только этот скрипт, делающий chown. Во всяком случае, я работала около двух лет в одной достаточно крупной компании, в которой реализовывалась именно такая схема. Как сделать красивее и безопаснее, я не знаю


"SVN проблема"
Отправлено sHaggY_caT , 29-Дек-09 16:06 
>>Хуки то работают на сервере svn (или я неправ?), а у него
>>проблема в рабочей копии на другом хосте
>
>обычно такое решается через ssh-ключ. Можно прописать в списке команд для пользователя,
>под которым будет ходить subversion, только этот скрипт, делающий chown. Во
>всяком случае, я работала около двух лет в одной достаточно крупной
>компании, в которой реализовывалась именно такая схема. Как сделать красивее и
>безопаснее, я не знаю

но это подходит только в том случае, если изменения нужно выгружать сразу же. В другом случае лучше сделать судовую обвязку для svn update, в которую включить и chown


"SVN проблема"
Отправлено 2k3 , 29-Дек-09 17:34 
>[оверквотинг удален]
>
>Сделайте обычного пользователя(например, user-svn), дайте ему права cmdalias в sudo (man sudoers,
>если не справитесь, спрашивайте, подскажем как) дайте права на скрипт, который
>будет делать chown -R
>
>Скрипт нужно запускать автоматически, через post-commint хук (подробно описано в официальной документации
>Subversion что это и как делается)
>
>Давать пользователю Apach'а shell, что бы из-под него работал svn-клиент? Этого нельзя
>делать ни в коем случае :(((

Можно пожалуйста поподробней про создание пользователя и назначения ему прав,спасибо.


"SVN проблема"
Отправлено sHaggY_caT , 29-Дек-09 17:55 
>[оверквотинг удален]
>>если не справитесь, спрашивайте, подскажем как) дайте права на скрипт, который
>>будет делать chown -R
>>
>>Скрипт нужно запускать автоматически, через post-commint хук (подробно описано в официальной документации
>>Subversion что это и как делается)
>>
>>Давать пользователю Apach'а shell, что бы из-под него работал svn-клиент? Этого нельзя
>>делать ни в коем случае :(((
>
>Можно пожалуйста поподробней про создание пользователя и назначения ему прав,спасибо.

Копипаста из спека одной из моих рабочих rpm-ок:

%post
echo "## backup helpdesk aliases" >> /etc/sudoers
echo "Cmnd_Alias BACKUPHELPDESK = /usr/sbin/rc.HABackup.sh" >> /etc/sudoers
echo "%helpdesk ALL = (root) NOPASSWD: BACKUPHELPDESK" >> /etc/sudoers
echo "## end backup helpdesk aliases" >> /etc/sudoers


Нужно добавить в файл sudoers Cmnd_Alias с любым (которое нравится Вам) именем для группы команд, и для группы команд прописать

(пользователь|группа%) ALL = (root) NOPASSWD: BACKUPHELPDESK

А вообще, man sudoers рулит, там все это написано)