Использование 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
было бы лучше, но это не сработало для меня