web-dev-qa-db-fra.com

Comment obtenir un mot de passe GUI Sudo Invite sans ligne de commande?

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

J'aimerais que l'interface graphique me demande de saisir mon mot de passe lorsque Sudo est requis, au lieu de devoir saisir les commandes à partir de la ligne de commande.

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

Cette version d'Ubuntu (que j'utilise actuellement) est mise à niveau depuis une installation de serveur.

J'ajouterai que mon compte d'utilisateur a déjà été ajouté au groupe Sudo. Ainsi, je peux exécuter des commandes telles que Sudo gedit ou Sudo apt-get mais je ne parviens pas à installer de logiciel dans le Centre logiciel Ubuntu.

8
Sean

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

Vous avez probablement besoin de polkit (a.k.a. PolicyKit).

La plupart des utilitaires d’administration de système graphique dans Ubuntu, y compris le Centre de logiciel, peuvent généralement être exécutés sans Sudo ou quoi que ce soit du genre. Vous les exécutez simplement de la même manière que n'importe quel programme.

Quand vient le temps d'exécuter 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, permettant 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 du serveur Ubuntu.

Ainsi, le comportement normal du Centre de logiciel est que vous pouvez l’appeler simplement en tant que software-center. Il ne vous demandera pas de vous authentifier à ce moment-là. .

D'après votre description, il semble que votre système ait démarré en tant que système Ubuntu Server sans interface graphique, puis vous avez installé une interface graphique. Probablement le policykit-1 Install policykit-1 et policykit-1-gnome Install policykit-1-gnome les packages n’ont pas été installés. Si vous installez le, polkit commencera probablement à fonctionner pour Software Center et d’autres utilitaires similaires.

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

Ensuite, vous devriez pouvoir lancer:

software-center

(Ou sélectionnez le Centre logiciel de manière graphique, comme prévu par 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 n'importe quelle "saveur" Ubuntu vous voulez transformer votre système en. Fondamentalement, si vous voulez un système de bureau Ubuntu normal, installez buntu-desktop Install ubuntu-desktop .

Sudo apt-get update
Sudo apt-get install ubuntu-desktop

Cela devrait combler les lacunes, telles que ne pas avoir polkit, qui accompagne l'installation d'une interface graphique plus minimale sur votre système serveur. D'autre part, si vous préférez une interface graphique plus minimale, vous pouvez simplement installer ces packages polkit.

Pour plus d'informations, voir Comment utilisez-vous Ubuntu Server avec une interface graphique?

Sudo avec authentification graphique.

Si vous avez vraiment besoin d'exécuter des commandes en tant qu'utilisateur root, mais que vous obteniez une boîte de dialogue d'authentification graphique, vous rechercherez gksudo ( ou gksu ). Ceci est fourni par le gksu Install gksu package. C'est une interface graphique pour Sudo.

gksudo est généralement utilisé pour exécuter des applications graphiques en tant que root (ou un autre utilisateur en plus de 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 gksudo à partir d'un terminal, mais ce n'est pas obligatoire. Vous pouvez l'exécuter depuis le Alt+F2 (commande d'exécution) ou placez-le dans la ligne Exec= d'un fichier .desktop (ou de l'un des autres moyens par lesquels vous exécutez des programmes graphiques).

Notez que vous devriez envisager d'utiliser gksudo pour exécuter des applications graphiques en tant que root, même lorsque vous les exécutez depuis un terminal, car des commandes telles que Sudo ..., où ... est une application graphique, peuvent en réalité rompre les configurations par application des utilisateurs non-root les exécutant. (Heureusement, cela est réparable.) Sudo gedit est particulièrement notoire.

Pour plus d'informations sur le problème rencontré avec Sudo pour les applications graphiques et la procédure à suivre, voir:

Il existe également une méthode graphique basée sur polkit ... pour les commandes non graphiques.

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

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

Par exemple, si vous exécutez pkexec touch /root/foo.txt, une boîte de dialogue d'authentification graphique vous sera proposée. Si l'authentification réussit, touch /root/foo.txt est exécuté et crée ( ou rafraîchissement ) foo.txt dans le dossier /root.

  • pkexec utilisera un dialogue non graphique, nécessitant un terminal, au cas où il ne pourrait pas créer de dialogue graphique. Mais il est peu probable que cela se produise si vous l'exécutez via une installation fournie par votre environnement graphique Shell ou de bureau.
  • Pourquoi pkexec fonctionne-t-il uniquement pour les programmes non - graphiques? En fait, il exécute aussi des programmes graphiques, mais seulement 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 amont, avec des captures d'écran ), cette réponse et cette réponse pour certains détails, si tu es intéressé.

Sudo vs. polkit (quelques détails techniques, uniquement si cela vous intéresse)

n nouveau gksu/gksudo utilisera polkit au lieu de Sudo pour faire son travail , bien que cette version n’ait pas été largement adoptée. Je l’amène principalement à recommander le fichier README dans son code source (écrit par Gustavo Noronha Silva), ce qui explique le Différences importantes entre Sudo et polkit. Pour en citer brièvement:

PolicyKit résout le problème des applications 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" effectuées nécessitent une autorisation appropriée, gérée par le biais de Policykit.

4. Pourquoi maintenir gksu?

Donc, cela rend essentiellement gksu inutile, car les applications ne doivent plus 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 il existe des cas dans lesquels ce que vous voulez est en effet quelque chose qui exécute des programmes en tant que root.

Je pense que ces problèmes sont à la base de la situation:

  • Software Center est conçu pour utiliser polkit pour l'élévation de privilèges, de sorte que seules des actions spécifiques doivent être effectuées en tant que root. Pour cela, il vous faut polkit, qui était manquant (ou endommagé) sur votre système.
  • Comme il est conçu pour utiliser polkit, aucun lanceur préconçu ne permet de démarrer le Centre logiciel en tant que root. polkit évite d'avoir à exécuter des outils d'administration graphiques en tant que root, la plupart du temps.
  • Mais parfois, vous avez vraiment besoin de lancer un programme graphique en tant que root. Dans ce cas, vous pouvez utiliser gksu/gksudo.
    (... Ce qui peut éventuellement utiliser polkit dans les coulisses - mais le gksudo actuellement dans Ubuntu est le traditionnel qui utilise Sudo).
8
Eliah Kagan

Un moyen pratique consiste à créer un fichier .desktop dédié ou à ajouter vos commandes à un fichier existant en demandant votre mot de passe via une interface graphique (gksu). Dans l'exemple ci-dessous, j'ajoute la commande permettant d'exécuter Gedit et Software Center avec les privilèges Sudo sur le lanceur Gedit. gksu doit être installé pour utiliser cette configuration: Sudo apt-get install gksu

  1. Copiez le 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 ouverte de gedit)

  2. Recherchez la ligne: Actions = Window; Document;

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

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. Ajoutez les sections correspondantes au 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:

enter image description here

enter image description here

4
Jacob Vlijm