Я рекомендую вам в першу чергу просто скористатися кореневим обліковим записом. Якщо ви налаштуєте його так:
- Налаштуйте свій
sshd_config
на цільовій машині на PermitRootLogin without-password
.
- Використовуйте
ssh-keygen
на пристрої, який витягує резервну копію, щоб створити приватний ключ SSH (лише якщо у вас ще немає ключа SSH). Не встановлюйте фразу. Підручник Google, якщо для цього вам потрібні деталі, їх повинно бути багато.
- Додайте вміст
/root/.ssh/id_rsa.pub
резервної машини до /root/.ssh/authorized_keys
цільової машини.
- Тепер ваша резервна машина має кореневий доступ до цільової машини, без необхідності використовувати автентифікацію пароля.
то отримана установка повинна бути досить безпечною.
sudo
, особливо в поєднанні з NOPASSWD
рекомендованим у коментарях, не має жодних переваг для безпеки щодо простого використання кореневого акаунта. Наприклад, ця пропозиція:
додайте у /etc/sudoers
файл наступне :rsyncuser ALL= NOPASSWD:/usr/bin/rsync
по суті, дає rsyncuser
кореневі дозволи в будь-якому випадку. Ви запитаєте:
@MartinvonWittich Легко отримати повну кореневу оболонку, оскільки rsync
виконується за допомогою sudo
? Пройдіться [м] е [через], що ласка.
Ну, просто. З рекомендованою конфігурацією rsyncuser
тепер може працювати rsync
як root, навіть не запитуючи пароль. rsync
є дуже потужним інструментом для управління файлами, тому тепер rsyncuser
має дуже потужний інструмент для управління файлами з кореневими правами. Пошук способу для цього знадобився мені всього за кілька хвилин (тестований на 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
ідентифікує мій обліковий запис як корінь, я можу створювати файли /etc
, з яких я можу читати /etc/shadow
. Мій експлойт був встановити Setuid біт на dash
двійковий; це змушує Linux завжди виконувати цей двійковий файл з дозволами власника, в цьому випадку root.
Наявність справжнього кореня не є [рекомендується] з вагомих причин. - redanimalwar 15 годин тому
Ні, незграбно працює навколо кореневого облікового запису в ситуаціях, коли цілком доречно використовувати його не з поважних причин. Це просто ще одна форма програмування культового культу - ти насправді не розумієш поняття, що стоїть за кордоном sudo vs root, ти просто сліпо застосовуєш переконання «корінь поганий, судо хороший», бо ти десь це читав.
З одного боку, бувають ситуації, коли sudo
, безумовно, є правильним інструментом для роботи. Наприклад, коли ви працюєте в інтерактивному режимі на графічному робочому столі Linux, скажімо, Ubuntu, тоді використання sudo
цих функцій прекрасно в тих рідкісних випадках, коли вам іноді потрібен кореневий доступ. У Ubuntu навмисно є вимкнений кореневий обліковий запис і змушує вас використовувати sudo
за замовчуванням, щоб користувачі не завжди використовували кореневий обліковий запис для входу. Коли користувач просто хоче використовувати, наприклад, веб-браузер, то вхід у систему як root було б небезпечною справою , а тому відсутність кореневого облікового запису за замовчуванням заважає дурним людям робити це.
З іншого боку, є такі ситуації, як ваша, коли автоматизований сценарій вимагає кореневих дозволів на щось, наприклад, для створення резервної копії. Зараз використовувати sudo
для роботи навколо кореневого облікового запису не тільки безглуздо, але й небезпечно: на перший погляд rsyncuser
схожий на звичайний непривілейований рахунок. Але, як я вже пояснював, зловмиснику було б дуже легко отримати повний кореневий доступ, якби він вже отримав rsyncuser
доступ. Тож по суті, тепер у вас є додатковий кореневий обліковий запис, який зовсім не схожий на кореневий рахунок, що не дуже добре.
root
рахунок в першу чергу.sudo
, особливо в поєднанні зNOPASSWD
рекомендованим у коментарях, не дуже покращує безпеку вашої машини.