Sudo
sudo (англ. substitute user do, дослівно "підмінити користувача та виконати") — це програма для UNIX-подібних операційних систем що дозволяє делегувати повноваження тобто виконувати певні програми з правами доступу інших користувачів. Команда sudo надає можливість користувачам виконувати команди від імені root чи інших користувачів. Правила, що використовуються sudo для ухвалення рішення про надання доступу, знаходяться в конфігураційному файлі /etc/sudoers. Налаштування конфігураційного файлу може описувати які користувачі, які команди можуть виконувати з правами яких цільових користувачів. Можуть бути прописані додаткові вимоги як наприклад вимога наявності терміналу, вимога введення паролю користувача або групи, вимога вводити пароль щоразу при виконанні команди чи навпаки запам'ятовування факт правильного вводу паролю на деякий час. Для редагування файлу sudoers використовується програма visudo - обгортка над текстовим редактором, яка перевіряє синтаксис конфігураційного файлу і тим самим дозволяє уникнути помилок у правилах. Основна відмінність від схожої програми su, це те що налаштування відбуваються для поточного користувача, і для виконання потрібно підтвердити повноваження поточного користувача. Наприклад для su потрібно знати пароль root, а для sudo пароль поточного користувача. Це дозволяє і аутентифікувати користувачів, і не розкривати секретний пароль цільового користувача, наприклад root. За замовчуванням для користування sudo користувачі повинні бути в групі wheel або sudo. Для безпеки може бути налаштований механізм аудиту, та реєстрації кожної команди. У випадку якщо були проблеми аутентифікації (користувач не ввів правильно свій пароль) або авторизації (користувач намагався викликати команду на яку не має повноважень), то про це буде сповіщено системному адміністратору. Приклади# Користувачі групи sudo можуть виконувати всі команди з повноваженнями root, після введення свого паролю. %sudo ALL=(ALL:ALL) ALL # Користувач user1 має право робити stop, start, restart сервісів без введення пароля. user1 ALL=(ALL) NOPASSWD: /usr/bin/systemctl start,stop,restart # Користувач user2 має право робити stop, start, restart сервісів після введення пароля. user2 ALL=(ALL) ALL: /usr/bin/systemctl start,stop,restart # Користувач user3 має право виконувати команду /path/to/somecommand від імені privelegeduser, без введення пароля. user3 ALL=(privelegeduser) NOPASSWD: /path/to/somecommand Цікаві фактиЗначення назви sudo дискусійне. На офіційному сайті сказано що воно походить від su do[3]. Але що означає su в контексті sudo, є предметом обговорень. Тому що комада su історично значила 'superuser', проте зараз sudo забезпечує делегування повноважень інших користувачів ніж суперкористувач, то спільнота вважає що sudo повинно мати ширше значення. su зараз розкривається як "substitute user" - замінити користувача. Таким чином основні трактування це superuser do, та substitute user do, але ще є варіанти англ. "switch user" або "subshell".[4] Цікавим фактом є походження логотипу від 2019 року у вигляді сендвічу, яке прямо відсилає до коміксу xkcd [5]. Повідомлення що виводилось у випадку неправильного вводу пароля, або відсутності повноважень в файлі sudoers - "This incident will be reported." (Про цей інцидент буде повідомлено) виглядало лякаюче, особливо для користувачів своїх персональних комп'ютерів вдома. І здогадки хто саме отримує були предметом жартів.[6]. Було виправлено в 2022 році[7], що було помічено в спільноті UNIX-користувачів. Див. такожПосилання
Примітки
|