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

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

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

8 ответов

Решение

Какой текстовый редактор вы используете? Если вы являетесь пользователем 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

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

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

    gksudo gedit
    
  3. Нажмите Enter.

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

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

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

Нажмите Открыть:

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

Готово

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

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

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

Вы можете проверить, работает ли ваша текущая оболочка от имени 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

Если вы используете 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 с редактором по вашему выбору

вы получите приглашение, подобное этому

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

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

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

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

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

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

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

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

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

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

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

sudo < editor > < filelocation >

например:

sudo -H gedit etc/dhcp/dhcpd.config
Другие вопросы по тегам