я использую rsync
для зеркалирования ряда папок на нашем отказоустойчивом сервере. Однако некоторые из наших файлов, такие как эскизы или полнотекстовые индексы, создаются нашими приложениями под пользователем сети (с именем «никто») и по умолчанию имеют ограничительные разрешения.
Кроме того, я делаю это через ssh, где root-доступ отключен, и я бы хотел, чтобы это было так, если возможно.
Есть ли какой-нибудь разумный способ сказать rsync, чтобы он работал как sudo? Или мне стоит посмотреть на изменение прав доступа к файлам?
Вы можете указать, что запускать как удаленную команду rsync через --rsync-path
- например, что-то вроде этого:
rsync --rsync-path='sudo rsync' --blah --blah /src blah@dest:/dst
ты мог:
С # 2 вы можете использовать rsync поверх ssh для пользователя root и по-прежнему быть в безопасности (см. PermitRootLogin без пароля в sshd_config (5)), или, что еще лучше, вы можете объединить два для создания непривилегированного пользователя, который может использоваться только с этой конкретной командной строкой rsync.
РЕДАКТИРОВАТЬ: отправка данных аутентификации через ssh для получения root (например, ssh как пользователь, sudo с паролем пользователя) не лучше, чем выполнение ssh напрямую пользователю root (через открытый ключ или через хорошо пароль), ИМХО.
Вы также можете использовать демон rsync. Однако будьте осторожны, способ, которым я это там описал, позволяет получить доступ к имени модуля любому пользователю на машине, на которой запущен демон rsync.
Я не изучал это очень глубоко, но мне не удалось создать безопасный открытый ключ (и, следовательно, без пароля) таким образом. Но может быть.