У меня есть Linux-сервер, который я пытаюсь запустить svnsync
против списка репозиториев для зеркалирования / резервного копирования.
Я создал папку /srv/backups
и установите для него групповой gsid adm
, с помощью chmod g+s
так что любой элемент или папка, созданные в этом каталоге, сохраняют право собственности группы ADM.
Затем я:
svnadmin create blah
под /srv/backups
, pre-revprop-change
подключить сценарий к blah/hooks/
chmod +ax blah/hooks/pre-revprop-change
svnsync init
против бла и удаленного репозитория. Он не работает как я, так и под root, с сообщением об ошибке 255 из сценария pre-revprop-change.svnsync: E165001: изменение Revprop заблокировано обработчиком pre-revprop-change (код выхода 255) без вывода.
Если я повторю те же шаги выше, скопировав то же самое pre-revprop-change
однако к целевому зеркалу:
/srv/svnmirrors
где root:adm
владеет, но gsid не установлен,Затем он выполняется правильно, что позволяет мне инициализировать, а затем синхронизировать.
Итак, я почти уверен, что это проблема с gsid, а значит, у svnsync нет разрешений на запуск ловушки.
Насколько я понимаю, gsid указывает программам, действующим против этого каталога, запускаться с этими учетными данными; поэтому добавление папки выполняется как я: adm, и я ожидал бы, что запуск svnsync будет запускаться как я: adm или root: adm и должен иметь достаточные привилегии.
Вот основные папки под /srv
, где backups
терпит неудачу и svnmirrors
успешно:
drwxrwsr-x 11 root adm 4096 16 сен 17:09 резервные копии
drwxrwxr-x 2 root adm 4096 16 сен, 17:24 svnmirrors
И вот крючки в обоих местах:
крючок, который не выполняется; пробовал как root, так и myuser:
-rwxr-xr-x 1 myuser adm 2794 16 сентября 16:54 резервные копии / blah / hooks / pre-revprop-change
- ИЛИ -
-rwxr-xr-x 1 root adm 2794 16 сентября 16:54 резервные копии / blah / hooks / pre-revprop-change
следующий
-rwxr-xr-x 1 myuser myuser 2794 16 сентября 16:45 svnmirrors / blah / hooks / pre-revprop-change
noexec
вариантУбедитесь, что вы смонтировали каталог без noexec
вариант!
Я не знаю, что заставило меня заглянуть /etc/fstab
(или почему я не подумал об этом раньше), но /srv/backups
это отдельный раздел, и я объявил его с noexec
вариант.
Это предотвратило движение крючка; удалив это и снова установив, все работает нормально.
Но я собираюсь сбросить gsid из папки, сменить раздел на nosuid
, и разрешить выполнение.
Могу я предложить использовать сценарии svnbackup.pl и svnrestore.pl от Криса Найта для резервного копирования вашего репо? Мы его используем, и он отлично работает.
Если вы этого не сделали, вам также необходимо изменить pre-revprop-change
перехватчик в дополнение к копированию на место - он блокирует изменения revprop (для всех свойств, кроме svn:log
) по умолчанию. Вам нужно будет добавить что-то вроде:
if [ "$USER" = "svnsync" ]; then exit 0; fi
Видеть Вот для получения дополнительной информации.