Как мне получить разрешения на редактирование файлов конфигурации системы?

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

Я почти уверен, что являюсь пользователем root, но как мне убедиться в этом? Если я являюсь пользователем root, как мне это исправить?

Какой текстовый редактор вы используете? Если вы являетесь пользователем sudoer и знаете свой пароль, попробуйте (в терминале) либо:

  • sudoedit /etc/dhcp/dhcpd.config если вы используете редактор на основе терминала, такой как nano или подключаетесь по ssh к серверу.
  • gksudo <text editor here> /etc/dhcp/dhcpd.config если вы используете редактор на основе графического интерфейса, такой как gedit

В любом случае вам нужно будет сначала ввести свой пароль по запросу.

В Ubuntu 14.04 и далее, gksudo не установлен по умолчанию. Вам нужно будет установить gksu пакет (либо из Центра программного обеспечения, либо через sudo apt-get install gksu), чтобы получить его.

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

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

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

Если вы не хотите использовать терминал, вы можете вызвать программу с графическим интерфейсом от имени root таким образом (этот пример предназначен для Gedit):

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

    gksudo gedit
  3. Удар Enter.

Я не могу придумать случая, когда root получил бы permission denied.

В 12.04 вы можете сделать это следующим образом: alt+f2 и войти gksudo в поле, которое выглядит следующим образом:

F2 dialogue

Вы получаете такое поле и вводите gedit и нажмите ok:

Type gedit in Run dialogue

Щелчок Open:

Open tab inside gedit

Просто перейдите к файлу:

open files dialogue

Сделано

Предупреждение: Существует суперпользователь / root по какой-то причине. Это делается для того, чтобы вы случайно не поместили что-то плохое или неструктурированное в что-то важное по ошибке. Вы должны быть чрезвычайно осторожны, чтобы все, что вы редактируете от имени root, было правильным файлом, который вы хотите отредактировать, и чтобы ваш синтаксис был идеальным. Если для редактирования доступны другие инструменты, рекомендуется использовать их. Например, используйте visudo команда терминала вместо ручного редактирования /etc/sudoers.

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

Да, командная строка консоли восстановления кажется немного страшнее, чем даже этот Просто будь осторожен.

Вы можете проверить, работает ли ваша текущая оболочка от имени root несколькими различными способами

~/ > whoamipaul~/ > sudo whoamiroot~/ > iduid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…~/ > sudo iduid=0(root) gid=0(root) group=0(root)

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

Из страница руководства chattr:

Файл с атрибутом 'i' не может быть изменен: его нельзя удалить или переименовать, на этот файл нельзя создать ссылку и в файл нельзя записать никакие данные. Только суперпользователь или процесс, обладающий CAP_LINUX_IMMUTABLE вы можете установить или удалить этот атрибут.

Вы можете узнать это с помощью lsattr

lsattr /etc/dhcp/dhcpd.config

Если это действительно неизменяемо, вы можете отключить это следующим образом:

chattr -i /etc/dhcp/dhcpd.config

Если вы используете Ubuntu 17.04 или выше, рекомендуется использовать серверная часть администратора gvfs. Просто добавьте admin:// в начале полного пути к файлу, который вы хотите открыть в приложении, подобном Текстовый редактор или в Файлы приложения.

Например, чтобы изменить настройки загрузки, откройте

admin:///etc/default/grub

Если вы используете Ubuntu 17.10 с Wayland по умолчанию, sudo и gksu как упоминалось в более старом ответе, здесь будет нет работа.

Используйте Свой Любимый Текстовый Редактор

Вы можете использовать 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 тоже работают, но имеют меньший приоритет или, соответственно, более специализированы. Посмотрите на страница руководства для получения подробной информации.

Чтобы быть в безопасности, создайте резервную копию с помощью cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backupи бежать gksu gedit /etc/dhcp/dhcpd.config

Заменять gedit с редактором по вашему выбору

вы получите подсказку, подобную этой

password prompt

Введите свой пароль здесь.

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

В случае, если что-то пойдет не так, вы можете восстановить его из резервной копии в домашней папке.

Вы получаете "отказано в разрешении" из-за того, как Linux обрабатывает разрешения.

Что-нибудь в $HOME папка принадлежит пользователю, в то время как почти все остальное принадлежит root.

То /etc/dhcp/dhcpd.conf файл, к которому вы пытаетесь получить доступ, принадлежит корню, и большинство файлов в /etc/ по умолчанию принадлежит root по соображениям безопасности.

Вы все еще можете редактировать этот файл, повысив свои права доступа.

Для этого у вас есть несколько способов:

  • использовать su который расшифровывается как switch user. Без каких-либо атрибутов он функционирует как команда для переключения на учетную запись root, но вам нужно ввести пароль пользователя, на которого вы переключаетесь, и поскольку root по умолчанию не имеет пароля в Ubuntu (фактически отключая учетную запись root), это не сработает, если вы не установили пароль для root, который не рекомендуется использовать.

  • с помощью sudo что повышает ваше разрешение только на одну команду. Обычно это используется только для приложений командной строки, таких как текстовые редакторы CLI, такие как vim,nano и т.д.

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

sudo < editor > < filelocation >

напр.:

sudo -H gedit etc/dhcp/dhcpd.config