Як отримати дозволи на редагування файлів конфігурації системи?


47

Я не можу редагувати та зберігати конфігураційні файли в кореневій системі (наприклад:) /etc/dhcp/dhcpd.config; він просто говорить "відмовлено в дозволі" або параметр збереження блокується в текстовому редакторі.

Я впевнений, що я користувач root, але як це зробити? Якщо я користувач root, як це виправити?

Відповіді:


42

Який текстовий редактор ви використовуєте? Якщо ви користуєтеся користувачем root і знаєте пароль, спробуйте (в терміналі) або:

  • sudoedit /etc/dhcp/dhcpd.configякщо ви використовуєте редактор на базі терміналів, такий як nanoабо ви працюєте на сервері.
  • gksudo <text editor here> /etc/dhcp/dhcpd.config якщо ви використовуєте редактор на основі GUI, такий як gedit

У будь-якому випадку вам потрібно буде в першу чергу надати свій кореневий пароль.

У Ubuntu 14.04 і далі gksudoне встановлено за замовчуванням. Вам доведеться встановити gksuпакет (або в Програмному центрі, або через sudo apt-get install gksu), щоб отримати його.

В Ubuntu 17.10 Wayland за замовчуванням замість традиційного X-сервера, і запускати графічні редактори як root важко. Див. Чому gksu / gksudo або запуск графічного додатку з судо не працюють з Wayland? для деталей.

У Ubuntu 18.04 gksudoнедоступний в офіційних сховищах. Використовуйте sudo -H <text editor>замість цього, або протоколу :admin://

gedit admin:///etc/dhcp/dhcpd.config

15

Якщо ви не хочете використовувати термінал, ви можете викликати програму GUI як root таким чином (цей приклад призначений для Gedit):

  1. Натисніть Alt+, F2щоб відкрити діалогове вікно Запуск.
  2. Введіть gksudoназву виконавчої програми вашої програми (яка може відрізнятися від імені, відображеного в графічному інтерфейсі). Наприклад:

    gksudo gedit
    
  3. Удар Enter.

10

Я не можу придумати випадок, коли корінь отримав би permission denied.

У 12.04 ви можете зробити це так: alt+ f2і ввести gksudoу поле, що з’являється так:

F2 діалог

Ви отримуєте таке поле і введіть geditта натисніть ok:

Введіть gedit у діалоговому вікні Run

Клацніть Open:

Відкрити вкладку всередині gedit

Просто перейдіть до файлу:

діалог відкритих файлів

Зроблено

Попередження: Суперкористувач / root має причину. Це так, що ви випадково помилково не поміщаєте щось погане або поза структурою в чомусь важливому. Ви повинні бути дуже обережними, що все, що ви редагуєте як root, - це правильний файл, який ви хочете редагувати І що ваш синтаксис є ідеальним. Якщо для редагування доступні інші інструменти, рекомендується використовувати їх. Наприклад, використовуйте команду visudo термінала замість редагування вручну /etc/sudoers.

Деякі файли, які можуть зіпсуватись, легко відновити. Інші порівняно складні, або вам доведеться використовувати консоль відновлення та безліч командних рядків.

Так, командний рядок консолі відновлення здається трохи страшнішим, ніж навіть це . Просто будьте обережні.


Можливо, вам знадобиться оновити це на 13.04 та новіші. Деякі речі, що стосуються gksu / gksudo, змінилися (не впевнені, чи це стосується вашої відповіді чи ні).
Сет

Це моє розуміння: судо зараз магічно експортує змінні середовища DISPLAY, і gksu / gksudo відійшли або відійдуть. Я не перевіряв, хоча.
RobotHumans

rootможна отримати дозвіл відмовлено, якщо файл встановлено без змін chattrабо іноді, якщо диск є лише для читання.
Чай Т. Рекс

6

Ви можете перевірити, чи працює ваша поточна оболонка як root декількома різними способами

~/ > whoami
paul
~/ > sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > sudo id
uid=0(root) gid=0(root) group=0(root)

Інші відповіді дають хороші способи перейти до root права, тому я не повторюю їх. Припускаючи , що ви є корінь , і ви все ще не можете редагувати файл /etc/dhcp/dhcpd.config- то дуже ймовірно , хто - то або якась - то програма використовувала chattrпрограму , щоб зробити файл незмінним.

На сторінці керівництва chattr :

