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

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

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

50
задан 13 April 2012 в 21:14

8 ответов

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

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

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

В 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 или протокол admin: // :

gedit admin:///etc/dhcp/dhcpd.config
44
ответ дан 13 April 2012 в 21:14

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

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

     gksudo gedit
     
  3. Нажмите Введите .
15
ответ дан 13 April 2012 в 21:14
sudo < editor > < filelocation >

например:

sudo -H gedit etc/dhcp/dhcpd.config
0
ответ дан 13 April 2012 в 21:14

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

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

admin:///etc/default/grub

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

3
ответ дан 13 April 2012 в 21:14

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

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

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

что эквивалентно

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

Конечно, вы можете использовать любой другой редактор, который вам нравится, например. г. листовая панель , Кейт или subl .

Некоторые редакторы предлагают параметр командной строки, чтобы всегда запускал новый экземпляр, даже если один в настоящее время работает. Поскольку sudoedit ожидает завершения процесса редактора, чтобы применить изменения к редактируемому файлу, это может быть необходимо, если у вас есть другие запущенные экземпляры того же редактора:

  • Для GEdit используйте VISUAL = ' gedit -s '.
  • Для Кейт используйте VISUAL =' kate -n '.

Преимущества

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

Недостатки

  • Вам необходимо покинуть rn короткая новая команда.

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

2
ответ дан 13 April 2012 в 21:14

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

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

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

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

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

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

0
ответ дан 13 April 2012 в 21:14

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

Из справочной страницы chattr :

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

Вы можете узнать, используя lsattr

lsattr /etc/dhcp/dhcpd.config

Если он действительно неизменяемый, вы можете отключить его вот так :

chattr -i /etc/dhcp/dhcpd.config
6
ответ дан 13 April 2012 в 21:14

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

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

F2 dialogue

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

Type gedit in Run dialogue

Щелкните Открыть :

Open tab inside gedit

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

open files dialogue

Готово

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

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

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

10
ответ дан 13 April 2012 в 21:14

Другие вопросы по тегам:

Похожие вопросы: