Lösungen
In Wayland ist es oft schwierig, GUI-Anwendungsprogramme mit erhöhten Berechtigungen (sudo -H, gksu ...) auszuführen. Es ist eine gute Idee, solche Aufgaben mit Befehlszeilentools auszuführen.
Es gibt jedoch Problemumgehungen, wenn Sie über ein GUI-Tool verfügen, das für Sie gut funktioniert und erhöhte Berechtigungen benötigt. (Ich verwende zwei solche Standardtools: den Synaptic Package Manager synaptic
und das Partitionierungstool Gparted gparted
. Ich verwende MakeUSB auch zum Erstellen von USB-Boot-Laufwerken mkusb
, aber es kann die Teile ausführen, für die erhöhte Berechtigungen ohne Grafiken erforderlich sind.)
xhost
und sudo -H
Es gibt eine Problemumgehung, um grafische Anwendungsprogramme zuzulassen, die anderen Benutzern als dem in Wayland angemeldeten Benutzer gehören.
xhost +si:localuser:root
gksu
und gksudo
sind nicht mit Standard Ubuntu gebündelt und funktionieren hier nicht, aber sie funktionieren in Xorg.
Stattdessen können Sie verwenden
sudo -H
Es ist eine gute Idee, grafische Anwendungsprogramme zu verhindern, die anderen Benutzern als dem angemeldeten Benutzer gehören.
xhost -si:localuser:root
gvfs admin backend
In Ubuntu 17.10 (gvfs> = 1.29.4) können Sie das gvfs-Admin-Backend verwenden. Beachten Sie, dass Sie den vollständigen Pfad benötigen,
gedit admin:///path/to/file
Theoretisch ist die Backend-Methode gvfs admin (die polkit verwendet) besser und sicherer (als xhost
und xudo -H
), unabhängig von der von Ihnen verwendeten Benutzeroberfläche.
Sie führen nicht die gesamte Anwendung als Root aus. Die Eskalation von Berechtigungen erfolgt nur, wenn dies unbedingt erforderlich ist. Siehe den folgenden Link und Links von ihm,
nautilus-admin
Es ist auch möglich, nautilus-admin
für Dateioperationen mit erhöhten Berechtigungen und gedit
mit erhöhten Berechtigungen zu verwenden. Dies wird in der folgenden AskUbuntu-Antwort beschrieben:
Temporärer Zugriff für Root auf den Wayland-Desktop über die Funktion gks
Bitte vermeiden Sie sudo GUI-program
. Dies kann dazu führen, dass das System die Konfigurationsdateien für Ihre reguläre Benutzer-ID mit der Konfiguration überschreibt root
und den Besitz und die Berechtigungen root
festlegt, um Ihre reguläre Benutzer-ID anzupassen und zu sperren. Sie sollten GUI - Anwendungen mit laufen sudo -H
, das schreibt die Konfigurationsdateien in root
‚s Home - Verzeichnis /root
. Beispiel:
sudo -H gedit myfile.txt
Es besteht jedoch die Gefahr, dass Sie es vergessen -H
. Stattdessen können Sie beispielsweise eine Funktion erstellengks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
und bewahren Sie es in der ~/.bashrc
Nähe der Aliase auf. Dann kannst du rennen
gks gedit myfile.txt
auf ähnliche Weise wie gksudo
zuvor.
Testen
Sie können prüfen , wie sudo
, sudo -H
und die gks
Arbeit mit den folgenden Befehlen
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 ~ $
und natürlich
gks gedit myfile.txt
gemäß dem Beispiel im vorherigen Abschnitt.
Methode, die über das Menü Alt-F2 und Gnome Shell funktioniert
Anstatt eine einfache einzeilige Funktion hinzuzufügen ~/.bashrc
, können Sie ein System erstellen, das auch ohne Bash funktioniert. Die Verwendung mag bequem sein, die Einrichtung ist jedoch komplizierter. Bitte beachten Sie, dass Sie nur eine der Alternativen installieren sollten, da die Einzeilenfunktion dieses kompliziertere System stört.
Drei Dateien
Das Muschelskript 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;
Die Desktop-Datei 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
Die Symboldatei gks.svg
sieht folgendermaßen aus:
Sie können die Symboldatei oder einen Tarball mit allen drei Dateien über diesen Link herunterladen.
wiki.ubuntu.com/Wayland/gks
Kopieren Sie die [extrahierten oder kopierten & eingefügten] Dateien an die folgenden Speicherorte.
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Abmelden / Anmelden oder Neustarten, und es sollte ein funktionierendes Desktopsymbol vorhanden sein. Es funktioniert von einem Terminalfenster aus wie bei der einfachen Lösung mit der Funktion.
Alt F2 Box:
Gnome Shell Menü:
gks Konsole und gparted:
Benutzerdefiniertes Skript und Desktop-Datei
Wenn Sie nur über wenige GUI-Anwendungen verfügen, für die erhöhte Berechtigungen erforderlich sind, können Sie benutzerdefinierte Skripts und Desktop-Dateien erstellen und die Eingabe des Befehls (Anwendungsname) vermeiden. Sie würden nur das Passwort eingeben, was im Vergleich zu den Vorgängerversionen von Ubuntu nicht schwieriger ist (Sie sollten das Passwort trotzdem eingeben).
Beispiel mit dem einfachen GUI-Programm xlogo
, das mit dem Programmpaket geliefert wird x11-apps
:
Das Shellscript gkslogo
(vereinfacht gegenüber 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;
Die Desktop-Datei 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
Ich war faul und habe die gleiche Symboldatei verwendet gks.svg
Kopieren Sie die [kopierten & eingefügten] Dateien an die folgenden Speicherorte,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [logo] console und xlogo:
gksudo
funktioniert in einer Wayland-Sitzung nicht , Sie können zu einer Xorg-Sitzung wechseln und es versuchen.