Использование Unison / rsync через SSH для синхронизации сайтов, где требуется полный доступ к файловой системе, но root-вход отключен

Предположим, два сайта A и B с файловым сервером на обоих концах. Содержание /storage должны быть синхронизированы между сайтами, сохраняя права собственности и разрешения. Там нет всей охватывающей группы, которая владеет всеми файлами в группе /storage, Если запущен Unison или rsync pid=0, синхронизация выполняется тривиально. Однако SSH должен использоваться в качестве транспорта, и по понятным причинам вход в систему root SSH был отключен на обоих концах.

Как я могу синхронизировать A и B со всеми разрешениями, сохраненными в этой ситуации. Два метода, которые я могу придумать:

  • Запуск вторичного SSH, который разрешает вход в систему root, но может подключаться только через VPN между A и B.
  • добавление специального пользователя синхронизации, который sshd-конфигурация принудительно выполняет
    • Оболочка SUID для Unison или rsync (опасно получить права).
    • sudo Обертка для Unison или Rsync

В ответах на вопрос " Удаленно используйте root по ssh для унисон", предложите включить беспарольный вход в систему root-доступа pubkey через SSH - я не очень заинтересован в этом решении.

Есть другие идеи?

2 ответа

Решение

Лучше всего подойти для входа с открытым ключом через SSH. Кроме того, вы можете ограничить этот доступ для одного хоста:

AllowUsers root@192.0.2.123

Или даже использовать Match директива для получения уникальной конфигурации для данного чего-либо (адрес, пользователь и т. д.):

Match Address 192.0.2.123
    PasswordAuthentication no
    RSAAuthentication yes
    PubkeyAuthentication yes
    PermitRootLogin yes

Как запустить удаленный экземпляр unison от имени пользователя root:

Удаленная сторона

  • не трогайте конфигурацию sshd, особенно не создавайте специального пользователя синхронизации [ssh], как вы указали в своем вопросе

  • создать оболочку sudo vi sunison:

#!/data/data/com.termux/files/usr/bin/bash
su --preserve-environment -c `which unison` "$@"

(да, это для среды Termux, упростить для ваших нужд)

Сторона клиента

  • работать в унисон с -servercmd sunison
  • или добавьте в свой унисон-профиль servercmd = sunison

Заметки

  • что-то вроде servercmd = sudo unison было бы лучше, но это не сработало для меня
Другие вопросы по тегам