Як запускати програми від імені root з панелі запуску в Linux

Останнє оновлення: 15 жовтня 2026
Автор: TecnoDigital
  • Root пропонує повний контроль, але Ubuntu та інші дистрибутиви за замовчуванням вимкнули його, щоб зменшити ризики.
  • Sudo дозволяє підвищувати привілеї в кожному окремому випадку та веде облік того, хто виконує кожну команду.
  • Для графічних програм існують допоміжні програми, такі як kdesu, gksu, gksudo або pkexec, які можна використовувати в лаунчерах .desktop.
  • Безпека залежить від використання мінімальних привілеїв, уникнення ненадійних скриптів та аудиту підвищеного доступу.

Системний інженер, який керує серверами в сучасному центрі обробки даних.

У Windows багато людей звикли натискати Shift+Enter або Shift+клацання лівою кнопкою миші, щоб відкрити програму з підвищеними привілеями з меню «Пуск». У Linux це не завжди просто, оскільки безпека залежить від root, sudo та графічних помічників , а кожне середовище робочого столу має власні інструменти. Незважаючи на це, існують досить прості способи запуску програм від імені root з панелі запуску, ярлика або меню програм, хоча важливо розуміти, що це передбачає.

Ключовим є те, що користувач root має абсолютний контроль над системою , а сучасні дистрибутиви, особливо Ubuntu та його похідні, зазвичай вимикають прямий вхід. Тому вхід як root не є поширеним явищем, а радше час від часу підвищується рівень прав за допомогою `sudo` або графічної програми, яка запитує пароль. Якщо ми хочемо, щоб значок панелі запуску запускав програму з цими правами, нам доведеться змінити команду, яку вона виконує, або створити спеціальну панель запуску.

Що насправді означає запускати щось від імені root?

Робоча станція системного адміністратора з кількома моніторами, на яких відображаються термінали Linux.

У Linux root — це обліковий запис з UID 0 та необмеженими привілеями . Він може читати, змінювати або видаляти будь-який файл, встановлювати програмне забезпечення, змінювати конфігурації ядра та керувати процесами, що належать будь-якому користувачеві. Це робить його неймовірно потужним інструментом, але також і величезним ризиком, якщо його використовувати необережно. Проста друкарська помилка з `rm` або `mv` може зробити систему непридатною для використання, а шкідливий скрипт, виконаний від імені root, може встановлювати бекдори, змінювати заходи безпеки або красти дані практично без слідів.

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

Однак у дуже специфічних ситуаціях, таких як відновлення пошкодженої системи, робота в обмеженому середовищі або налаштування служб, що потребують постійного доступу, ви можете розглянути можливість тимчасового ввімкнення root-прав. Загальна рекомендація — вимикати його знову, щойно виникне така потреба. Чим менше часу ви проводите як root-права, тим краще для стабільності та безпеки машини.

Ризики використання root-доступу без обережності

Одна з найочевидніших небезпек — випадкове видалення життєво важливих файлів . Для root-користувачів немає обмежень щодо прав доступу; команда типу `sudo rm -rf /` може стерти систему без попередження. Також зазвичай для таких видалень немає кошика, тому відновлення може вимагати складних інструментів експертизи або навіть повної перевстановлення системи.

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

  Патчі Linux для підтримки RAS на платформах Qualcomm

Також існує проблема відстеження. Коли ви використовуєте `sudo`, система реєструє команду, користувача, який її видав, та час виконання `/var/log/auth.log`, `/var/log/secure` або `journalctl` . Якщо ви входите безпосередньо як root, все відображається як root, і ви втрачаєте можливість знати, хто вніс кожну зміну. ​​У середовищах з кількома адміністраторами або ISO 27001, PCI DSS чи іншими стандартами аудиту ця відсутність відстеження є суттєвим недоліком.

Способи отримання привілеїв з терміналу

Знімок екрана з терміналів Ubuntu, що показує системні журнали та моніторинг процесів.

Найпоширеніший та рекомендований спосіб – передувати певній команді `sudo`. Наприклад, для оновлення пакетів, перезапуску служби або редагування захищеного файлу, `sudo` запитуватиме ваш пароль користувача, а не пароль root, і після вашої автентифікації виконає команду з підвищеними привілеями. Якщо вам потрібно запустити її від імені іншого користувача, ви можете скористатися `sudo -u username command` . А якщо ви зрозумієте, що забули використати `sudo`, ви можете повторити останню команду з `sudo!! `.

Коли ви збираєтеся виконувати кілька адміністративних завдань поспіль, може бути зручно відкрити тимчасову кореневу оболонку. `sudo -i` імітує повний вхід root, завантажує root-середовище та розміщує вас у домашньому каталозі. `sudo su` або `sudo su -` також працюють, хоча `sudo -i` зазвичай надійніший. Щоб вийти з цього сеансу, просто введіть `exit`. Не рекомендується залишати root-оболонку відкритою без нагляду.

