Кнопка VPN працює в адміністратора і не працює в усіх інших, тож хтось додає рядок у sudoers. Цей рядок зазвичай живе довше за проблему, яку мав розв'язати, і часто дає більше, ніж потрібно кнопці. Перш ніж редагувати політику, перевірте, чи вже може виконати цю роботу підтримуваний власник з'єднання. Три умови нижче вирішують, чи sudo взагалі задіяний.

Умова 1: підтримуваний власник може зробити це без sudo

На більшості робочих столів Linux менеджер мережі вже володіє VPN-з'єднаннями, і його авторизація йде через polkit, а не через sudo. Користувач, якому дозволено підняти з'єднання, може зробити це з командного рядка без будь-якого правила root. Перевірте, що дозволяє менеджер, перш ніж припускати, що кнопці потрібні привілеї. Якщо відповідь так, то зміна в sudoers розв'язує проблему, якої немає.

nmcli connection show
nmcli connection up "Work VPN"

Якщо менеджер відмовляє, прочитайте чому: немає правила polkit, з'єднання належить іншому користувачеві або профіль збережено там, де користувач не може його прочитати. Кожен із цих випадків має підтримуване рішення, вужче за правило sudo. Підвищення привілеїв — останній засіб, а не перший.

Умова 2: правило називає один виконуваний файл і його аргументи

Якщо sudo справді потрібен, правило має називати точну команду і, де можливо, аргументи, які їй дозволено використовувати. Правило, що дозволяє користувачеві запускати скрипт-обгортку, безпечне рівно настільки, наскільки безпечні права цього скрипта, бо користувач може змінити те, що виконає root. Правило з шаблоном після команди — та сама проблема в коротшій формі.

sudo -l -U alice
ls -l /usr/local/sbin/vpn-up

Перевірте кожен шлях у ланцюжку команди: бінарний файл, скрипт, який він викликає, файл конфігурації, який він читає, і будь-який каталог між ними. Якщо будь-який із них доступний користувачеві для запису, обмежене правило фактично дає необмежений root. Аргументи теж важливі, бо команду, що приймає шлях до конфігурації, можна спрямувати на файл, який контролює користувач. Пишіть правило для операції, а не для кнопки.

Зупиніться, якщо команді для роботи потрібен файл, який контролює користувач. Тоді проєкт хибний, і жоден синтаксис sudoers не зробить його безпечним.

Умова 3: розбирається вся політика, а не лише ваш рядок

Перевіряйте редактором, який блокує файл і перевіряє синтаксис, і перевіряйте зібрану політику, а не фрагмент. Файл, який розбирається сам по собі, все одно може порушити порядок включення або продублювати правило так, що зміниться поведінка.посібник visudo описує і блокуючий редактор, і використовуваний тут режим лише перевірки.

sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher

Перевірка повідомляє файл і рядок у разі збою, і саме цей звіт є корисною частиною. Виправляйте задуману зміну через редактор, а не зберігайте насильно відому помилку, бо зламана політика може одразу відрізати всіх адміністраторів. Файлам у каталозі включення також потрібні власник і режим, яких вимагає посібник, інакше їх проігнорують або відхилять. Синтаксис — лише перші ворота: після їх проходження перечитайте правило і спитайте, що воно насправді дозволяє.

Зупиніться, якщо єдиний спосіб змусити зміну працювати — вимкнути перевірку синтаксису. Це не політика, це простій, що чекає перезавантаження.

Відновлення: збережіть сеанс, який ще працює

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

sudo -n true
id

Альтернативи на кшталт pkexec залежать від власного встановлення й політики, тож не є гарантованим другим запитом root. Тримайте локальну авторизацію окремо й від надання секрету VPN: правило sudo не розблокує відсутній агент секретів і не задовольняє MFA шлюзу. Після виправлення перевірте звичайний обліковий запис, що виконує лише задуману операцію, потім користуйтеся звичайними засобами менеджера.

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

Схожі статті