J'ai défini 2 comptes d'utilisateurs:
Sudo
right) => permet de l'appeler adminuser
.normaluser
normaluser
.Donc, quand j'ouvre une session normaluser
et que je veux exécuter une application avec le privilège admin,
J'ouvre un terminal Ctrl+Alt+T et:
su adminuser
Sudo anyapplication ...
Cela fonctionne correctement, sans avoir à quitter la session normaluser
(il n'est pas nécessaire d'ouvrir une adminuser
session).
Mais que dois-je faire si l'application doit fonctionner avec une interface utilisateur graphique?
Je pensais à ce sujet:
su adminuser
gksu anyapplication ...
mais je reçois
** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0
Cela fonctionne pour moi sur Ubuntu 16.04 (edit: cela fonctionne aussi sur 18.04 LTS):
mettre la ligne:
session optional pam_xauth.so
quelque part dans:
/etc/pam.d/su
et/ou
/etc/pam.d/Sudo
puis en faisant "su -" ou "Sudo su -", je peux utiliser des applications graphiques en tant que root.
Dans cette réponse:
normaluser
est un utilisateur normal qui n'est pas administrateur et ne peut pas exécuter de commandes en tant que root
avec Sudo
.admin
est un administrateur qui peut exécuter des commandes en tant que root
avec Sudo
. (Bien sûr, toutes les commandes graphiques devraient utiliser une interface graphique telle que gksu
/gksudo
, et non pas directement Sudo
.)anyapplication
est le nom de l'application graphique normaluser
== veut s'exécuter en tant que root
. normaluser
sait admin
le mot de passe de == et a (probablement) été informé qu'il pourrait l'utiliser à cette fin.La cause de votre problème, et la raison pour laquelle la plupart des autres réponses n’ont pas fonctionné jusqu’à présent (à l’exception de Marty Fried 's excellente réponse ), est la suivante:
gksu
peut être configuré pour utiliser soit Sudo
, soit su
comme serveur principal. Le comportement par défaut de gksu
dans Ubuntu consiste à agir comme interface pour Sudo
, et non pour su
. Autrement dit, par défaut, gksu
et gksudo
se comportent exactement de la même manière . Voir la page de manuel .normaluser
n'est pas un administrateur et ne peut donc pas exécuter de commandes en tant que root
avec Sudo
. Sudo
demande le mot de passe de l'utilisateur qui l'exécute , pas le mot de passe de l'utilisateur qu'il souhaite devenir . Ne pas pouvoir utiliser votre mot de passe pour effectuer des actions en tant que personnes qui ne vous appartiennent pas est ce que signifie ne pas être administrateur .normaluser
, à condition qu'il ne s'agisse pas d'un compte Invité, peut exécuter les commandes en tant qu'utilisateur différent avec su
, en mettant dans le mot de passe d'un autre utilisateur . Mais gksu
agit comme une interface pour Sudo
, pas su
.normaluser
ne peut pas directement exécuter une commande en tant que root
, car normaluser
ne peut pas utiliser Sudo
, et personne ne peut devenir root
avec su
car ) il n'y a pas de mot de passe root
.La solution nécessite l'écriture d'une commande qui effectue deux étapes d'authentification:
normaluser
doit devenir admin
pour exécuter une commande graphique. Pour ce faire, normaluser
doit exécuter gksu
avec l'indicateur -w
pour qu'il soit exécuté su-mode au lieu de la valeur par défaut Sudo-mode , et l'indicateur -u
qui permet d'exécuter la commande sous la forme admin
au lieu de root
.admin
doit appeler gksu
sans l'indicateur -w
pour que Sudo
devienne root
.Voici la commande (oui, je l’ai testée ; -) ):
gksu -w -u admin gksu anyapplication
Un mot de passe vous sera demandé deux fois :
admin
, pour permettre à normaluser
exécuter une commande sous la forme admin
avec le backend su
.admin
, pour laisser admin
exécuter une commande sous la forme root
avec le backend Sudo
.C'est vrai. Vous entrez le mot de passe admin
deux fois.
Notes diverses:
gksu
par gksudo
pour le rendre moins déroutant. Dans Ubuntu, ils sont équivalents. (Vous pouvez également remplacer le premier gksu
par gksudo
, mais cela serait extrêmement contre-intuitif et déroutant.)-w
est la forme abrégée de --su-mode
.-S
est la forme abrégée de --Sudo-mode
mais ni l'un ni l'autre ne doit être utilisé car Sudo-mode est la valeur par défaut.gksu -w -u admin gksu xclock
xclock
est une application simple et agréable de fenêtre d’horloge.Une façon qui fonctionnera probablement est d'utiliser "sux" plutôt que "su" lorsque vous basculez pour la première fois sur l'utilisateur admin. sux corrige le problème de l'exécution de x applications à partir de l'utilisateur usurpé. Il se trouve dans le référentiel standard et peut être installé en entrant Sudo apt-get install sux
sur une ligne de commande.
Ensuite, utilisez simplement "sux" au lieu de "su" et cela devrait fonctionner comme vous le souhaitez.
Permet de réutiliser l'exemple de l'application xclock
:
sux admin
gksu xclock
Il existe une alternative omniprésente à kdesudo et gksu - pkexec
qui provient du package policykit-1
qui est requis par de nombreux packages.
Au lieu de
su admin gksu n'importe quelle application ...
Je vous suggère d'essayer gksu -u admin anyapplication
, où vous faites tout en utilisant la commande gksu
. Veuillez également noter que vous devez entrer le mot de passe de l'utilisateur mentionné dans la commande, c'est-à-dire que, dans ce cas, vous devez entrer le mot de passe de admin.