Команда `su`, з іншого боку, перемикає користувачів. `su - root` або просто `su -` також приймає змінні середовища цільового користувача, тоді як `su root` або `su` без дефісу зберігає частину попереднього середовища. Ця різниця пояснює такі помилки, як `command not found`: адміністративні команди зазвичай розташовані в `/usr/local/sbin`, `/usr/sbin` та `/sbin`, шляхах, які не завжди відображаються в PATH звичайного користувача. Якщо ви використовуєте `su` без дефісу, вам доведеться ввести повний шлях або перейти до `su -`, щоб успадкувати кореневий PATH.

Якщо ви хочете ввімкнути пароль для root, ви можете зробити це за допомогою `sudo passwd root` . Ubuntu не рекомендує цього, але технічно дозволяє root мати пароль. Щоб заблокувати обліковий запис, використовуйте `sudo passwd -l root` , а щоб розблокувати його, використовуйте `sudo passwd -u root`. У SSH прямий доступ root контролюється командою `PermitRootLogin` у `/etc/ssh/sshd_config`. Найбезпечніше залишити значення `no` або, щонайбільше, `prohibit-password`, щоб дозволити лише паролі SSH. Після цього вам потрібно перезапустити службу SSH.

Точно налаштуйте светри

Файл `/etc/sudoers` визначає, хто може використовувати `sudo` і для якої мети. Найкраще не редагувати його вручну; правильний підхід — використовувати `sudo visudo` , який блокує файл і перевіряє синтаксис перед збереженням. Основне правило має вигляд `host user=(target_user)`. Наприклад, `bob ALL=(ALL) ALL` дозволяє `bob` виконувати будь-яку команду від імені root на будь-якій машині. Також можна використовувати групи, такі як `%admin ALL=(ALL) ALL`.

  Ядро Liquorix у Linux: оптимізоване ядро ​​для робочого столу та ігор

Для надання точніших дозволів використовуються псевдоніми. `User_Alias ​​​​ADMINS = alice, bob` групує користувачів, а `Cmnd_Alias ​​​​LOCATE = /usr/sbin/updateddb` групує команди. Потім використовується `ADMINS ALL = LOCATE`, щоб ці користувачі могли виконувати лише ці команди. Псевдоніми, такі як `NETWORKING`, можна створювати для таких команд, як `route`, `ifconfig`, `ping`, `iptables` тощо. Це застосовує принцип найменших привілеїв без надання повного root-доступу нікому.

Опція NOPASSWD дозволяє виконувати певні команди без пароля, наприклад, `pi ALL=(ALL)`. NOPASSWD: ALL. Це зручно, але небезпечно, якщо зловживати. Крім того, кожне використання `sudo` реєструється, що допомагає проводити аудит доступу та вирішувати проблеми. Якщо щось зламається, перегляд цих журналів може показати, яка нещодавня зміна спричинила збій.

Запуск графічних програм від імені root з панелі запуску

Вигляд терміналу Linux, що показує список файлів кореневого каталогу /.

Для програм із графічним інтерфейсом просте використання `sudo` зазвичай не працює належним чином, оскільки немає терміналу для запиту пароля. Саме тут стають у пригоді графічні помічники . У KDE є `kdesu` : якщо ви знаєте, яка команда запускає програму, ви можете виконати `kdesu that_command`. Опція `Виконати команду` у меню KDE також дозволяє запускати програму від імені іншого користувача, ввівши його облікові дані. У середовищах GNOME та GTK широко використовувалися `gksu` та `gksudo` ; це інтерфейси для `sudo` або `su`. Наприклад, `gksu synaptic` або `gksudo gparted` відкриває програму та запитує пароль.

У сучасних системах gksu або не рекомендується, або вважається застарілим. Його звичайною альтернативою є pkexec , заснований на PolicyKit, який дозволяє програмам запускатися з привілеями відповідно до визначених політик. Багато сучасних лаунчерів використовують pkexec для адміністративних завдань. Ідея та сама: користувачеві не потрібно відкривати термінал, але система перевіряє авторизацію контрольованим чином.

Щоб створити ярлик у панелі запуску, потрібно відредагувати файл .desktop . Рядок `Exec` є ключовим. Якщо ви хочете, щоб він запускався від імені root, ви можете використовувати щось на кшталт `Exec=gksu /шлях/до/програми`, `Exec=kdesu /шлях/до/програми` або `Exec=pkexec /шлях/до/програми`. Якщо ви використовуєте `sudo` безпосередньо, вам знадобиться, щоб панель запуску мала `Terminal=true` або налаштувати графічний пароль для запиту. Ви також можете спробувати натиснути Alt+F2 та ввести допоміжну команду та назву програми, наприклад, `gksu synaptic`. У KDE `kdesu synaptic` або опція запуску від імені іншого користувача виконує подібну функцію.

