При запуске 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
Тем не менее, подключитесь к целевому зеркалу:
- работает как папка в моем домашнем каталоге,
- или работает как корень против
/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
Мысли:
- Это что svnsync не работает под группой adm?
- Если это так, возможно ли добавить svnsync в adm?
- Или мне нужно установить другую группу в папке и убедиться, что я в этой группе?
- Установив 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
Смотрите здесь для получения дополнительной информации.