Все буде Україна!

Команди su та sudo у Linux. У чому різниця?

  Юрій  | 

  Оновл. 26 Чер 2022  | 

 92

З командами su та sudo стикається кожен користувач Linux. При цьому, оскільки вони мають схожий синтаксис і виконують практично одну і ту ж задачу, багато новачків часто не розуміють, у яких випадках слід використовувати ту чи іншу команду. На цьому уроці ми дізнаємося, чим відрізняється su від sudo.

su проти sudo

root або суперкористувач — це спеціальний обліковий запис та група користувачів у Unix-подібних системах з ідентифікатором, власник якого має право на виконання всіх без винятку операцій.

su та sudo — це два різні способи отримати привілеї суперкористувача (root), що має максимальні права і можливість робити з системою все, що завгодно. У Windows такий обліковий запис має назву “Адміністратор”. Звичайні (непривілейовані) користувачі в Linux дуже обмежені в подібних правах: вони не мають можливості робити записи у системні каталоги, керувати системними процесами тощо. Тому для виконання чогось, що вимагає наявності більших привілеїв, застосовуються команди su і sudo.

Основна відмінність між ними полягає в тому, що su вимагає пароль цільового облікового запису (наприклад, користувача root) і перемикає вас на нього, в той час як sudo вимагає пароль поточного користувача і запускає від його імені лише одну (або кілька) команд, на виконання яких потрібні права користувача root. Тому набагато безпечніше використовувати sudo, оскільки застосування цієї команди не включає обмін конфіденційною інформацією.

Крім того, рекомендується віддавати перевагу sudo при виконанні завдань, що вимагають root-привілеїв. У цьому випадку поточному користувачеві надаються привілеї виключно для вказаної команди. З іншого боку, su повністю переключається на користувача root, піддаючи всю систему ризику ненавмисно змінити або видалити якийсь життєво важливий компонент.

Команда su

Команда su (від англ. substitute user” = “замінити користувача”) застосовується переважно для перемикання з одного користувача на іншого. При цьому вона може запустити як оболонку входу в умовах поточного каталогу і оточення (su), так і повністю змінити налаштування, замінивши їх оточенням цільового користувача (su -).

Синтаксис команди:

su [ім'я_користувача]

або

su - [ім'я_користувача]

Якщо використовувати дану команду без [ім'я_користувача], то вона перемкне вас на обліковий запис суперкористувача (root).

Примітка: У більшості випадків команда su (з дефісом і без) використовується тільки для перемикання на суперкористувача (root), хоча вона може переключити вас і на іншого ([ім'я_користувача]) користувача.


Як працює команда su?

Щоб викликати оболонку іншого користувача з оточенням та робочим каталогом поточного користувача, використовуйте команду su (без дефісу). Наприклад, якщо ви хочете працювати від імені користувача ravesli, виконайте:

su ravesli

Потім введіть пароль для облікового запису ravesli та натисніть Enter.

Оболонка повинна змінитися, і ви отримаєте доступ до вказаного облікового запису. Проте користувацьке оточення залишиться колишнім:

Як працює команда su –?

Щоб перейти до іншого користувача і при цьому змінити користувацьке оточення, використовуйте команду su -:

su - ravesli

Примітка: Ще один спосіб, що дозволяє отримати доступ до облікового запису іншого користувача разом з повним обсягом змінних його користувацького оточення, це задіяти команду su -l (або --login) [ім'я_користувача].

Команда sudo

Команда sudo (від англ. Substitute User and do = “підмінити користувача та виконати”) використовується як префікс до команд Linux, дозволяючи користувачеві виконувати команди, що вимагають привілеїв root. На відміну від su, команда sudo вимагає введення пароля поточного користувача (котрий виконує цю команду).

Наприклад, всі виконувані та адміністративні завдання вимагають наявності максимальних дозволів (root). У таких випадках рекомендується використовувати sudo:

sudo [команда]

Перш ніж система виконає команду, вона запросить пароль поточного користувача. Майте на увазі, що sudo може застосовуватися лише користувачами, що належать до групи sudoers.

Додання користувача в групу sudoers

Щоб користувач міг виконати команду, для якої потрібно sudo, необхідно бути частиною групи sudoers. Щоб додати користувача до групи sudoers, виконайте наступну команду (від імені root або облікового запису, який може застосовувати sudo):

usermod -aG sudo [ім'я_користувача]

Наприклад, щоб додати в групу sudoers обліковий запис ravesli, ви повинні ввести:

sudo usermod -aG sudo ravesli

Щоб переглянути список облікових записів, котрі належать групі sudoers, виконайте:

sudo getent group sudo

В результаті ви побачите обліковий запис, доданий на попередньому кроці:

Ще один спосіб додавання користувача до групи sudoers — це скористатися командою visudo, яка дозволяє відредагувати файл /etc/sudoers. Для цього виконайте вхід до облікового запису root (команда su -), після чого викличте visudo і додайте до файлу наступний рядок, замінивши user на потрібне вам ім’я користувача, якому ви хочете надати доступ до sudo:

user    ALL=(ALL:ALL) ALL

Натисніть Ctrl+X, а потім Y, щоб зберегти зміни. Ви також можете додати користувача в групу, вказану в файлі /etc/sudoers. Користувачі груп, вказаних в даному файлі, автоматично отримають привілеї sudo.

su та sudo в різних дистрибутивах Linux

su — це традиційний (старіший) спосіб перемикання на обліковий запис root (і отримання підвищених прав) в Linux.

Спільнота розробників Linux не рекомендує на постійній основі працювати під обліковим записом користувача root, оскільки це може призвести до небажаних змін у системі. Натомість пропонується застосовувати команду sudo. З цієї причини у всіх похідних від Ubuntu дистрибутивах Linux обліковий запис root за замовчуванням вимкнено. Замість цього пропонується використовувати sudo.

При встановленні, наприклад, дистрибутива Linux Mint, ви автоматично створюєте користувача, позначеного як член групи sudoers. При цьому налаштування облікового запису root не передбачається. Щоб увімкнути користувача root, вам необхідно активувати його вручну.

З іншого боку, інші дистрибутиви Linux, такі як Fedora, при встановленні створюють обидва облікові записи: звичайного користувача та суперкористувача (root).

Увімкнення облікового запису root

Якщо ви використовуєте Ubuntu-подібний дистрибутив (наприклад, вищезгаданий Linux Mint) і спробуєте перейти на користувача root, то отримаєте повідомлення про збій аутентифікації:

Щоб активувати користувача root, виконайте команду passwd:

sudo passwd root

Потім встановіть пароль та натисніть Enter. В результаті система повинна повідомити вам, що пароль користувача root був успішно оновлений:

Переконуємося, що користувач root активований, перемкнувшись на нього за допомогою команди su -:

Висновки

Не забувайте використовувати sudo щоразу, коли це можливо. Завдяки цьому ви зменшите ризик привести вашу систему в неробочий стан, а також підвищите її захист від різних загроз.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (1 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *