Comment obtenir l'invite de mot de passe sudo GUI sans ligne de commande?

10

Actuellement, pour toutes mes commandes qui nécessitent un accès root, je dois les taper sur une ligne de commande.

Je voudrais que l'interface graphique m'invite à saisir mon mot de passe, lorsque sudo est requis, au lieu d'avoir à taper les commandes à partir de la ligne de commande.

Existe-t-il un moyen d'activer cela? Auparavant, une version du bureau Ubuntu avait cette fonctionnalité prête à l'emploi.

Cette version d'Ubuntu (que j'utilise actuellement) a été mise à niveau à partir d'une installation de serveur.

J'ajouterai, mon compte utilisateur est déjà ajouté au groupe sudo. Ainsi, je peux exécuter des commandes telles que sudo geditou, sudo apt-getmais je ne peux pas installer de logiciel dans Ubuntu Software Center.

Sean
la source

Réponses:

10

TL; DR: essayez d'installer les packages policykit-1et policykit-1-gnome.

Vous avez probablement besoin de polkit (alias PolicyKit).

La plupart des utilitaires d'administration système graphique d'Ubuntu, y compris le Centre logiciel, peuvent généralement être exécutés sans sudoou quelque chose de similaire. Vous les exécutez simplement de la même manière que vous exécuteriez n'importe quel programme.

Quand vient le temps d'effectuer une tâche nécessitant des privilèges root, ils utilisent polkit pour effectuer les actions requises. polkit est un mécanisme distinct de sudo, pour permettre aux administrateurs d'effectuer des actions en tant que root. Il est installé sur les systèmes Ubuntu de bureau mais par défaut ne fait pas partie des installations d'Ubuntu Server.

Ainsi, le comportement normal du Centre logiciel est que vous pouvez l'invoquer simplement car software-centeril ne vous invitera pas à vous authentifier à ce moment-là, mais lorsque vous lui direz d'installer ou de supprimer un logiciel, il vous invitera (graphiquement) à vous authentifier.

Il ressort de votre description que votre système a commencé comme un système Ubuntu Server sans interface graphique, puis vous avez installé une interface graphique. Les packages policykit-1Installez policykit-1 et policykit-1-gnomeInstallez policykit-1-gnome n'ont probablement pas été installés. Si vous installez le, polkit commencera très probablement à travailler pour Software Center et d'autres utilitaires de ce type.

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome

Ensuite, vous devriez pouvoir exécuter:

software-center

