Solutions
Dans Wayland, il est souvent difficile d’exécuter des programmes d’application graphique avec des autorisations élevées (sudo -H, gksu ...). C'est une bonne idée de faire de telles tâches avec les outils de ligne de commande.
Il existe des solutions de contournement, si vous avez un outil graphique, qui fonctionne bien pour vous et nécessite des autorisations élevées. (J'utilise deux outils standard: le gestionnaire de paquets Synaptic, synaptic
et l'outil de partitionnement Gparted, gparted
. J'utilise MakeUSB pour créer des lecteurs de démarrage USB, < strong> mkusb
également, mais il peut exécuter les parties nécessitant des autorisations élevées sans éléments graphiques.
xhost
et sudo -H
-
Il existe une solution pour autoriser les programmes d’application graphiques appartenant à d’autres utilisateurs que l’utilisateur connecté dans Wayland,
xhost +si:localuser:root
-
gksu
et 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
-
C'est une bonne idée d’empêcher les applications graphiques appartenant à d’autres utilisateurs que l’utilisateur connecté par la suite,
xhost -si:localuser:root
backend admin gvfs
Dans Ubuntu 17.10 (gvfs & gt; = 1.29.4), vous pouvez utiliser l’administrateur gvfs. Notez que vous avez besoin du chemin complet,
gedit admin:///path/to/file
En théorie, la méthode gvfs admin backend (qui utilise polkit) est meilleure et plus sûre (que xhost
et xudo -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 de privilèges ne se produit que lorsque cela est strictement nécessaire. Voir le lien suivant et les liens à partir de celui-ci,
nautilus-admin
Il est également possible d'utiliser nautilus-admin
pour les opérations de 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 pour root au bureau Wayland via la fonction gks
Veuillez éviter sudo GUI-program
. Cela peut amener le système à écraser les fichiers de configuration de votre ID utilisateur habituel avec la configuration de root
et à définir la propriété et les autorisations correspondant à root
et à verrouiller votre ID utilisateur habituel. Vous devez exécuter les applications GUI avec sudo -H
, qui écrit les fichiers de configuration dans le répertoire de base root
/root
. Exemple:
sudo -H gedit myfile.txt
Mais il y a un risque que vous oubliez -H
. Au lieu de cela, vous pouvez créer une fonction, par exemple gks
gks () { xhost +si:localuser:root; sudo -H "[email protected]"; xhost -si:localuser:root; }
et stockez-le dans votre ~/.bashrc
près des alias. Ensuite, vous pouvez courir
gks gedit myfile.txt
de la même manière que vous avez utilisé gksudo
auparavant.
Test
Vous pouvez vérifier comment sudo
, sudo -H
et gks
fonctionnent avec les commandes suivantes
[email protected] ~ $ sudo bash -c "echo ~"
/home/sudodus
[email protected] ~ $ sudo -H bash -c "echo ~"
/root
[email protected] ~ $ gks () { xhost +si:localuser:root; sudo -H "[email protected]"; xhost -si:localuser:root; }
[email protected] ~ $ gks bash -c "echo ~"
localuser:root being added to access control list
/root
localuser:root being removed from access control list
[email protected] ~ $
et bien sûr
gks gedit myfile.txt
selon l'exemple de la section précédente.
Méthode qui fonctionne via les menus Alt-F2 et Gnome Shell
Au lieu d’ajouter une fonction simple à une ligne à ~/.bashrc
, vous pouvez créer un système qui fonctionne également sans bash. Cela peut être pratique à utiliser, mais plus compliqué à mettre en place. Veuillez noter que vous ne devez installer qu'une des alternatives, car la fonction à une ligne perturbera l'utilisation de ce système plus compliqué.
Trois fichiers
Le script shells 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 "[email protected]"
fi
xhost -si:localuser:root;
Le fichier de 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ône gks.svg
ressemble à ceci:
Vous pouvez télécharger le fichier d’icône ou une archive contenant les trois fichiers de ce lien,
wiki.ubuntu.com/Wayland/gks
Copiez le [extrait ou copié & amp; collé] fichiers 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 il devrait y avoir une icône de bureau qui fonctionne. Cela fonctionnera à partir d'une fenêtre de terminal comme avec la solution simple avec la fonction.
Alt F2 :
Menu Gnome Shell:
console gks et gparted:
Script personnalisé et fichier de bureau
Si vous ne disposez que de quelques applications graphiques nécessitant des autorisations élevées, vous pouvez créer des scripts et des fichiers de bureau personnalisés et éviter d’entrer la commande (nom de l’application). Vous ne devez entrer que le mot de passe, ce qui n'est pas plus difficile par rapport aux versions précédentes d'Ubuntu (vous devez tout de même entrer le mot de passe).
Exemple avec le programme graphique simple xlogo
fourni avec le package de programme x11-apps
:
Le script shells 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 de 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'étais paresseux et j'ai utilisé le même fichier icône gks.svg
Copiez le [copié & amp; collé] fichiers aux emplacements suivants,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
console gks [logo] et xlogo: