Синхронизация по 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 + не включенный в группу администратора), но тогда я потеряю метаинформацию о файлах (владение, разрешения). Все файлы принадлежат только одному пользователю (поэтому право собственности не является проблемой), но некоторые файлы являются исполняемыми сценариями, а некоторые нет.

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

0
задан 28 March 2017 в 16:38
2 ответа

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

На самом деле есть вопрос без командных ключей на ask-ubuntu

1
ответ дан 4 December 2019 в 16:19

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

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

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

Нет конца утилитам, которые вы можете использовать для репликации файлов - drbd с зеркалированием на локальный физический диск, ssh файловые системы, Andrew File System, и многое другое. Может быть, ваш выбор унисона по сравнению с ssh является произвольным ограничением. Хотя, если бы вы просто спросили, каковы возможности зеркалирования файловой системы на разных хостах, этот вопрос, скорее всего, был бы закрыт как "слишком широкий".

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

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

0
ответ дан 4 December 2019 в 16:19

Теги

Похожие вопросы