При запуске svnsync в репозитории с набором групп suid/sgid не удается выполнить ловушку

У меня есть сервер 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 Тем не менее, подключитесь к целевому зеркалу:

  1. работает как папка в моем домашнем каталоге,
  2. или работает как корень против /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 резервные копии / бла / хуки /pre-revprop-change
- ИЛИ ЖЕ -
-rwxr-xr-x 1 root adm 2794 сент. 16 16:54 резервные копии / бла / хуки /pre-revprop-change

последующий

-rwxr-xr-x 1 myuser myuser 2794 сен 16 16:45 svnmirrors/blah/hooks/pre-revprop-change

Мысли:

  1. Это что svnsync не работает под группой adm?
  2. Если это так, возможно ли добавить svnsync в adm?
  3. Или мне нужно установить другую группу в папке и убедиться, что я в этой группе?
  4. Установив gsid, выставляю ли я уязвимости на сервере? Ссылка на эту главу о безопасности.

3 ответа

Решение

Решено - монтировать раздел без noexec вариант

Убедитесь, что вы смонтировали каталог без noexec вариант!

Я не знаю, что заставило меня заглянуть в /etc/fstab (или почему я не думал об этом раньше), но /srv/backups это отдельный раздел, и я объявил это с noexec вариант.

Это препятствовало тому, чтобы крюк бежал; удаляя и перемонтируя, все работает нормально.

Но я собираюсь сбросить GSID из папки, изменить раздел на nosuidи разрешить выполнение.

Могу ли я предложить использовать сценарии svnbackup.pl и svnrestore.pl от Chris Knight для резервного копирования вашего репо? Мы используем его, и он отлично работает.

Если у вас нет, вам также нужно изменить pre-revprop-change в дополнение к копированию на место - блокирует изменения revprop (для всех свойств кроме svn:log) по умолчанию. Вам нужно будет добавить что-то вроде:

if [ "$USER" = "svnsync" ]; then exit 0; fi

Смотрите здесь для получения дополнительной информации.

Другие вопросы по тегам