Ми хочемо, щоб деякі користувачі мали змогу це зробити, наприклад, sudo
і стати root,
Ну, ось цю проблему судо покликаний вирішити, тому ця частина досить проста.
але з обмеженням, що користувач не може змінити пароль root.
Ви можете, як SHW вказував у коментарі, налаштувати sudo лише для того, щоб певні користувачі могли взяти за основу певні дії. Тобто, ви можете дозволити user1 зробити sudo services apache2 restart
, дозволяють user2 робити , sudo reboot
але нічого іншого, дозволяючи при цьому найманий-як-система-адміністратор user3
зробити sudo -i
. Існують способи, як налаштувати подібне sudo, або ви можете шукати (або запитувати) тут. Це є вирішуваною проблемою.
Однак користувач, якому надана можливість sudo -i
або sudo
в оболонку ( sudo bash
наприклад), може робити все, що завгодно. Це тому, що до того часу, як судо запустить оболонку, саме судо не виходить із картини. Він надає контекст безпеки іншого користувача (найчастіше кореневого), але не має жодного слова в тому, що робить виконана програма. Якщо ця програма по черзі запускається passwd root
, судо нічого з цим не може зробити. Зауважте, що це можна зробити і через інші програми; Наприклад, багато більш досконалих редакторів надають засоби для виконання команди через оболонку, оболонка якої буде виконана за допомогою ефективного uid цього редакторського процесу (тобто root).
Тобто, це гарантія того, що ми все-таки можемо увійти на цей сервер і стати root незалежно від того, що робитимуть інші користувачі.
Вибачте; якщо ви дійсно означаєте, "переконайтеся, що ми зможемо увійти та використовувати систему незалежно від того, що робить хтось із кореневим доступом до неї", це (для всіх намірів і цілей) зробити не можна. Швидкий "sudo rm / etc / passwd" або "sudo chmod -x / bin / bash" (або будь-який інший корінь оболонки), і ви все одно сильно шлангували. "Досить сильно шланг", що означає "вам потрібно буде відновити з резервного копіювання і сподіваюся, що вони не зробили нічого гіршого, ніж промацування пальців". Ви можете вжити певних заходів, щоб знизити ризик випадкових випадкових випадків, що призводять до непридатної системи, але ви не можете запобігти зловмисню викликати дуже серйозні проблеми аж до того, що потрібно відновити систему з нуля або принаймні з відомих хороші резервні копії.
Надаючи користувачеві безперебійний кореневий доступ до системи, ви довіряєте цьому користувачеві (включаючи будь-яке програмне забезпечення, яке вони могли б виконати, навіть щось настільки ж приземлене, як ls), щоб не мати шкідливих намірів і не зіпсуватись випадково. Така природа кореневого доступу.
Обмежений доступ до кореня через напр. Sudo є трохи кращим, але ви все ж повинні бути обережними, щоб не відкрити жодних векторів нападу. І з кореневим доступом існує безліч можливих векторів атак для атак ескалації привілеїв.
Якщо ви не можете довіряти їм рівень доступу, який спричиняє root, вам знадобиться або дуже затягнута конфігурація sudo, або просто не надавати користувачеві, про який йдеться, кореневий доступ будь-якими засобами, sudo чи іншим способом.
sudo
дозвіл лише для конкретних привілейованих додатків. Таким чином, користувачеві не буде дозволено змінювати пароль root