Файл з атрибутом 'i' неможливо змінити: його неможливо видалити чи перейменувати, жодне посилання не може бути створено до цього файлу і до нього не можна записувати дані. Лише суперпользователь або процес, що володіє CAP_LINUX_IMMUTABLEможливістю, може встановити або очистити цей атрибут.

Це можна дізнатися, використовуючи lsattr

lsattr /etc/dhcp/dhcpd.config

Якщо це дійсно незмінне, ви можете вимкнути це так:

chattr -i /etc/dhcp/dhcpd.config

3

Якщо ви використовуєте Ubuntu 17.04 або новішої версії , рекомендується використовувати адміністративний сервер gvfs . Просто додайте admin://на передню частину повного файлового шляху, який ви хочете відкрити, у такій програмі, як Текстовий редактор або програми Файли .

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

admin:///etc/default/grub

Якщо ви використовуєте Ubuntu 17.10 за замовчуванням Wayland, sudoі gksuяк зазначено у попередній відповіді, тут не вийде .


2

Використовуйте ваш улюблений редактор тексту

Ви можете використовувати sudo -eйого псевдонім sudoeditулюбленим (графічним!) Текстовим редактором через VISUALзмінну середовища 1 :

VISUAL=gedit sudo -e /path/to/some-config-file.cfg

що еквівалентно

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

Звичайно , ви можете використовувати будь-який інший редактор , який вам подобається, наприклад leafpad, kate, або subl.

Деякі редактори пропонують опцію командного рядка завжди запускати новий екземпляр, навіть якщо він наразі працює. Оскільки sudoeditчекає завершення процесу редактора, щоб застосувати зміни до редагованого файлу, це може знадобитися, якщо у вас запущені інші екземпляри того самого редактора:

  • Для використання GEdit VISUAL='gedit -s'.
  • Для використання Кейт VISUAL='kate -n'.

Переваги

  • Не вимагає додаткових та / або застарілих додатків.
  • Не вимагає змін політики безпеки pkexec(наприклад, для яких вам потрібно буде редагувати файли ... як суперкористувача, саме цю відповідь намагається вирішити).
  • Не вимагає виконання потенційно небезпечних програм із підвищеними привілеями.
  • Використовує конфігурацію додатків поточного користувача, але возиться з правами доступу до файлу конфігурації, як-то sudo -Hтощо.
  • Не повертається до даних конфігураційних програм rootкористувача, які можуть виглядати або не сприймати себе приємно.

Недоліки

  • Вам потрібно вивчити нову коротку команду.

1 EDITOR або SUDO_EDITORпрацювати теж, але брати менший пріоритет або відповідно більш спеціалізований. Детальну інформацію див . На сторінці керівництва .


0

Щоб захистити його, скористайтеся cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup та запустітьgksu gedit /etc/dhcp/dhcpd.config

Замініть geditредактор на ваш вибір

ви отримаєте такий запит, як це

запрошення пароля

Введіть тут свій пароль.

Відкриється нове вікно, і ви можете там відредагувати свою конфігурацію.

Якщо щось піде не так, ви можете відновити його з резервної копії в домашній папці.

Ви отримуєте "дозвіл відмовлено" через те, як Linux обробляє дозвіл.

Все в $HOMEпапці належить користувачеві, тоді як майже все інше належить до root.

/etc/dhcp/dhcpd.confФайл , який ви намагаєтеся отримати доступ належить до кореня, і більшість файлів в /etc/належить до кореня за замовчуванням з міркувань безпеки.

Ви все ще можете редагувати цей файл, підвищивши свої дозволи.

Для цього у вас є кілька способів:

  • використовувати, suщо означає перемикач користувача. Без будь-яких атрибутів до нього, він функціонує як команда для переходу до кореневого облікового запису, але вам потрібно ввести пароль користувача, до якого ви переходите, і оскільки root не має пароля за замовчуванням на Ubuntu (ефективно вимкнення кореневого облікового запису) , це не працюватиме, якщо ви не встановили пароль для root, що не рекомендується.

  • за допомогою sudoякого підвищується ваш дозвіл лише на одну команду. Зазвичай він використовується лише для програм командного рядка, таких як текстові редактори CLI vim, nanoтощо

  • використання gksuяких підвищує ваш дозвіл лише на одну команду, але на відміну від sudoвикористовується для графічних програм, таких як текстові редактори GUI gedit. він використовує графічний підказку для полегшення введення пароля.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.