web-dev-qa-db-fra.com

pkexec ne lancera pas l'interface graphique de polkit dans Lubuntu / LXDE

J'ai effectué une nouvelle installation de Lubuntu 12.04 avec un minimum de bureau, comme décrit ici .

Pour clarifier, j’ai fait une installation en ligne de commande à partir du disque d’installation alternative Lubuntu, puis j’ai fait un apt-get install --no-install-recommends lubuntu-desktop.

Tout fonctionne correctement, sauf que Synaptic ne s'exécutera pas à partir de l'entrée de menu dans le panneau. Je ne suis pas invité à entrer un mot de passe, et aucune fenêtre d'aucune sorte ne s'affiche après avoir cliqué sur l'entrée du menu. J'ai installé lxshortcut pour voir ce que le raccourci était en cours d'exécution, et la commande est synaptic-pkexec. Si je tape cette commande dans le menu "Exécuter", j'obtiens le même comportement (ou son absence).

Je peux obtenir que Synaptic s’ouvre parfaitement en tapant gksudo synaptic dans le menu "Exécuter". De plus, si j'exécute "synaptic-pkexec" depuis le terminal, mon mot de passe est demandé dans le terminal et, après cela, Synaptic s'ouvre normalement.

Quelqu'un peut-il s'il vous plaît suggérer la bonne façon de faire fonctionner Synaptic? Je pourrais simplement changer l'entrée de menu en "gksudo synaptic", mais j'imagine qu'elle est réglée sur synaptic-pkexec pour une raison. J'ai une vague compréhension que cette entreprise pkexec a quelque chose à voir avec PolicyKit, mais je ne sais pas vraiment ce qu'est PolicyKit ni comment savoir si quelque chose ne fonctionne pas.

7
ven42

Il s'est avéré que j'avais besoin d'installer le package policykit-1-gnome. Une fois ce paquet installé et redémarré, Synaptic fonctionnait normalement.

J'ai installé l'intégralité du bureau Lubuntu dans une VM pour la comparer à mon installation minimale, et c'est ainsi que j'ai découvert ce qui manquait. Selon la description du paquet:

PolicyKit-gnome fournit un service de bus de session D-Bus utilisé pour afficher les boîtes de dialogue d'authentification utilisées pour l'obtention de privilèges.

Évidemment, sans la fonctionnalité décrite, je n’aurais jamais pu obtenir une invite d’authentification par interface graphique pour ouvrir Synaptic.

synaptic est une dépendance du métapaquet lubuntu-desktop. Il a donc été installé par défaut dans mon installation minimale. policykit-1-gnome ne devrait-il pas être une dépendance de lubuntu-desktop, puisque Synaptic ne fonctionnerait pas sans cela? Pensez-vous que je devrais signaler un bug?

3
ven42

J'utilise une solution alternative à la réponse acceptée. Je préfère utiliser lxpolkit au lieu de policykit-1-gnome car il est conçu pour LXDE.

Ce problème avec pkexec ne pas lancer l'écran d'authentification est très courant. La première chose à vérifier est de savoir si vous avez une interface graphique de kit de règles (lxpolkit ou policykit-1-gnome) installée et configurée pour LXDE car ces packages sont marqués pour être supprimés lors d'une mise à niveau majeure de lubuntu. Apparemment, ni sont inclus lors de l'installation de la distribution.

Solution

  • Installez lxpolkit.
    Sudo apt-get install lxpolkit

  • Déconnexion et connexion.

  • Définir lxpolkit comme agent de stratégie par défaut
    Dans le menu, accédez à Preferences > Default applications for LXSession (ou exécutez lxsession-default-apps dans un terminal). Dans la première section "Exécution d'applications" ( Update: Le gestionnaire d'applications par défaut 14.10 est différent. Utilisez l'onglet Core applications. ), sélectionnez l'option pour Polkit agent et assurez-vous que lxpolkit est sélectionné.

Au lieu d'utiliser le package policykit-1-gnome, lxsession utilisera désormais lxpolkit pour LXDE.

LXPolkit screenshot

Pourquoi les applications lancées avec pkexec Ne pas exécuter à partir du menu LXDE

Cela dépend de la façon dont les applications du système X11 sont lancées avec pkexec .

