Рішення
У Wayland часто важко запустити програми додатків GUI з підвищеними дозволами (sudo -H, gksu ...). Дуже добре робити такі завдання за допомогою інструментів командного рядка.
Але є обхідні шляхи, якщо у вас є інструмент GUI, який добре працює для вас і потребує підвищених дозволів. (Я використовую два таких стандартних інструмента: Synaptic Package Manager synaptic
і інструмент розділення Gparted gparted
. MakeUSB я також використовую для створення завантажувальних накопичувачів USB mkusb
, але він може запускати частини, які потребують підвищених дозволів без графіки.)
xhost
і sudo -H
Існує рішення, щоб дозволити графічні програми, що належать іншим користувачам, ніж користувач, який увійшов у Вейленді,
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 (який використовує polkit) є кращим і безпечнішим (ніж xhost
і xudo -H
), незалежно від користувальницького інтерфейсу, який ви використовуєте.
Ви не запускаєте всю програму як root. Ескалація привілеїв відбувається лише тоді, коли це суворо необхідно. Дивіться наступне посилання та посилання з нього,
nautilus-адмін
Можна також використовувати nautilus-admin
для файлових операцій з підвищеними дозволами та використовувати gedit
з підвищеними дозволами. Це описано в наступній відповіді AskUbuntu,
Тимчасовий доступ для root на робочий стіл Wayland за допомогою функції gks
Будь ласка, уникайте sudo GUI-program
. Це може призвести до того, що система перезаписує конфігураційні файли для вашого звичайного ідентифікатора користувача з root
конфігурацією 's та встановлює право власності та дозволи для встановлення root
та блокування вашого звичайного ідентифікатора користувача. Вам слід запустити програми GUI 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:
консоль gks і gparted:
Спеціальний файл сценарію та робочого столу
Якщо у вас є лише кілька додатків GUI, для яких потрібні підвищені дозволи, ви можете створити для них власні сценарії та файли на робочому столі та уникнути введення команди (назва програми). Ви б лише ввели пароль, що не є складніше порівняно з попередніми версіями 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 [логотип] консолі та xlogo:
gksudo
не працюватиме в сеансі Wayland , ви можете перейти до сесії Xorg і спробувати.