Я бы порекомендовал вам просто использовать учетную запись 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
рекомендациями в комментариях, на самом деле не улучшает безопасность вашей машины.