Існує класична альтернатива під назвою consolehelper , обгортка для графічних застосунків. Ви створюєте символічне посилання, наприклад, /usr/bin/xterm-root, що вказує на /usr/sbin/consolehelper. Потім ви налаштовуєте PAM, створюючи /etc/pam.d/xterm-root з включеними параметрами auth, account та session з config-util. Далі ви визначаєте /etc/security/console.apps/xterm-root з USER=root та PROGRAM=/usr/bin/xterm. Коли ви запускаєте xterm-root, consolehelper запитує автентифікацію PAM та запускає xterm від імені root. Якщо ви зіткнулися з помилкою "Xlib connection to :0.0 refused by server" (сервер відмовив у підключенні Xlib до :0.0), може допомогти запуск xhost local:root.

У будь-якому разі, відкриття графічних програм від імені root має недоліки: воно змішує змінні середовища, може порушити роботу шини сеансу, вплинути на Wayland або X11 та створити файли, що належать root, у вашому домашньому каталозі. Найкраще використовувати його лише для певних адміністративних інструментів і закривати їх, щойно ви закінчите. Не переглядайте Інтернет і не відкривайте підозрілі документи від імені root , оскільки будь-який експлойт успадкує повні привілеї.

Типові приклади завдань, які потребують root-доступу

Багато повсякденних операцій вимагають підвищених привілеїв. Керування пакетами за допомогою apt, zypper, dnf або yum часто вимагає sudo. Наприклад, `sudo apt update` , `sudo apt install firefox` або `sudo zypper install docker-ce`. Те саме стосується системних служб: `sudo systemctl restart apache2`, `sudo systemctl restart ssh` або `sudo systemctl restart nginx`. Щоб змінити облікові записи користувачів, використовуйте `sudo usermod`, а щоб змінити власника файлу, використовуйте `sudo chown`. Редагування критичних конфігурацій, таких як `/etc/ssh/sshd_config`, також вимагає root-прав, якщо воно виконується за допомогою nano, vim або gedit.

  Як відновити GRUB без LiveCD крок за кроком

Вам не потрібен `sudo` для команд, які лише читають інформацію або не змінюють систему, таких як `zypper repos` або `systemctl status NetworkManager`. Використання `sudo` для всього за звичкою є поганою практикою. Розумним рішенням буде підвищувати привілеї лише тоді, коли цього вимагає завдання , а потім якомога швидше перемикатися назад до звичайного користувача.

Найкращі практики роботи з підвищеними привілеями

Крупний план серверної стійки з синім освітленням у центрі обробки даних.

Принцип найменших привілеїв має керувати всім. Використовуйте `sudo` для окремих команд, коли це можливо, уникайте постійних оболонок root, якщо це не є абсолютно необхідним, і виходьте, щойно закінчите. Не запускайте скрипти з невідомих джерел від імені root; перегляньте код заздалегідь, завантажте його з офіційних репозиторіїв або авторитетних проектів, перевірте контрольні суми та протестуйте в ізольованому середовищі, якщо у вас є сумніви. Здорова доза скептицизму – це чеснота при роботі зі стороннім кодом, який має повні привілеї.

Також бажано налаштовувати sudo-керуючі детально, не покладаючись виключно на групу sudo для всього, та вести аудит журналів. Якщо ви адмініструєте сервери, перевірте `/var/log/auth.log`, `/var/log/secure` або `journalctl -xe`, щоб виявити зловживання. У багатокористувацьких середовищах знання того, хто виконав кожну команду, є ключовим для підзвітності та дотримання правил безпеки.

Увімкнення та вимкнення root-доступу за допомогою головки

Якщо ви вирішите ввімкнути root-доступ, призначте пароль за допомогою `sudo passwd root`, використовуйте його лише для важливих завдань, а потім знову заблокуйте обліковий запис. Щоб вимкнути прямий вхід через SSH, відредагуйте `sshd_config` та встановіть `PermitRootLogin no` або `prohibit-password`, а потім перезапустіть SSH. Щоб заблокувати обліковий запис локально, використовуйте `sudo passwd -l root`. Щоб розблокувати його, використовуйте `sudo passwd -u root`. Ці заходи зменшують поверхню атаки та запобігають атакам методом грубої сили проти найпотужнішого облікового запису.

У більшості випадків практична відповідь на перше запитання ствердна: ви можете запустити програму з панелі запуску з правами root, використовуючи графічний помічник, такий як kdesu, gksu, gksudo або pkexec, або створивши файл .desktop за допомогою відповідної команди. Однак це не те, що слід залишати налаштованим для будь-якої програми. Краще мати спеціальні адміністративні панелі запуску зі зрозумілими назвами та використовувати їх лише за необхідності.

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