Solutions
Dans Wayland, il est souvent difficile d'exécuter des programmes d'application GUI avec des permissions élevées (sudo -H, gksu ...). C'est une bonne idée d'effectuer de telles tâches avec des outils en ligne de commande.
Mais il existe des solutions de contournement, si vous disposez d'un outil GUI qui fonctionne bien pour vous et qui nécessite des autorisations élevées. (J'utilise deux de ces outils standard : le Synaptic Package Manager, synaptic
et l'outil de partitionnement Gparted, gparted
. J'utilise MakeUSB pour créer des clés de démarrage USB, mkusb
mais il peut exécuter les parties qui nécessitent des autorisations élevées sans graphiques).
gvfs admin backend
Le backend gvfs admin est un bon outil pour les permissions élevées avec des outils GUI. Dans Ubuntu 17.10 (gvfs >= 1.29.4) et les versions plus récentes, vous pouvez utiliser le backend gvfs admin. Notez que vous avez besoin du chemin complet, par exemple
thunar admin:///path/to/directory
gedit admin:///path/to/file
En théorie, la méthode gvfs admin backend (qui utilise polkit) est meilleure et plus sûre (que la méthode xhost
y sudo -H
), quelle que soit l'interface utilisateur utilisée.
Vous n'exécutez pas l'ensemble de l'application en tant que root. L'escalade des privilèges n'a lieu qu'en cas de nécessité absolue. Voir le lien suivant et les liens qui en découlent,
xhost
y sudo -H
-
Il existe une solution pour autoriser les programmes d'applications graphiques appartenant à d'autres utilisateurs que l'utilisateur connecté dans Wayland,
xhost +si:localuser:root
-
gksu
y gksudo
ne sont pas fournis avec Ubuntu standard et ne fonctionnent pas ici, mais ils fonctionnent dans Xorg.
Au lieu de cela, vous pouvez utiliser
sudo -H
Edita:
-H n'est plus nécessaire (dans 20.04 LTS et les versions plus récentes)
Avant la version 20.04 (ou peut-être 19.10, je ne me souviens plus quand), l'utilisation de sudo pour une application GUI, en particulier le gestionnaire de fichiers, pouvait modifier les droits d'accès des la propriété des fichiers et des dossiers de votre domicile à l'utilisateur root, ce qui complètement votre capacité à vous connecter au système en tant qu'utilisateur. Les changements apportés à la l'utilisation de sudo par le système signifie que ce risque a disparu. Il n'y a donc plus de danger pour ce qui est de ce problème.
fin de l'édition
-
Il est conseillé d'empêcher les programmes d'application graphique appartenant à d'autres utilisateurs que l'utilisateur connecté d'être utilisés par la suite,
xhost -si:localuser:root
nautilus-admin
Il est également possible d'utiliser nautilus-admin
pour les opérations sur les fichiers avec des autorisations élevées et d'utiliser gedit
avec des autorisations élevées. Ceci est décrit dans la réponse AskUbuntu suivante,
Accès temporaire de l'utilisateur root au bureau Wayland via la fonction gks
À éviter sudo GUI-program
. Cela peut amener le système à écraser les fichiers de configuration de votre identifiant habituel par des fichiers root
et définir la propriété et les permissions pour qu'elles correspondent à la configuration de root
et verrouillez votre identifiant habituel. Vous devez exécuter les applications GUI avec sudo -H
qui écrit les fichiers de configuration dans root
Répertoire personnel de l'utilisateur /root
. Exemple :
sudo -H gedit myfile.txt
Mais vous risquez d'oublier -H
. Au lieu de cela, vous pouvez créer une fonction, par exemple gks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
et le stocker dans votre ~/.bashrc
près des alias. Vous pouvez ensuite exécuter
gks gedit myfile.txt
de la même manière que vous avez utilisé gksudo
avant.
Essais
Vous pouvez vérifier comment sudo
, sudo -H
y gks
travailler avec les commandes suivantes
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 ~ $
et bien sûr
gks gedit myfile.txt
selon l'exemple de la section précédente.
Méthode qui fonctionne via Alt-F2 et le menu Gnome Shell.
Au lieu d'ajouter une simple fonction d'une ligne à ~/.bashrc
Il est possible de créer un système qui fonctionne également sans bash. Il peut être pratique à utiliser, mais il est plus compliqué à mettre en place. Veuillez noter que vous ne devez installer qu'une seule des alternatives, car la fonction à une ligne perturbera l'utilisation de ce système plus compliqué.
Trois dossiers
Le 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;
Le fichier du bureau 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
Le fichier d'icônes gks.svg
ressemble à ceci :
Vous pouvez télécharger le fichier d'icônes ou une archive contenant les trois fichiers à partir de ce lien,
wiki.ubuntu.com/Wayland/gks
Copiez les fichiers [extraits ou copiés-collés] aux emplacements suivants,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Déconnectez-vous, connectez-vous ou redémarrez, et l'icône du bureau devrait fonctionner. Cela fonctionnera à partir d'une fenêtre de terminal comme dans la solution simple avec la fonction.
Alt F2 boîte :
Menu Gnome Shell :
gks console et gparted :
script et fichier de bureau personnalisés
Si vous n'avez que quelques applications GUI qui nécessitent des autorisations élevées, vous pouvez créer des scripts et des fichiers de bureau personnalisés pour elles et éviter d'entrer la commande (nom de l'application). Vous n'aurez qu'à entrer le mot de passe, ce qui n'est pas plus difficile que dans les versions précédentes d'Ubuntu (vous devriez de toute façon entrer le mot de passe).
Exemple avec le programme GUI simple xlogo
qui accompagne le paquet de programmes x11-apps
:
Le shellscript gkslogo
(simplifié par rapport à 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;
Le fichier du bureau 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
J'ai été paresseux et j'ai utilisé le même fichier d'icônes gks.svg
Copiez les fichiers [copiés et collés] aux endroits suivants,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks[logo] console et xlogo :