Решения
В Wayland часто сложно запускать прикладные программы с графическим интерфейсом с повышенными (sudo -H, gksu ...) разрешениями. Это хорошая идея, чтобы делать такие задачи с помощью инструментов командной строки.
Но есть обходные пути, если у вас есть инструмент с графическим интерфейсом, который хорошо работает для вас и требует повышенных разрешений. (Я использую два таких стандартных инструмента: менеджер пакетов Synaptic synaptic
и инструмент разбиения Gparted gparted
. Я также использую MakeUSB для создания загрузочных USB-накопителей mkusb
, но он может запускать части, для которых требуются повышенные разрешения, без графики.)
xhost
а также sudo -H
Существует обходной путь, позволяющий использовать графические прикладные программы, принадлежащие другим пользователям, а не зарегистрированному пользователю в Wayland,
xhost +si:localuser:root
gksu
и gksudo
не связаны со стандартной Ubuntu и не работают здесь, но они работают в Xorg.
Вместо этого вы можете использовать
sudo -H
Это хорошая идея, чтобы впоследствии предотвратить графические прикладные программы, принадлежащие другим пользователям, а не зарегистрированным пользователям,
xhost -si:localuser:root
административный сервер gvfs
В Ubuntu 17.10 (gvfs> = 1.29.4) вы можете использовать административную часть gvfs. Обратите внимание, что вам нужен полный путь,
gedit admin:///path/to/file
Теоретически, бэкэнд-метод gvfs admin (который использует polkit) лучше и безопаснее (чем xhost
и xudo -H
), независимо от используемого вами пользовательского интерфейса.
Вы не запускаете все приложение как root. Повышение привилегий происходит только тогда, когда это строго необходимо. Смотрите следующую ссылку и ссылки из нее,
Наутилус-админ
Также возможно использовать nautilus-admin
для файловых операций с повышенными разрешениями и использовать gedit
с повышенными разрешениями. Это описано в следующем ответе AskUbuntu,
Временный доступ рута к рабочему столу Wayland через функцию gks
Пожалуйста, избегайте sudo GUI-program
. Это может привести к тому, что система перезапишет файлы конфигурации для вашего обычного идентификатора пользователя с root
конфигурацией пользователя и установит владельца и разрешения для соответствия root
и блокировки вашего обычного идентификатора пользователя. Вы должны запускать приложения с графическим интерфейсом sudo -H
, которые записывают файлы конфигурации в root
домашний каталог /root
. Пример:
sudo -H gedit myfile.txt
Но есть риск, что вы забудете -H
. Вместо этого вы можете создать функцию, напримерgks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
и храните его в своих ~/.bashrc
псевдонимах. Тогда вы можете запустить
gks gedit myfile.txt
таким же образом, как вы использовали gksudo
раньше.
тестирование
Вы можете проверить , как sudo
, sudo -H
и gks
работать со следующими командами
sudodus@xenial32 ~ $ sudo bash -c "echo ~"
/home/sudodus
sudodus@xenial32 ~ $ sudo -H bash -c "echo ~"
/root
sudodus@xenial32 ~ $ gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
sudodus@xenial32 ~ $ gks bash -c "echo ~"
localuser:root being added to access control list
/root
localuser:root being removed from access control list
sudodus@xenial32 ~ $
и конечно
gks gedit myfile.txt
согласно примеру в предыдущем разделе.
Метод, который работает через меню Alt-F2 и Gnome Shell
Вместо добавления простой однострочной функции ~/.bashrc
вы можете создать систему, которая работает также без bash. Это может быть удобно в использовании, но сложнее в настройке. Обратите внимание, что вам следует установить только одну из альтернатив, потому что однострочная функция будет мешать работе этой более сложной системы.
Три файла
Скрипт gks
:
#!/bin/bash
xhost +si:localuser:root
if [ $# -eq 0 ]
then
xterm -T "gks console - enter command and password" \
-fa default -fs 14 -geometry 60x4 \
-e bash -c 'echo "gks lets you run command lines with GUI programs
with temporary elevated permissions in Wayland."; \
read -p "Enter command: " cmd; \
cmdfile=$(mktemp); echo "$cmd" > "$cmdfile"; \
sudo -H bash "$cmdfile"; rm "$cmdfile"'
else
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H "$@"
fi
xhost -si:localuser:root;
Файл рабочего стола gks.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gks
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gks %f
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
Файл значка gks.svg
выглядит следующим образом:
Вы можете скачать файл значка или архив со всеми тремя файлами по этой ссылке,
wiki.ubuntu.com/Wayland/gks
Скопируйте [извлеченные или скопированные и вставленные] файлы в следующие места,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Выйдите из системы, войдите в систему или перезагрузите компьютер, и там должен быть значок рабочего стола. Он будет работать из окна терминала, как в простом решении с функцией.
Alt F2 коробка:
Меню Gnome Shell:
gks console и gparted:
Пользовательский скрипт и файл рабочего стола
Если у вас есть только несколько приложений с графическим интерфейсом, которым требуются повышенные разрешения, вы можете создать для них пользовательские сценарии и файлы рабочего стола и не вводить команду (имя приложения). Вам нужно только ввести пароль, что не сложнее по сравнению с предыдущими версиями Ubuntu (вы должны ввести пароль в любом случае).
Пример с простой программой GUI, xlogo
которая идет в комплекте с программным пакетом x11-apps
:
Скрипт gkslogo
(упрощенный по сравнению с gks
),
#!/bin/bash
xhost +si:localuser:root
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H xlogo
xhost -si:localuser:root;
Файл рабочего стола gkslogo.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gkslogo
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gkslogo
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
Я был ленив и использовал тот же файл значка gks.svg
Скопируйте [скопированные и вставленные] файлы в следующие места,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [logo] консоль и xlogo:
gksudo
не будет работать в сеансе Wayland , вы можете переключиться на сеанс Xorg и попробовать.