
Я использую rsync
для зеркалирования ряда папок на нашем сервере отказоустойчивости. Однако некоторые из наших файлов, такие как эскизы или полнотекстовые индексы, генерируются нашими приложениями под веб-пользователем (с именем 'nobody') и по умолчанию имеют ограничительные разрешения.
Кроме того, я делаю это через SSH, где root-доступ отключен, и я хотел бы сохранить его таким, если это возможно.
Есть ли какой-нибудь разумный способ заставить rsync работать как sudo? Или мне следует рассмотреть возможность изменения прав доступа к файлам?
решение1
вы могли бы:
- создайте новую группу для данных, которые должны быть прочитаны (с помощью rsync), добавьте UID в эту группу и/или измените GID для файлов и каталогов и установите соответствующие разрешения, которые позволят вам использовать rsync с этим именем пользователя.
- получите точную командную строку, запускаемую на стороне сервера при использовании 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, получить доступ к имени модуля.
Я не изучал это очень глубоко, но мне не удалось создать безопасную настройку на основе открытого ключа (и, следовательно, без пароля) таким образом. Но, возможно, есть.