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

Синхронизация по ssh с ограниченным доступом к файловой системе сервера

Я хочу синхронизировать (в обоих направлениях) определенную папку между сервер (S) и локальная машина (L). И на S, и на L у меня одна и та же система (Ubuntu) и пользователь jan с привилегиями sudo (то есть в группе администратора). Доступ SSH к S возможен только с ключ авторизации.

Я решил, что могу использовать unison для этого. И я создал новую пару ключей с пустым паролем. Проблема в том, что я не хочу позволять неограниченный доступ к этому ключу без пароля.

(РЕДАКТИРОВАТЬ: я хочу (например) различать разные авторизованные ключи SSH для одного и того же пользователя - и в одном случае ограничить доступ только к одному каталогу и, если возможно, только для запуска определенной команды - как с rrsync ниже.)

Я мог бы использовать rsync. Имеет серверный скрипт rrsync и затем вы можете ограничить доступ для ключа в authorized_keys файл:

command="$HOME/bin/rrsync -ro /home/jan/sync_folder/".

Но rsync не может обрабатывать удаленные файлы и т. д.

Другой вариант - установить chroot jail на сервере, но мне все еще нужно иметь свободный доступ к серверу с моим первым ключом.

Я мог бы создать новая учетная запись пользователя, через который будет выполняться синхронизация (и применить chroot jail + не входит в группу администратора), но тогда я потеряю метаинформацию о файлах (право собственности, разрешения). Все файлы принадлежит только одному пользователю (поэтому право собственности не является проблемой), но некоторые файлы являются исполняемыми сценариями, а некоторые нет.

Есть идеи, как синхронизировать папки, сохраняя при этом безопасный доступ? У меня нет предпочтений в инструменте. Те, что указаны выше, - это то, что я обнаружил после некоторого изучения.

Почему rsync не должен обрабатывать удаленные файлы? --Удалить должен делать именно это.

Собственно вопрос без командных клавиш на ask-ubuntu

Это должен быть комментарий, но он немного длинный.

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

Если набор файлов включает файлы, принадлежащие разным пользователям, то сторона записи должна работать от имени пользователя root. Это не требует, чтобы канал запускался от имени пользователя root. Путаница с rsync возникает из-за вашей потребности поддерживать как удаление файлов, так и двунаправленную синхронизацию. Если файл существует на узле «A», но не на узле «B», означает ли это, что он был удален на узле «B» или недавно был создан на узле «A» - ничего, что не сохраняет состояние между вызовами, не может сказать.

Для репликации файлов можно использовать множество инструментов - drbd с зеркалированием на локальный физический диск, файловые системы ssh, файловую систему Andrew и многие другие. Возможно, ваш выбор unison вместо ssh является произвольным ограничением. Хотя, если бы вы просто спросили, какие есть варианты для зеркалирования файловой системы на хостах, ваш вопрос, скорее всего, был бы закрыт как «слишком широкий».

Я не хочу предоставлять неограниченный доступ к этому ключу без пароля

Что вы имеете в виду под «неограниченным доступом»? Как указано выше, конец записи должен работать как «root». Вы хотите ограничить возможности root в системе Unix? Это возможно, но очень сложно.