SVN-сервер разрешает коммиты только при запуске от имени пользователя root
Итак, два дня назад у меня был новый блестящий сервер SVN. Я установил его для WebDAV без проблем. Только когда я попытался принять несколько проектов, я столкнулся с проблемой.
Сначала у меня были все папки проекта в одном репозитории. Но потом я увидел ошибку в своем пути и переключился на несколько репозиториев. Вместо того, чтобы редактировать /etc/apache2/sites-available/default файл с каждым новым проектом, я выбрал использовать демон svnserve.
Итак, проблема в том, что я могу делать коммиты из Eclipse только тогда, когда демон запускается от имени root. Если нет, я получаю ошибку "Отказано в доступе". Есть идеи? Вот статистика каталогов:
drwxr-xr-x 6 root root 4096 2011-06-07 09:38 .
drwxr-xr-x 4 root root 4096 2011-06-05 00:48 ..
lrwxrwxrwx 1 svn svn 6 2011-06-06 22:35 all -> repos/
drw-rw-r-- 6 svn svn 4096 2011-06-06 13:53 EmpowerView
drw-rw-r-- 6 svn svn 4096 2011-06-06 13:54 GoogleVoicemail
-rw-rw-r-- 2 svn svn 307 2011-06-07 08:47 passwd
drw-rw-r-- 6 svn svn 4096 2011-06-06 13:54 PerlinNoise
drw-rw-r-- 7 svn svn 4096 2011-06-05 02:15 repos
-rw-rw-r-- 3 svn svn 2278 2011-06-07 08:46 svnserve.conf
РЕДАКТИРОВАТЬ
Я попробовал предложенную повторную проверку с демоном, не работающим как root, и все еще без сигары. Та же ошибка разрешения.
РЕДАКТИРОВАТЬ 2
Я также пытался запустить демон от имени пользователя svn, но не повезло. В какой-то момент я испортил свою основную группу и больше не имел привилегий sudo! Я должен был взломать свой собственный сервер через учетную запись приятеля.
1 ответ
У вас классическая проблема с разрешением. Возможно, ваш репозиторий находится в таком месте, как /some/dir/repos с /some являющийся svn не имея доступа /some потому что svn не владеет /some а также:
svnнаходится в группе/some, но разрешения установлены как 700svnне в группе/someи разрешения установлены как 750
В обоих случаях, svn не может спуститься в /some потому что бит выполнения отсутствует на /some,
Возможны два решения:
- добавить другой бит выполнения в
/someпоэтому разрешения выглядят как 751 - добавить бит выполнения группы в
/someи убедитесь, что пользовательsvnявляется членом группы
Вы должны проверить все каталоги выше вашего репо. Так что если ваш путь выглядит /i/am/very/long/reposнужно проверить /i, /i/am до /i/am/very/long/repos,