Как получить разрешения на редактирование файлов конфигурации системы?
Я не могу редактировать и сохранять файлы конфигурации в корневой системе (например: /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):
- Нажмите Alt+F2, чтобы вызвать диалог Run.
Тип
gksudo
сопровождаемый именем исполняемой программы (которое может отличаться от имени, отображаемого в графическом интерфейсе). Например:gksudo gedit
- Нажмите 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