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

Как использовать `rsync` для безопасного подключения к зеркалу?

Я использую rsync --rsh "ssh" прижать к зеркалу. Для установки необходимых разрешений файловой системы на зеркале требуется rsync для запуска с правами root на зеркале. Однако зеркальные файлы находятся в единой иерархии, и я хотел бы разрешить rsync чтобы получить доступ только к этой иерархии и ни к чему другому на зеркале.

Как бы я позволил rsync установить разрешения, а также ограничить доступ?

Возможно ли какое-то сочетание rsync --rsh "???" и command="???" вариант в authorized_keys что могло бы помочь? В rsync команда уже использует специальный ключ в authorized_keys.

Или есть способ rsync подключиться как непривилегированный пользователь, попасть в тюрьму, а затем получить доступ для установки разрешений файловой системы? Заключить процесс в тюрьму легко, но позволяя удаленному rsync получение привилегий кажется трудным, а позволять заключенному в тюрьму процессу получать какие-либо разрешения - рискованно. (Конечно, прямо сейчас у процесса есть корень, и любая степень ограничения была бы улучшением, даже если бы только для уменьшения опасности.)

Чтобы выполнить синхронизацию удаленного местоположения с локальным:

rsync -avze ssh user@source:/dir destination

Чтобы выполнить синхронизацию локального местоположения с удаленным местоположением:

rsync -avz source -e ssh user@destination:/dir

На странице руководства (http://linux.die.net/man/1/rsync):

-a archive mode; e.g. copies permissions
-v verbose; in case you want to log what gets copied
-z compress during transfer
-e specify the remote shell to use; let's you use ssh

Чтобы заставить rsync работать без запроса пароля, вам необходимо настроить доверительные отношения между исходным и целевым серверами, сгенерировав rsa-ключи и введя их в соответствующие авторизованные ключи. Вот хороший урок:

http://troy.jdmz.net/rsync/index.html

Ты должен бежать rsync из ваше зеркало с вашим оригиналом в качестве источника.

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

Решение в моем конкретном случае - использовать rsync --rsh "ssh" к подключиться как пользователь, которому должны принадлежать зеркалируемые файлы и использовать конфигурацию ssh для привязки этого пользователя к правильной иерархии.

Рецепт примерно так на целевом сервере:

useradd user
mkdir /home/user/srv/service
chown -R root:root /home/user

Grant user write permission to /srv/service

nano /etc/fstab

/srv/service /home/user/srv/service none bind 0 0

mount /srv/service

nano /etc/ssh/sshd_config

Match User user
ChrootDirectory %h

service ssh reload

nano /home/user/.ssh/authorized_keys

Add public key for remote user.

Наконец, из удаленной системы, как непривилегированный пользователь, отправьте данные в зеркало:

rsync --archive --rsh "ssh" --compress /srv/service/ user@server:/srv/service/