Как заставить rsync использовать sudo

Как заставить rsync использовать sudo

Я использую rsyncдля зеркалирования ряда папок на нашем сервере отказоустойчивости. Однако некоторые из наших файлов, такие как эскизы или полнотекстовые индексы, генерируются нашими приложениями под веб-пользователем (с именем 'nobody') и по умолчанию имеют ограничительные разрешения.

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

Есть ли какой-нибудь разумный способ заставить rsync работать как sudo? Или мне следует рассмотреть возможность изменения прав доступа к файлам?

решение1

вы могли бы:

  1. создайте новую группу для данных, которые должны быть прочитаны (с помощью rsync), добавьте UID в эту группу и/или измените GID для файлов и каталогов и установите соответствующие разрешения, которые позволят вам использовать rsync с этим именем пользователя.
  2. получите точную командную строку, запускаемую на стороне сервера при использовании rsync-over-ssh (подсказка: используйте -v несколько раз и не забудьте убрать '-v' из полученной командной строки) и используйте аутентификацию с открытым ключом SSH, принудительно запуская эту конкретную команду (см. ФОРМАТ ФАЙЛА AUTHORIZED_KEYS в sshd(8))

С помощью пункта 2 вы можете использовать rsync через ssh для пользователя root и по-прежнему оставаться в безопасности (см. PermitRootLogin без пароля в sshd_config(5)), или, что еще лучше, вы можете объединить эти два способа, чтобы создать непривилегированного пользователя, которого можно будет использовать только с этой конкретной командной строкой rsync.

EDIT: отправка данных аутентификации по ssh для получения прав root (например, ssh как пользователь, sudo с паролем пользователя) не лучше, чем отправка ssh напрямую пользователю root (через открытый ключ или черезхорошийпароль), ИМХО.

решение2

Вы можете указать, что следует запустить в качестве удаленной команды rsync --rsync-path, например, следующим образом:

rsync --rsync-path='sudo rsync' --blah --blah /src blah@dest:/dst

решение3

Вы также можете использоватьrsync-демон. Однако будьте осторожны, описанный мной способ позволяет любому человеку на машине, на которой запущен демон rsync, получить доступ к имени модуля.

Я не изучал это очень глубоко, но мне не удалось создать безопасную настройку на основе открытого ключа (и, следовательно, без пароля) таким образом. Но, возможно, есть.

Связанный контент