
Иногда мне нужно редактировать файлы в /etc
. Я знаю, что могу сделать это с помощью консоли ( sudo mv some/file /etc/some/file
, sudo nano /etc/some/file
) и т. д., но я нахожу этот способ немного неуклюжим. Назовите меня избалованным, но я действительно привык к инструментам с графическим интерфейсом, таким как Nautilus и Gedit.
Такие дистрибутивы, как Ubuntu Mate или Mint, упрощают задачу: я могу щелкнуть правой кнопкой мыши по папке, после чего появится контекстное меню с такими опциями, как «открыть как администратор". После этого двойной щелчок по текстовому файлу открывает его в gedit с повышенными привилегиями.
Однако я не могу найти такую опцию в стандартной версии Unity в Ubuntu:
Примечание:
- Я знаю об этом вопросе.Способы запуска Nautilus с повышенными привилегиями, но рекомендуемое здесь решение — использовать
gksudo
, который больше не работает - Я полагаю, что я всегда могу это сделать
sudo gedit /etc/whatever
, но - насколько мне известно - использованиеsudo
инструментов с графическим интерфейсом крайне нежелательно. - Я припоминаю, что некоторые говорят, что не рекомендуется запускать инструменты с графическим интерфейсом с повышенными привилегиями.совсем. Однако, похоже, это не так, поскольку некоторые стандартные инструменты графического интерфейса сами требуют повышения прав, и Ubuntu Software, пожалуй, является одним из самых ярких примеров:
Есть ли способ запустить Nautilus или Gedit с повышенными привилегиями?
решение1
Вы можете легко получить меню правой кнопки мыши, которое позволяет открывать файл с правами root, установив пакет nautilus-admin
. Это расширение nautilus добавляет два пункта меню правой кнопки мыши. Один из них позволяет вам открыть файл как root для редактирования в gedit. Другой пункт позволяет вам открыть окно nautilus с правами root.
Пакет включен в стандартные репозитории Ubuntu и может быть установлен с помощью команды
sudo apt install nautilus-admin
Он использует административный бэкэнд GNOME, т.е. эффект тот же, как если бы вы открыли файл из командной строки с помощью URI admin://
, например
gedit admin:///etc/fstab
решение2
Вы можете использовать pkexec
вместо gksudo
. Мой способ запуска eg. gedit
с повышенными привилегиями заключается в создании скрипта, например /usr/local/bin/su_gedit
, со следующим содержимым:
#!/bin/bash
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit $*
Затем вы можете создать .desktop
файл для этого скрипта, например /usr/share/applications/su_gedit.desktop
(я не проверял, /usr/share/applications
будет ли работать другое расположение), скопировав его содержимое org.gnome.gedit.desktop
и изменив его соответствующим образом, т. е. изменив строки Name=
и Comment=
на то, что вам нужно (например, Name=Root Text Editor
и Comment=Edit text files with root privileges
), и заменив gedit
на /usr/local/bin/su_gedit
во всех Exec=
строках.
После этого, при щелчке правой кнопкой мыши в Nautilus на файле, который обычно открывается в gedit, и выборе «Открыть с помощью другой программы», вы должны увидеть запись «Корневой текстовый редактор» в списке. Даже если ее там нет, если вы нажмете кнопку «Показать все программы», вы сможете ее выбрать.
Другой способ — создать похожий скрипт, который запускается с повышенными правами gnome-terminal
, и создать лаунчер для этого скрипта, например, на панели GNOME или на рабочем столе. Из этого терминала вы можете просто запустить его gedit
как root. Это то, что я обычно делаю.
решение3
Немо- это файловый менеджер по умолчанию, поставляемый с Cinnamon Desktop. Nemo позволяет вамщелкните правой кнопкой мышив любом месте заданного каталога и "Открыть как root."
Затем открывается второе окно с синим баннером «Повышенные привилегии».
Надеюсь это поможет!
примечание - (Похоже, вы хотите продолжать использовать Nautilus, так что проигнорируйте этот совет, если вы не хотите переходить на другой файловый менеджер.)
решение4
Из комментариев...
Theправильныйи самый простой способ запустить приложения с графическим интерфейсом с правами доступа из CLI — это использовать sudo -H
.
пример:sudo -H gedit /etc/filename
Из sudo
страницы руководства...
-H, --set-home
Request that the security policy set the HOME environment
variable to the home directory specified by the target
user's password database entry. Depending on the policy,
this may be the default behavior.
Таким образом, -H
флаг заставляет sudo
предположить root
домашний каталог 's HOME
вместо домашнего каталога текущего пользователя. В противном случае некоторые файлы в user
домашнем каталоге 's станут владельцами root, что может привести к различным проблемам.
Примечание: взято изЧто означает флаг «-H» в «sudo -H»?
Наиболее распространенной проблемой при использовании sudo
без этой -H
опции является создание цикла входа в систему.
Это может произойти из-за того, что следующие файлы изменяются с your_username:your_username на root:root...
-rw------- 1 your_username your_username 407910 Nov 2 08:56 .ICEauthority
-rw------- 1 your_username your_username 58 Jun 23 2017 .Xauthority