Я хочу синхронизировать папку от своей машины с папкой на удаленной машине. Удаленной папкой можно только управлять root
. У меня есть учетная запись на удаленной машине, которая может использовать sudo
. Как я могу выполнить rsync, таким образом, что он имеет корневые полномочия на удаленной машине?
Я попробовал следующее:
rsync -avz -e ssh /home/ubuntu/my/lovely/folder ubuntu@x.x.x.x:/remote/lovely/folder --delete --rsync-path="sudo rsync"
Но (после ввода моего пароля) я получаю следующую ошибку:
sudo: no tty present and no askpass program specified
Вам нужен метод для предоставления пароля к sudo
. askpass
программа разработана для просьбы пароли, когда нормальные механизмы не доступны. Установка sudo
не потребовать, чтобы пароль работал rsync
поскольку Ваш идентификатор пользователя является одной опцией.
Я обычно настраиваю основанный на ключе вход в систему с соответствующими ограничениями для случаев как это. Если Вы настраиваете ограниченный ключ что единственное выполнение rsync
как корень затем такого рода вещь становится легче сделать. Другая альтернатива должна использовать rsycnd
процесс для обрабатывания удаленных запросов. Конфигурация обеспечивает множество ограничений, которые могут быть введены.
Править: Я включал сценарий для установки ключей для основанных на ключе loings в разделе Creating Userids on Clients моего сообщения при Установке BackupPC на Linux. См. также documenation для ssh_config, который детализирует некоторые вещи, которые можно сделать с resticting ключевым использованием как показано в сценарии.