Я бы порекомендовал вам просто использовать учетную запись root. Если вы установите его так:
- Настройте
sshd_configна целевой машине PermitRootLogin without-password.
- Используйте
ssh-keygenна машине, которая извлекает резервную копию, для создания закрытого ключа SSH (только если у вас еще нет ключа SSH). Не устанавливайте парольную фразу. Google учебник, если вам нужны детали для этого, должно быть много.
- Добавьте содержимое
/root/.ssh/id_rsa.pubрезервной машины к /root/.ssh/authorized_keysвашей целевой машине.
- Теперь ваш резервный компьютер имеет root-доступ к целевому компьютеру без использования аутентификации по паролю.
тогда полученная установка должна быть довольно безопасной.
sudo, особенно в сочетании с NOPASSWDрекомендациями в комментариях, не имеет никаких преимуществ по сравнению с использованием только учетной записи root. Например, это предложение:
добавьте следующее в ваш /etc/sudoersфайл:rsyncuser ALL= NOPASSWD:/usr/bin/rsync
по сути, дает rsyncuserправа root в любом случае. Ты спрашиваешь:
@MartinvonWittich Легко получить полноценную корневую оболочку, потому что rsyncвыполняется с sudo? Пройдите, пожалуйста.
Ну просто. С рекомендуемой конфигурацией, rsyncuserтеперь может работать rsyncот имени пользователя root даже без запроса пароля. rsyncэто очень мощный инструмент для работы с файлами, поэтому теперь у rsyncuserнего есть очень мощный инструмент для работы с файлами с правами root. Поиск способа использовать это занял у меня всего несколько минут (протестировано на Ubuntu 13.04, требуется dash, bashне работает):
martin@martin ~ % sudo rsync --perms --chmod u+s /bin/dash /bin/rootdash
martin@martin ~ % rootdash
# whoami
root
# touch /etc/evil
# tail -n1 /etc/shadow
dnsmasq:*:15942:0:99999:7:::
Как видите, я создал себе корневую оболочку; whoamiопределяет мою учетную запись как root, я могу создавать файлы /etc, и я могу читать из /etc/shadow. Мой эксплойт состоял в том, чтобы установить бит setuid в dashдвоичном файле; это заставляет Linux всегда запускать этот двоичный файл с разрешениями владельца, в данном случае root.
Наличие настоящего корня не [рекомендуется] по уважительным причинам. - Redanimalwar 15 часов назад
Нет, неуклюже работать с учетной записью root в ситуациях, когда это абсолютно уместно, не по уважительным причинам. Это просто еще одна форма программирования грузового культа - вы на самом деле не понимаете концепции, лежащей в основе sudo vs root, вы просто слепо применяете убеждение «root is bad, sudo is good», потому что вы где-то читали это.
С одной стороны, бывают ситуации, когда sudoопределенно подходящий инструмент для работы. Например, когда вы в интерактивном режиме работаете над графическим рабочим столом Linux, скажем, Ubuntu, тогда необходимость в использовании sudoвполне подходит в тех редких случаях, когда вам иногда требуется доступ с правами root. Ubuntu преднамеренно имеет отключенную корневую учетную запись и вынуждает вас использовать ее sudoпо умолчанию, чтобы запретить пользователям просто всегда использовать корневую учетную запись для входа в систему. Если пользователь просто хочет использовать, например, веб-браузер, то вход в систему от имени пользователя root будет опасным и, следовательно, отсутствие учетной записи root по умолчанию не позволяет глупым людям делать это.
С другой стороны, существуют ситуации, подобные вашей, когда автоматизированному сценарию требуются права суперпользователя для чего-либо, например, для создания резервной копии. Теперь использование sudoдля обхода корневой учетной записи не только бессмысленно, но и опасно: на первый взгляд rsyncuserвыглядит как обычная непривилегированная учетная запись. Но, как я уже объяснил, злоумышленнику будет очень легко получить полный root-доступ, если он уже получил rsyncuserдоступ. По сути, теперь у вас есть дополнительная учетная запись root, которая совсем не похожа на учетную запись root, что не очень хорошо.
rootучетную запись в первую очередь.sudoособенно в сочетании сNOPASSWDрекомендациями в комментариях, на самом деле не улучшает безопасность вашей машины.