User is not in the sudoers file або sudo в Debian

Скільки разів встановлював 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.

Ось і все. Сподіваюся, це комусь стане в пригоді!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *