Пьотр дав дуже вдале пояснення того, як sudoпрацює. Однак він насправді не мотивував, чому це працює саме так, тому я спробую додати це тут.
Перш ніж sudoкоманда була створена, ми мали suкоманду. Ця команда дозволяє одному користувачеві виконувати команди як іншому користувачеві, як правило, root(як sudoце стосується цільового користувача за замовчуванням). Це було абсолютно недискримінаційно, ви можете виконати будь-яку команду. Оскільки цим користувачем міг користуватися будь-який користувач, він фактично був еквівалентним входу в систему як такому користувачеві, він вимагав від вас знати пароль цільового користувача.
У якийсь момент було додано трохи більше контролю доступу: щоб користуватися su, ти повинен був бути членом wheelгрупи. Але оскільки ви все-таки можете виконати будь-яку команду, все одно має сенс вимагати від вас знати їх пароль.
Потрібно, щоб користувачі знали один одного або пароля суперпользователя, але не дуже безпечні. Часто просто потрібно надати певним користувачам обмежений доступ до якогось іншого облікового запису (це частина концепції безпеки, що називається принципом найменшої привілеї ). Це також ускладнює підзвітність: якщо кілька людей знають пароль облікового запису, і цей обліковий запис є помилкою чи зловживанням, ви не можете сказати, хто з них насправді це зробив.
Так sudoбуло створено. Замість того, щоб дозволити користувачам виконувати будь-яку команду, у неї є розроблений файл конфігурації, який коротко торкнувся у відповіді Пьотра, який точно визначає, хто може ним користуватися, до яких користувачів вони можуть перейти та які команди їм дозволено виконувати. За допомогою цього тонкодисперсного контролю над тим, хто може робити що кому, нам більше не потрібно вказувати користувачам цільового пароля облікового запису; якщо б ми це зробили, вони могли легко обійти всі елементи керування у файлі конфігурації, увійшовши як цей користувач. Натомість ми зазвичай вимагаємо від них довести, що вони є тим, ким вони ввійшли в систему, ввівши власний пароль - це покликане запобігти комусь скористатися обліковим записом, якщо термінал залишити без нагляду.
Ця вимога відхиляється від суперпользователя - цей обліковий запис може робити майже все, що потрібно в системі, не використовуючи її sudo, тому він вважався зайвим. Також у файлі конфігурації можна вказати, що користувачам взагалі не потрібно вводити пароль - деякі організації використовують це, коли вважають, що фізична безпека середовища їх робочої станції є достатньою для запобігання зловживань.