soluzioni
In Wayland è spesso difficile eseguire programmi applicativi GUI con autorizzazioni elevate (sudo -H, gksu ...). È una buona idea svolgere tali compiti con gli strumenti da riga di comando.
Ma ci sono soluzioni alternative, se si dispone di uno strumento GUI, che funziona bene per te e richiede autorizzazioni elevate. (Uso due di questi strumenti standard: Synaptic Package Manager synaptic
e lo strumento di partizionamento Gparted gparted
. Uso anche MakeUSB per creare unità di avvio USB mkusb
, ma può eseguire le parti che richiedono autorizzazioni elevate senza grafica.)
xhost
e sudo -H
Esiste una soluzione alternativa per consentire ai programmi applicativi grafici di proprietà di utenti diversi da quelli che hanno effettuato l'accesso a Wayland,
xhost +si:localuser:root
gksu
e gksudo
non sono in bundle con Ubuntu standard e non funzionano qui, ma funzionano in Xorg.
Invece puoi usare
sudo -H
È una buona idea prevenire programmi applicativi grafici di proprietà di altri utenti dopo l'utente che ha effettuato l'accesso,
xhost -si:localuser:root
gvfs admin backend
In Ubuntu 17.10 (gvfs> = 1.29.4) puoi usare il backend di amministrazione di gvfs. Si noti che è necessario il percorso completo,
gedit admin:///path/to/file
In teoria, il metodo di backend di amministrazione di gvfs (che usa polkit) è migliore e più sicuro (di xhost
e xudo -H
), indipendentemente dall'interfaccia utente che si utilizza.
Non eseguire l'intera applicazione come root. L'escalation dei privilegi avviene solo quando strettamente necessario. Vedi il seguente link e link da esso,
nautilus-admin
È anche possibile utilizzare nautilus-admin
per operazioni sui file con autorizzazioni elevate e utilizzare gedit
con autorizzazioni elevate. Questo è descritto nella seguente risposta AskUbuntu,
Accesso temporaneo per root al desktop Wayland tramite la funzione gks
Per favore, evita sudo GUI-program
. Può far sì che il sistema sovrascriva i file di configurazione per il proprio ID utente normale con root
la configurazione e impostare la proprietà e le autorizzazioni per adattarsi root
e bloccare il proprio ID utente normale. È necessario eseguire le applicazioni della GUI con sudo -H
cui vengono scritti i file di configurazione nella root
home directory di /root
. Esempio:
sudo -H gedit myfile.txt
Ma c'è il rischio che tu dimentichi -H
. Invece puoi creare una funzione, per esempiogks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
e conservalo nel tuo ~/.bashrc
vicino agli alias. Quindi puoi correre
gks gedit myfile.txt
in un modo simile a come hai usato gksudo
prima.
analisi
È possibile verificare come sudo
, sudo -H
e gks
il lavoro con i seguenti comandi
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 ~ $
ed ovviamente
gks gedit myfile.txt
secondo l'esempio nella sezione precedente.
Metodo che funziona tramite il menu Alt-F2 e Gnome Shell
Invece di aggiungere una semplice funzione a una riga ~/.bashrc
, puoi creare un sistema che funziona anche senza bash. Può essere comodo da usare, ma è più complicato da configurare. Si noti che è necessario installare solo una delle alternative, poiché la funzione di una riga disturberà l'utilizzo di questo sistema più complicato.
Tre file
Lo shellscript 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;
Il file desktop 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
Il file icona gks.svg
è simile al seguente:
Puoi scaricare il file icona o un tarball con tutti e tre i file da questo link,
wiki.ubuntu.com/Wayland/gks
Copia i file [estratti o copiati e incollati] nelle seguenti posizioni,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Esci / accedi o riavvia e dovrebbe esserci un'icona del desktop funzionante. Funzionerà da una finestra terminale come con la semplice soluzione con la funzione.
Alt F2 scatola:
Menu di Gnome Shell:
console gks e gparted:
Script personalizzato e file desktop
Se hai solo poche applicazioni GUI, che richiedono autorizzazioni elevate, puoi creare script personalizzati e file desktop per loro ed evitare di immettere il comando (nome dell'applicazione). Dovresti solo inserire la password, il che non è più difficile rispetto alle versioni precedenti di Ubuntu (dovresti comunque inserire la password).
Esempio con il semplice programma GUI xlogo
fornito con il pacchetto del programma x11-apps
:
Lo shellscript gkslogo
(semplificato rispetto a 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;
Il file desktop 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
Ero pigro e ho usato lo stesso file icona gks.svg
Copia i file [copiati e incollati] nelle seguenti posizioni,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [logo] console e xlogo:
gksudo
non funzionerà in una sessione Wayland , puoi passare a una sessione Xorg e provare.