Как использовать rsync, когда нужны привилегии root на удаленном хосте?
Так как пароли root и логины не разрешены в Ubuntu, как использовать ssh и rsync
переместить папки и файлы с локального хоста на удаленный хост, если на удаленном компьютере требуются права суперпользователя?
2 ответа
Включение root-входа в Ubuntu невозможно, просто не рекомендуется. (см. этот ответ для практических рекомендаций)
В качестве альтернативы пользователю rsync может быть предоставлена привилегия root (см. Здесь)
Один из способов сделать это состоит в том, чтобы на удаленном конце был пользователь, у которого есть пароль без доступа sudo к команде rsync. Если бы пользователь назывался rsyncguy, вы бы отредактировали /etc/sudoers
файл, содержащий следующую строку, используя sudo visudo
команда:
rsyncguy ALL=NOPASSWD: /usr/bin/rsync
При таком подходе существует угроза безопасности, при которой этот пользователь теперь может выполнять любую команду rsync от имени пользователя root, включая команды rsync pull с других серверов. Чтобы смягчить это, вы можете использовать точную команду rsync, которая вам понадобится, если она, вероятно, останется прежней.
После того, как доступ sudo был разрешен, ваши команды rsync должны всегда содержать `--rsync-path="sudo rsync", чтобы гарантировать, что sudo используется на удаленном конце.
Также было бы полезно установить для этого пользователя аутентификацию на основе пароля SSH без пароля. После того, как ключи SSH были настроены, вы можете отключить обычную регистрацию пароля для rsyncguy, используя следующую команду на удаленном сервере:
sudo passwd -l rsyncguy
Что добавит еще один уровень безопасности.