Les applications qui apparaissent dans le menu lxpanel sont stockées et configurées dans /usr/share/applications (éléments de menus globaux) ou ~/.local/share/applications (spécifique à l'utilisateur). Voir LXDE Wiki - Menu principal

Dans ces répertoires, vous trouverez un fichier .desktop pour chacune des applications apparaissant dans votre menu. Voici un exemple de /usr/share/applications/synaptic.desktop:

[Desktop Entry]
Name=Synaptic Package Manager
GenericName=Package Manager
Comment=Install, remove and upgrade software packages
Exec=synaptic-pkexec
Icon=synaptic
Terminal=false
Type=Application
Categories=PackageManager;GTK;System;Settings;
NotShowIn=KDE;
X-Ubuntu-Gettext-Domain=synaptic

Notez la ligne Exec=synaptic-pkexec.

En l'absence d'une interface de kit de stratégie, un mot de passe est normalement demandé à l'utilisateur dans la ligne de commande. S'agissant d'un élément de menu, il est lancé en arrière-plan et aucune ligne de commande ne permet d'entrer le mot de passe. Par conséquent, vous devez vous assurer que vous utilisez lxpolkit. Ou, si vous préférez gnome polkit, installez le paquetage policykit-1-gnome qui lance le menu de connexion chaque fois que pkexec est utilisé. J'ai supprimé le paquetage policykit-1-gnome et utiliser lxpolkit fonctionne bien pour toutes les applications.

Solutions alternatives

Utiliser gksudo à la place de pkexec
Vous pouvez cliquer avec le bouton droit de la souris sur des applications comme Synaptic dans le menu, cliquer sur Propriétés et changer le champ Commande de synaptic-pkexec à gksudo synaptic. Ou via la ligne de commande, copiez le fichier d'origine dans le répertoire des applications de votre utilisateur avec Sudo cp /usr/share/applications/synaptic.desktop ${HOME}/.local/share/applications/synaptic.desktop

Puis éditez la ligne Exec=synaptic-pkexec et remplacez-la par Exec=gksudo synaptic

l'objectif principal de gksudo est d'exécuter des commandes graphiques nécessitant un accès root sans avoir à exécuter un émulateur de terminal X ni à utiliser su directement. " - GKSU (1)

Et pour une bonne raison! Voir Exécution graphique de Sudo .

Bien entendu, cela nécessite que chaque application utilisant pkexec soit modifiée pour pouvoir être lancée avec gksudo, ce qui nécessite davantage de travail de votre part si vous utilisez lxpanel. Une comparaison intéressante des fonctionnalités de sécurité et d'utilisation pour gksudo et PolicyKit est disponible à l'adresse Comparaison des fonctionnalités d'autorisation des privilèges .

Rédigez votre propre pkexec Stratégie pour des applications individuelles
C’est plus que ce que je veux faire, mais cela peut être utile dans certaines situations. Je ne recommande pas de le faire sans une solide compréhension de l'écriture d'actions PolicyKit .

Les actions disponibles via polkit dépendent des packages que vous avez installés. Certains sont utilisés dans plusieurs environnements de bureau (org.freedesktop. ), d'autres sont spécifiques à DE (org.gnome. ) et certains sont spécifiques à un seul programme (org.archlinux. pkexec.gparted.policy). La commande pkaction répertorie toutes les actions définies dans/usr/share/polkit-1/actions pour une référence rapide.

Voici un exemple, que je n'ai pas testé, de City-busz -Using de la commande 'pkexec' au lieu de 'gksu' :

Par exemple. si vous voulez lancer gparted en tant que root avec

$ pkexec gparted

commande, puis crée un nouveau fichier

/usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy

avec le contenu suivant:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

  <action id="org.freedesktop.policykit.pkexec.run-gparted">
    <description>Run GParted</description>
    <message>Authentication is required to run GParted</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/gparted</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>

Plus d'actions peuvent être ajoutées dans le même fichier.

Chapeau de chapeau à renegat sur archlinux.org pour la compilation d’extraits pertinents de la documentation connexe sur LXDE et PolicyKit, ce qui m’a finalement conduit à utiliser LXPolkit comme solution privilégiée.

3
iyrin

Utilisez la suggestion pour faire un clic droit sur l'entrée Synaptic dans le menu sous Outils système, choisissez Propriétés, puis l'onglet Entrée du bureau et remplacez synaptic-pkexec par gksudo synaptic.

Cela n'a pas fonctionné, j'ai donc étudié via un terminal utilisant synaptic (gksudo synaptic).

Pour moi, essayer d’utiliser gksudo a abouti à un message me disant comment installer gksu. Lorsque j'ai essayé d'installer, il en est résulté un message disant que gksu était déjà installé (et ne fonctionnait toujours pas). J'ai désinstallé et réinstallé gksu, et maintenant synaptic fonctionne très bien.

0
Scott