Скільки разів встановлював Debian, стільки ж разів стикався з одним і тим самим – налаштуванням прав користувача для використання sudo. Щоразу забував, як це робиться, і доводилося лізти в інтернет та шукати рішення. Тепер вирішив написати все сам, щоб не шукати наступного разу, і, можливо, це стане в пригоді вам.
У чому суть
Користувачам Ubuntu добре знайома утиліта sudo, без якої неможливо ні встановити, ні видалити програму, ні внести будь-які значні зміни в роботу системи. У Debian же, замість sudo, користувачі здебільшого працюють із обліковим записом root. Варто лише поглянути на інструкції для Debian в інтернеті – вони завжди починаються із команди apt, що передбачає виконання її від імені root. Але, як на мене, це не зовсім правильно, а багаторічний досвід роботи з Ubuntu теж залишив свій слід.
До того ж, я досі пам’ятаю свою першу установку Debian, коли після встановлення KDE від імені root у звичайному сеансі користувача у мене перестала працювати звукова підсистема.
Виправляємо “User is not in the sudoers file” (спосіб №1)
Для початку, якщо у вас не встановлено sudo, таке може статися, наприклад, якщо ви встановили лише базову систему без графічного середовища – встановіть його:
Перемкніться на root:
su -
Встановіть sudo:
apt install sudo
У інших випадках sudo зазвичай встановлюється разом із системою. Але на цьому справа не закінчується. Навіть якщо sudo уже встановлено, при спробі виконати якусь дію, наприклад, перевірити оновлення, термінал видасть повідомлення: “user is not in the sudoers file”. Щоб це виправити, існує декілька варіантів.
До недавнього часу я погоджувався з терміналом і додавав користувача, тобто себе, у файл sudoers. Для зміни файлу sudoers існує спеціальна утиліта visudo, яку також з під root можна запустити командою:
visudo
У відкритому файлі потрібно знайти рядок:
root ALL=(ALL) ALL
І під ним додати такий самий рядок, тільки замість root вказати своє ім’я користувача (username замініть на свій логін):
username ALL=(ALL) ALL
Після цього зберігаємо файл, виходимо з visudo, перелогінюємося і можемо користуватися sudo. Помилка “User is not in the sudoers file” більше вас не турбуватиме. Але, на мою думку, завжди потрібно прагнути універсальності, тому я вчинив інакше.
Виправляємо “User is not in the sudoers file” (спосіб №2)
Окрім прямого додавання користувача у файл sudoers, можна додати до нього групи. У цьому випадку це група sudo. Процес додавання групи виглядає точно так само, як і додавання користувача, тільки замість імені користувача потрібно вписати групу sudo. Це виглядає так (щоб позначити, що ви додаєте групу, а не користувача, перед sudo потрібно поставити без пробілів знак відсотка):
%sudo ALL=(ALL) ALL
Але, насправді, додавати цей рядок не завжди потрібно, адже він часто вже є у файлі sudoers. Якщо це так, то його чіпати не потрібно, а достатньо лише додати себе до групи sudo командою:
adduser username sudo
Де username – це логін користувача. Потім потрібно перелогінитися, і все готово.
Чому цей спосіб кращий за перший?
По-перше, це простіше. Якщо група sudo уже прописана у файлі sudoers, достатньо виконати одну команду в терміналі. По-друге, цей спосіб є більш універсальним. Якщо, наприклад, ви додасте до системи нового користувача, якому потрібні права sudo, вам достатньо буде просто додати його до групи, не змінюючи при цьому sudoers.
Ось і все. Сподіваюся, це комусь стане в пригоді!