Назад | Перейти на главную страницу

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

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

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

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

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

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

ты мог:

  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.

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

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

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