Должен ли я включить учетную запись root для rsync?


10

Как я могу включить учетную запись root? Я знаю, что это обычно не рекомендуется, но я бы хотел настроить неинтерактивный скрипт для резервного копирования моего сервера с помощью rsync. Я мог бы использовать, --rsync-path="sudo rsync"но тогда мне нужно было бы хранить свой пароль sudo в открытом виде, что кажется намного хуже, чем включение учетной записи root.

Ответы:


10
  1. Создание новых отдельных mybackupучетных записей пользователей на клиенте и сервере.
  2. Заблокируйте пароли sudo passwd -l mybackupдля этих учетных записей, чтобы предотвратить прямой вход
  3. Разрешить через sudoэти новые учетные записи , чтобы получить очень специфичное /usr/bin/rsync/ --some-long-command /from/here /to/thereкоманду как корень с NOPASSWD:в /etc/sudoersиспользованииsudo visudo
  4. Создайте новые пароли SSH без пароля для локального удаленного хоста, используя sudo -u mybackup ssh-keygen
  5. Добавьте к sudo -u crontab -eодному или другому концу для запуска удаленного rsyncиспользования sshи ключи в качестве транспорта

Таким образом, единственная команда, которая может быть запущена от имени пользователя root, - это та, которую вы явно разрешили, и единственный удаленный пользователь, который может активировать ее, - это владелец другой половины установленной пары ключей ssh, которая также заблокирована паролем. может быть только кто-то с правами доступа sudo или crontab, который вы настроили.


Это именно то, что я не думал о разрешении очень специфической команды в sudoers (я разрешил 'rsync'). Отличное предложение!
— Оливье Лалонд

2
+1 за замечание "очень специфическая ... команда". В противном случае предоставление пользователю права на запуск sudo rsyncи разрешение пользователю выбирать параметры, передаваемые rsync, означает, что пользователь может использовать rsync для чтения / записи /etc/sudoersфайла, например, и предоставить себе полный доступ sudo.
— Сюзанна Дюперон

7
  1. Вы можете отредактировать, /etc/sudoersчтобы любой пользователь, выполняющий команду (или все пользователи), запускал ее rootбез пароля (возможно, это немного опасно при использовании rsync).

  2. Разве вы не можете просто запустить всю команду / скрипт / что угодно как root? Я предполагаю, что это будет работать через cron, поэтому просто добавьте rootработу через:

    sudo crontab -e
    

    Примечание: вы можете сделать довольно сложные вещи, заключив команду cron в bash -e "..."фигурную скобку или просто сделать это в отдельном скрипте. Предполагая, что это не setuid'd, если rootон проходит (через cron), он будет работать rootтак, чтобы решить вашу проблему с разрешениями.


Проблема заключается в том, что если я установлю скрипт на своем локальном компьютере и запусту его как root, у него будут проблемы с разрешениями на сервере. Если я настрою сценарий на моем сервере и запусту его с правами root, то на локальном компьютере будут проблемы с разрешениями. Другими словами, мне нужно иметь привилегии root как на локальном, так и на серверном компьютере.
— Оливье Лалонд

Вы можете написать скрипт на каждом конце и позволить его запускать sudoобычным пользователям. Это было бы безопаснее, чем просто позволить rsync.
— Оли

Судо это отличная идея. Вы можете точно указать, какой пользователь может выполнить какую команду. Сделай это.
— Фрэнк

6

Вы можете (но не должны) дать пользователю root пароль с помощью

sudo passwd root

Редактировать: бит Setuid не работает для скриптов. В противном случае вы можете использовать бит setuid в программе резервного копирования.

sudo chown root backup
sudo chmod u+s backup

Может быть, вы даже хотите запустить резервное копирование как задание cron?


1
Вам не нужно указывать «корень» , поскольку пробегов SUDO как Рута ENV его пользователь является корнем. ( sudo whoamiвозвращает, root), так что просто sudo passwdнеобходимо.
— Марко Чеппи

setuid не работает для скриптов
— enzotib

Правильно, сценарии выполняются оболочкой, названной в строке she-bang. Извините за дезинформацию.
— Фрэнк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.