Основна відмінність цих команд полягає в тому, як вони обмежують доступ до своїх функцій.
su
(що означає "заміна користувача" або "користувач комутації") - робить саме це, він запускає інший екземпляр оболонки з привілеями цільового користувача. Щоб переконатися, що у вас є права на це, він запитає пароль цільового користувача . Отже, щоб стати root, вам потрібно знати пароль root. Якщо на вашій машині є кілька користувачів, яким потрібно запускати команди як root, всі вони повинні знати пароль root - зауважте, що це буде той самий пароль. Якщо вам потрібно відкликати права адміністратора у одного з користувачів, вам потрібно змінити кореневий пароль і повідомити його лише тим людям, яким потрібно зберегти доступ - безладно.
sudo
(хм ... що таке мнемонічне? Super-User-DO?) зовсім інше. Він використовує конфігураційний файл (/ etc / sudoers), в якому перераховується, які користувачі мають права на певні дії (запускати команди як root тощо). Після виклику він запитує пароль користувача, який його запустив - щоб переконатися, що людина в термінал - це той самий "джоу", який вказаний у списку /etc/sudoers
. Щоб скасувати права адміністратора у людини, вам просто потрібно відредагувати файл конфігурації (або видалити користувача з групи, яка вказана в цьому конфігурації). Це призводить до набагато більш чіткого управління привілеями.
Як результат цього, у багатьох системах на базі Debian root
користувач не встановлює пароль - тобто неможливо ввійти як root безпосередньо.
Також /etc/sudoers
дозволяє вказати деякі додаткові параметри - наприклад, користувач X може запускати програму лише Y
sudo su
Комбінація, що часто використовується, працює наступним чином: спочатку sudo
запитає ваш пароль, і, якщо вам це дозволено, викликає наступну команду ( su
) як суперкористувача. Оскільки su
він викликається root
, він не вимагає введення пароля цільового користувача. Отже, sudo su
дозволяє відкрити оболонку як інший користувач (включаючи root), якщо вам дозволяється суперкористувач за допомогою /etc/sudoers
файлу.
su user
для входу з ненадійних оболонок, алеsu - user
. Дивіться unix.stackexchange.com/q/7013/8250