(Ou sélectionnez graphiquement le Centre logiciel comme le prévoit l'environnement de bureau que vous avez installé.)

Si vous voulez un système de bureau Ubuntu entièrement fonctionnel, je vous recommande d'installer le métapaquet pour la "saveur" d'Ubuntu dans laquelle vous souhaitez transformer votre système. Fondamentalement, si vous voulez un système de bureau Ubuntu standard, installez ubuntu-desktopInstaller ubuntu-desktop .

sudo apt-get update
sudo apt-get install ubuntu-desktop

Cela devrait combler les diverses lacunes, comme l'absence de polkit, qui accompagnent l'installation d'une interface graphique plus minimale sur votre système de serveur. D'un autre côté, si vous préférez une interface graphique plus minimale, vous pouvez simplement installer ces packages polkit.

Pour plus d'informations, voir Comment exécuter Ubuntu Server avec une interface graphique?

sudo avec authentification graphique.

Si vous avez vraiment besoin d'exécuter des commandes en tant que root mais que vous obtenez une boîte de dialogue d'authentification graphique, ce que vous recherchez est gksudo( ougksu ). Ceci est fourni par le paquet gksuInstaller gksu . C'est une interface graphique pour sudo.

gksudoEst généralement utilisé pour exécuter des applications graphiques en tant que root (ou un autre utilisateur que l'utilisateur qui les lance). Mais vous pouvez également l'utiliser pour exécuter des commandes non graphiques - à condition que les commandes puissent être exécutées avec sudo.

Vous pouvez exécuter à gksudopartir d'un terminal, mais ce n'est pas obligatoire. Vous pouvez l'exécuter à partir de la boîte de dialogue Alt+ F2(exécuter la commande) ou le placer dans la Exec=ligne d'un .desktopfichier (ou de n'importe quelle autre manière d'exécuter des programmes graphiques).

Notez que vous devriez envisager d'utiliser gksudopour exécuter des applications graphiques en tant que root même lorsque vous les exécutez à partir d'un terminal, car des commandes telles que sudo ...où se ...trouve une application graphique peuvent en fait casser les configurations par application des utilisateurs non root qui les exécutent. (Heureusement, c'est réparable.) sudo geditEst particulièrement notoire.

Pour plus d'informations sur le problème sudodes applications graphiques et que faire à la place, voir:

Il existe également un moyen graphique basé sur polkit ... pour les commandes non graphiques.

gksudofonctionne très bien pour exécuter des programmes graphiques et non graphiques. Vous devriez probablement l'utiliser.

Mais une alternative, en utilisant polkit au lieu de sudoet ne fonctionnant que pour des programmes non graphiques , est pkexec.

Par exemple, si vous exécutez pkexec touch /root/foo.txt, vous serez invité avec une boîte de dialogue d'authentification graphique, et si l'authentification réussit, touch /root/foo.txtest exécutée, créant ( ou rafraîchissant ) foo.txtdans le /rootdossier.

  • pkexecutilisera une boîte de dialogue non graphique, nécessitant un terminal, dans le cas où il ne peut pas créer une boîte de dialogue graphique. Mais il est peu probable que cela se produise si vous l'exécutez via une fonctionnalité fournie par votre environnement graphique ou de bureau.
  • Pourquoi ne pkexecfonctionne que pour les programmes non graphiques? En fait, il exécute également des programmes graphiques, mais uniquement si polkit a été spécialement configuré pour le permettre - ce qui n'est généralement pas fait. Voir man pkexec(et la version en amont, avec des captures d'écran ), cette réponse et cette réponse pour quelques détails, si vous êtes intéressé.

sudovs polkit (quelques détails techniques, seulement si cela vous intéresse)

Un nouveau gksu/ gksudoutilisera polkit au lieu de sudofaire son travail , bien que cette version n'ait pas été largement adoptée. Je l'amène principalement à recommander le READMEfichier dans son code source (écrit par Gustavo Noronha Silva), ce qui explique les différences importantes entre sudoet polkit. Pour en citer brièvement:

PolicyKit résout le problème d'une application nécessitant des privilèges plus élevés en fournissant des fonctionnalités permettant aux utilisateurs de s'authentifier et aux applications de vérifier les informations d'authentification et d'autorisation. L'application doit être structurée de manière à ce que toutes les opérations privilégiées soient effectuées par un (de préférence) petit service D-Bus, commandé par le code non privilégié. Toutes les "actions" qui sont effectuées nécessitent une autorisation appropriée, qui est gérée via Policykit.

4. Pourquoi maintenir gksu?

Ainsi, cela rend essentiellement gksu inutile, car les applications n'ont plus besoin de s'exécuter en tant qu'utilisateur privilégié et l'authentification de l'utilisateur est effectuée par l'agent d'authentification de PolicyKit. Mais les applications doivent être refactorisées pour adopter cette nouvelle structure, et dans certains cas, ce que vous voulez est en fait quelque chose qui exécute des programmes en tant que root.

Ces questions sous-tendent la situation dans laquelle je pense que vous vous trouvez:

  • Le Centre logiciel est conçu pour utiliser polkit pour l'élévation des privilèges, de sorte que seules des actions spécifiques doivent être effectuées en tant que root. Pour cela, il a besoin de polkit, qui était manquant (ou cassé) sur votre système.
  • Parce qu'il est conçu pour utiliser polkit, il n'y a pas de lanceur prédéfini pour démarrer le Software Center en tant que root. polkit évite d'avoir à exécuter des outils d'administration graphique en tant que root, la plupart du temps.
  • Mais parfois, vous avez vraiment besoin d'exécuter un programme graphique en tant que root. Dans ce cas, vous pouvez utiliser gksu/ gksudo.
    (... Qui peut éventuellement utiliser polkit dans les coulisses - mais gksudoactuellement dans Ubuntu est le traditionnel qui utilise sudo).
Eliah Kagan
la source
1
Salut Eliah, oui, c'était un serveur sans interface graphique et j'essayais juste l'interface graphique ubuntu, j'ai exécuté la commande sudo apt-get install ubuntu-desktop im je ne sais pas si le kit de politique est installé. J'essaierai de l'installer quand même. Mise à jour en cours du 12.04 au 14.04.
Sean
J'ai rencontré une situation où j'ai une application GUI que je veux exécuter normalement (non root), mais elle a juste besoin de lire à partir d'un port série qui appartient à root. L'incapacité de simplement accorder à ce programme un seul privilège est vraiment ennuyeux (en d'autres termes, je veux un système de capacité d'objet complet).
CMCDragonkai
3
S'il vous plaît pas qui a gksuété déprécié et supprimé d'Ubuntu 18.04
Nathan F.
5

Un moyen pratique consiste à créer un .desktopfichier dédié ou à ajouter vos commandes à un fichier existant, en demandant votre mot de passe via l'interface graphique (gksu). Dans l'exemple ci-dessous, j'ajoute la commande pour exécuter Gedit et Software Center avec les privilèges sudo au lanceur Gedit. Vous devrez avoir gksuinstallé pour utiliser cette configuration:sudo apt-get install gksu

  1. Copiez Gedit .desktop file in/ usr / share / applications / to~ / .local / share / applications`:

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    et ouvrez-le pour le modifier (faites-le glisser sur une fenêtre gedit ouverte)

  2. Recherchez la ligne: Actions = Fenêtre, Document;

  3. Ajoutez les noms de vos commandes à la ligne (ce ne sont pas les noms que vous verrez dans votre interface, uniquement utilisés comme référence interne dans le fichier)

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. Ajoutez les sections correspondantes en bas du fichier:

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. Fermez le fichier et faites-le glisser sur le lanceur

Vous pouvez maintenant exécuter gedit et Software Center avec les privilèges sudo:

entrez la description de l'image ici

entrez la description de l'image ici

Jacob Vlijm
la source
En effet. Je n'ai pas d'objection. La raison pour laquelle j'ai commenté l'USC est qu'une grande partie de la question est de savoir comment l'OP peut faire fonctionner son système créé à partir d'une installation de serveur comme un système de bureau Ubuntu normal en ce qui concerne l'authentification graphique pour les tâches administratives. Ma réponse se concentre sur cela et explique les généralités de l'exécution de programmes en tant que root graphiquement. Ce faisant, il parcourt la mécanique de gksu/ gksudo. Votre réponse est donc à la fois bonne et nécessaire! J'espère juste que l'OP installe / corrige également le polkit, car je pense que cela fera fonctionner le système d'exploitation comme ils le souhaitent.
Eliah Kagan