J'ai défini 2 comptes d'utilisateurs:
- une avec les privilèges d'administrateur (avec le
sudo
droit) => permet de l'appeleradminuser
. - un 2e sans aucun privilège => permet de l'appeler
et je configure la connexion automatique sur ce 2e utilisateur .
normaluser
normaluser
Ainsi, lorsque j'ouvre une normaluser
session et que je veux exécuter une application avec le privilège administrateur,
j'ouvre un terminal Ctrl+ Alt+ Tet:
su adminuser
sudo anyapplication ...
Cela fonctionne bien, sans avoir à quitter la normaluser
session (pas besoin 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
normaluser
est parfois utilisé par quelqu'un qui ne devrait pas être capable d'exécuter des commandes avecroot
, faire en sortenormaluser
qu'un non-administrateur améliore définitivement la sécurité . Les dangers de donner à quelqu'un un compte d'utilisateur sans lui faire savoir son propre mot de passe vont bien au-delà de la situation de Boris en termes de complexité et de tracas. Si vous souhaitez une explication complète de la cause de ce problème, je suggère de poser une nouvelle question, mais 3 des raisons en sont qu'un utilisateur doit pouvoir verrouiller et déverrouiller l'écran, se déconnecter et se reconnecter avec un type de session différent, et déchiffrer lesecryptfs
données.normaluser
et leadminuser
réglage est la règle d'or.normaluser
compte pour le travail quotidien et leadmin
compte pour l'exécution de tâches administratives, ce qui n'améliorait vraiment rien. Sur une machine multi-utilisateur, cela est tout à fait logique.Réponses:
PAM peut s'en occuper
Cela fonctionne pour moi sur Ubuntu 16.04 (edit: cela fonctionne aussi sur 18.04 LTS):
mettre la ligne:
Quelque part dans:
et / ou
puis en faisant "su -" ou "sudo su -", je peux utiliser des applications graphiques en tant que root.
la source
sux
etgksu
qui ne sont plus disponibles.Terminologie
Dans cette réponse:
normaluser
est un utilisateur normal qui n'est pas administrateur et ne peut pas exécuter les commandesroot
avecsudo
.admin
est un administrateur qui peut exécuter des commandes commeroot
avecsudo
. (Bien entendu, toute commande graphique doit utiliser une interface graphique telle quegksu
/gksudo
, et nonsudo
directement.)anyapplication
est le nom de l'application graphique quinormaluser
veut s'exécuter en tant queroot
.normaluser
saitadmin
le mot de passe et a (probablement) été informé qu'il pourrait l'utiliser à cette fin.Le problème
La cause de votre problème, et la raison pour la plupart des autres réponses à ce jour ne pas le travail (à l'exception de Marty Fried de excellente réponse ), est:
gksu
peut être configuré pour utiliser l'unesudo
ousu
comme arrière - plan. Le comportement par défaut degksu
dans Ubuntu est d’agir comme une interface poursudo
, pas poursu
. C'est à dire que, par défaut,gksu
etgksudo
se comportent exactement les mêmes . Voir la page de manuel .normaluser
n'est pas un administrateur et ne peut donc pas exécuter de commandes commeroot
avecsudo
.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 être en mesure d'utiliser votre mot de passe pour effectuer des actions en tant que personnes qui ne le sont pas, cela signifie ne pas être administrateur .normaluser
, À condition qu'il n'est pas un compte invité, peut exécuter des commandes comme un autre utilisateur avecsu
, mettre dans le mot de passe d' un autre utilisateur . Maisgksu
agit comme une interface poursudo
, passu
.normaluser
ne peut exécuter directement aucune commande en tant queroot
, carnormaluser
ne peut pas utilisersudo
, et personne ne peut devenirroot
avecsu
car il n'y a pas deroot
mot de passe .La solution
La solution nécessite l'écriture d'une commande qui effectue deux étapes d'authentification:
normaluser
doit deveniradmin
pour exécuter une commande graphique. Pour ce faire, vousnormaluser
devez l'exécutergksu
avec l'-w
indicateur afin qu'il s'exécute en mode suo au lieu du mode sudo par défaut , et l'-u
indicateur d'exécution de la commande auadmin
lieu deroot
.admin
invoke doitgksu
sans le-w
drapeau à utilisersudo
pour devenirroot
.Voici la commande (oui, je l'ai testée ;-) ):
On vous demandera un mot de passe deux fois :
admin
le mot de passe, pour laissernormaluser
exécuter une commande commeadmin
avec lesu
backend.admin
le mot de passe, pour laisseradmin
exécuter une commande commeroot
avec lesudo
backend.C'est vrai. Vous entrez
admin
le mot de passe deux fois.Notes diverses:
gksu
pargksudo
pour le rendre moins déroutant. Dans Ubuntu, ils sont équivalents. (Vous pouvez également remplacer le premiergksu
pargksudo
, mais ce 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 ne doit pas être utilisée car sudo-mode est la valeur par défaut.xclock
est une belle application simple de fenêtre d'horloge.la source
sudo
le faire fonctionner. Exemple:sudo gksu -w -u thedude gksu xclock
kdesudo
cherche à travailler plus propre, au moins sur KUbuntu.gksu
n’est plus disponibleUne 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 d'applications x à partir de l'utilisateur usurpé. Il est dans le référentiel standard et peut être installé en entrant
sudo apt-get install sux
en 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
:la source
sux
Ubuntu 14.04 64bits;(
pkexec
Il existe une alternative omniprésente à kdesudo et à gksu -
pkexec
qui provient d'unpolicykit-1
paquet requis par de nombreux paquets.la source
sudo
polkit), qui connaît le mot de passe d’un administrateur (c’est-à-dire de quelqu'un qui peut devenir root avecsudo
polkit), peut utiliserpkexec
pour lancez un programme graphique en tant que root. C'est ce que la question ici pose. Il est pas clair pour moi que lepkexec
fera, au moins sans modifier largement les fichiers de configuration, d' autant plus quepkexec
ne peut généralement pas être utilisé pour exécuter des programmes graphiques arbitraires (sans profils de polkit) du tout . Y a-t-il un moyen?pkexec command
et cela fonctionne. La configuration est dans le fichier/usr/share/polkit-1/actions/org.freedesktop.policykit.policy
qui est installé par le paquet nommé. Et il vous oblige en fait à écrire le mot de passe administrateur une seule foisAu lieu de
Je vous suggère d'essayer
gksu -u admin anyapplication
, où vous faites tout en utilisant lagksu
commande elle-même. 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 l' administrateur .la source
normaluser
exécuté , le systèmegksu -u admin anyapplication
inviteranormaluser
le mot de passe àadmin
utiliser lesudo
backend, tout comme legksu anyapplication
feraitnormaluser
le mot de passe àroot
utiliser lesudo
backend. Les deux vont échouer pour la même raison -normaluser
n'a pas le pouvoir d'exécuter des commandes avecsudo
.Voici la commande pour accomplir ceci.
Exécutez-le sans courir en
su
premier. Vous devez uniquement exécuter la commande ci-dessus à partir d'une session utilisateur normale et l'application s'exécutera en tant que root.la source
normal
mot de passe utilisateur - Je reçois le message "Impossible de lancer en tant qu'utilisateur root"superuser/admin
mot de passe - Je reçois le message "mot de passe incorrect, essayez à nouveau"Tu devrais utiliser:
Cela appelle d'abord une requête graphique de mot de passe (le mot de passe de votre utilisateur), puis lance l'application GUI en tant qu'utilisateur root (je viens d'essayer, c'est vraiment le cas. Drôle: j'ai
gksu AppName
immédiatement essayé par la suite, et cela a fonctionné aussi bien tel qu'il est comme le suggère probablement le préfixe "gk" (je ne suis donc pas tout à fait sûr de la localisation de votre problème).la source
sudo
mode texte fonctionne pour lui.Il n'y a qu'un seul super utilisateur et c'est root.
L'utilisateur 1 est un administrateur et a des droits sudo.
L'utilisateur 2 n'est pas un administrateur et n'a pas de droits sudo.
Essayez de vous connecter en tant qu'utilisateur 1, puis utilisez la commande
(en remplaçant nom-app par le nom de l'application)
J'espère que cela aide - faites-le-moi savoir. : o)
EDIT: Plus d'infos à la demande
S'il ne s'agit que de vous sur l'ordinateur, l'
utilisation de l'utilisateur 1 (qui est autorisé à utiliser sudo)
n'est pas différente de celle de l'utilisateur 2 (qui n'a pas l'autorisation d'utiliser sudo).
L'utilisateur 1 a les mêmes droits que l'utilisateur 2.
À moins que l'utilisateur 1 n'émette une commande précédée de sudo et / ou fournisse son mot de passe pour permettre aux applications de s'exécuter avec des privilèges root.
La seule différence est que l'utilisateur 2 ne peut pas exécuter d'applications en tant que root.
J'espère que cela aide à l'expliquer un peu pour vous. : o)
la source
su admin
+sudo ...
exemplesudo vi file
, sauf pour les applications avec interface graphique