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

47

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

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

Мэтью Уилсон
источник

Ответы:

42

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

  • sudoedit /etc/dhcp/dhcpd.configесли вы используете редактор на основе терминала, такой как nanoили ssh'ing на сервер.
  • gksudo <text editor here> /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 <text editor>вместо этого, или протокола :admin://

gedit admin:///etc/dhcp/dhcpd.config
Кристофер Кайл Хортон
источник
15

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

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

    gksudo gedit
    
  3. Хит Enter.
Скотт Северанс
источник
10

Я не могу вспомнить случай, когда root получит permission denied.

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

Диалог F2

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

Наберите gedit в диалоге Run.

Нажмите Open:

Открыть вкладку внутри Gedit

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

диалог открытия файлов

Готово

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

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

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

RobotHumans
источник
Возможно, вам придется обновить это для 13.04 и новее. Некоторые вещи, связанные с gksu / gksudo, изменились (не уверен, относится ли это к вашему ответу или нет).
Сет
Насколько я понимаю, sudo теперь волшебным образом экспортирует переменные окружения 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
PBR
источник
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, но вам необходимо ввести пароль пользователя, на которого вы переключаетесь, и, поскольку root не имеет пароля по умолчанию в Ubuntu (фактически отключение учетной записи root) это не будет работать, если вы не установили пароль для пользователя root, что не рекомендуется.

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

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

Амит КК
источник
0
sudo < editor > < filelocation >

например:

sudo -H gedit etc/dhcp/dhcpd.config
user392272
источник