Solutions
À Wayland, il est souvent difficile d’exécuter des programmes d’application avec des autorisations élevées (sudo -H, gksu ...). C'est une bonne idée de faire de telles tâches avec des outils en ligne de commande.
Mais 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 de ces 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 mkusb
, mais il peut exécuter les parties qui nécessitent des autorisations élevées sans graphiques.)
xhost
et sudo -H
Il existe une solution de contournement 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 sous Xorg.
Au lieu de cela, vous pouvez utiliser
sudo -H
C’est une bonne idée d’empêcher par la suite les programmes d’application graphiques appartenant à d’autres utilisateurs que l’utilisateur connecté,
xhost -si:localuser:root
backend admin gvfs
Dans Ubuntu 17.10 (gvfs> = 1.29.4), vous pouvez utiliser le backend admin de gvfs. Notez que vous avez besoin du chemin complet.
gedit admin:///path/to/file
En théorie, la méthode backend de gvfs (qui utilise polkit) est meilleure et plus sûre (que xhost
et xudo -H
), quelle que soit l'interface utilisateur que vous utilisez.
Vous n'exécutez pas toute 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 de celui-ci,
nautilus-admin
Il est également possible d'utiliser nautilus-admin
des opérations de fichiers avec des autorisations élevées et gedit
avec des autorisations élevées. Ceci est décrit dans la réponse suivante à AskUbuntu,
Accès temporaire pour root au bureau Wayland via une fonction gks
S'il vous plaît éviter sudo GUI-program
. Cela peut entraîner le remplacement par le système des fichiers de configuration correspondant à votre ID utilisateur habituel avec root
la configuration de s, ainsi que la définition de la propriété et des autorisations pour adapter root
et verrouiller votre ID utilisateur habituel. Vous devez exécuter des applications graphiques avec sudo -H
, qui écrit les fichiers de configuration dans root
le répertoire de base de /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 exemplegks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
et stockez-le dans vos ~/.bashrc
proches pseudonymes. Ensuite, vous pouvez courir
gks gedit myfile.txt
d'une manière similaire à celle utilisée gksudo
auparavant.
Essai
Vous pouvez vérifier sudo
, sudo -H
et le gks
travail 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 sur
gks gedit myfile.txt
selon l'exemple de la section précédente.
Méthode fonctionnant via les menus Alt-F2 et Gnome Shell
Au lieu d’ajouter une simple fonction à une ligne ~/.bashrc
, vous pouvez créer un système fonctionnant également sans bash. Il peut être pratique à utiliser, mais son installation est plus compliquée. 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 complexe.
Trois fichiers
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 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 icône ou une archive contenant les trois fichiers à partir de ce lien,
wiki.ubuntu.com/Wayland/gks
Copiez les fichiers [extraits ou copiés et 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 une icône de bureau devrait apparaître. Cela fonctionnera à partir d'une fenêtre de terminal comme avec la solution simple avec la fonction.
Alt F2 boîte:
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 pour ces applications et éviter de saisir la commande (nom de l'application). Vous ne feriez que saisir le mot de passe, ce qui n’est pas plus difficile par rapport aux versions précédentes d’Ubuntu (vous devez quand même saisir le mot de passe).
Exemple avec le programme d'interface graphique simple xlogo
fourni avec le package de programme 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 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 utilisais le même fichier d'icônes gks.svg
Copiez les fichiers [copiés et collés] aux emplacements suivants,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [logo] console et xlogo:
gksudo
ne fonctionnera pas dans une session Wayland , vous pouvez passer à une session Xorg et essayer.