Чи потрібно ввімкнути кореневий рахунок для rsync?


10

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

Відповіді:


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, оскільки через нього пароль також заблокований може бути лише хтось із судо-доступом до себе, або створений вами crontab.


Саме це я і не думав дозволити дуже специфічну команду в судерах (я дозволив '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

Ви можете (але не повинні) дати кореневому користувачеві пароль за допомогою

sudo passwd root

Редагувати: Біт Setuid не працює для сценаріїв. В іншому випадку ви можете використовувати встановлений біт програми резервного копіювання.

sudo chown root backup
sudo chmod u+s backup

Можливо, ви навіть хочете запустити резервну копію як роботу з кроном?


1
Вам не потрібно вказувати «корінь» , оскільки пробігів SUDO як Рута ENV його користувач є коренем. ( sudo whoamiповертається, корінь) так просто sudo passwdпотрібно.
Марко Цеппі

setuid не працює для сценаріїв
enzotib

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