5 причин використовувати sudo

5 причин використовувати sudo

Багато команд командного рядка можуть бути виконані лише юзером root. Однак, якщо ви працюєте через SSH або консоль VPS на своєму віртуальному сервері, зазвичай спочатку ви входите як звичайний користувач. Щоб мати можливість виконувати команди як користувач root, використовується команда sudo, що означає «super user do». Чому sudo краще, ніж root? Гайда розбиратися. 

Передісторія 

В Unix-подібних системах перший користувач, який існує під час нової інсталяції, називається root. Саме з його облікового запису ви й входите в систему та створюєте «звичайних» юзерів. Запуск вашої системи як звичайного користувача є самостійним обмеженням, яке захищає від безглуздих помилок: видалення файлів конфігурації, який визначає ваші мережеві інтерфейси або випадкового перезаписування списку користувачів і груп. Ви не можете робити подібні дії, оскільки як звичайний юзер не маєте дозволу на доступ до цих важливих файлів. Звичайно, як справжній власник системи ви завжди можете скористатися командою su, щоб стати суперкористувачем (root) і робити все, що забажаєте. 

Команда su працювала досить добре протягом кількох десятиліть, але потім з’явилася sudo. Вони дуже схожі між собою:

$ su root
<enter passphrase>
# dnf install -y cowsay

І sudo робить те саме:

$ sudo dnf install -y cowsay
<enter passphrase>

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

Чому слід використовувати sudo в Linux?

  • Юзери використовують звичайне поєднання брандмауерів, fail2ban і ключів SSH, щоб запобігти небажаному входу на сервери, які вони запускають. Перш ніж зрозуміти значення sudo, імовірно, ви з жахом переглядали логи про всі невдалі атаки на ваш сервер. Автоматичні спроби входу в систему з правами root є найпоширенішими, і на це є вагомі причини.

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

    Видалення облікового запису root надає хороший рівень захисту. Без root сервер не має підтверджених користувачів для входу. Хакер повинен вгадати можливі імена для входу. Крім того, зловмисник повинен вгадати пароль. Ці два припущення мають бути правильними одночасно, що істотно заважає злому.
  • Інша причина, чому root є популярним ім’ям у логах невдалого доступу, полягає в тому, що це найвпливовіший користувач з можливих. Якщо ви збираєтеся налаштувати сценарій для зламу чужого сервера, навіщо витрачати час, намагаючись увійти як звичайний користувач з обмеженим доступом до машини? Є сенс вибрати лише найпотужнішого доступного юзера.

    Наявність користувача root, по суті, робить безглуздими спроби зламу інших юзерів.
  • Команда su не така й погана, якщо у вас є пароль suroot. Якщо ж його немає, ви не маєте жодних прав адміністратора. Проблема тут полягає в тому, що сисадміну доводиться вибирати між передачею головного ключа своїй системі або приховуванням ключа й контролю над системою. Це не завжди те, що вам треба.

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

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

    Однак якщо вам потрібно перевірити поведінку 10 або 100 користувачів, ви можете помітити, що цей метод не масштабується. Якщо вам потрібні логи для адміністративних завдань, sudo пропонує повну підсистему ведення журналів та сповіщень, щоб ви могли переглядати діяльність із централізованого розташування та навіть отримувати сповіщення, коли відбувається щось важливе.

Післяслово

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

Хочете більш детально розібратися, хто такий root-користувач та які він має можливості? Прагнете покращити свої навички роботи з вебсерверами? Тоді записуйтесь на курс Адміністрування вебсерверів на Linux. 

Знання — сила 💪

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

Дякуємо, що поділились