pkexec startet die Polkit-GUI in Lubuntu / LXDE nicht

7

Ich habe eine Neuinstallation von Lubuntu 12.04 mit minimalem Desktop durchgeführt, wie hier beschrieben .

Zur Verdeutlichung habe ich eine Befehlszeileninstallation von der alternativen Lubuntu-Installations-CD durchgeführt und dann eine apt-get install --no-install-recommends lubuntu-desktop.

Alles funktioniert einwandfrei, außer dass Synaptic nicht über den Menüeintrag im Bedienfeld ausgeführt wird. Ich werde nicht zur Eingabe eines Passworts aufgefordert und nach dem Klicken auf den Menüeintrag wird kein Fenster angezeigt. Ich habe lxshortcut installiert, um zu sehen, welche Verknüpfung ausgeführt wurde, und der Befehl lautet synaptic-pkexec. Wenn ich diesen Befehl in das Menü "Ausführen" eingebe, erhalte ich das gleiche Verhalten (oder das Fehlen davon).

Ich kann Synaptic dazu bringen, sich ganz gut zu öffnen, indem ich im gksudo synapticMenü "Ausführen" tippe. Wenn ich "synaptic-pkexec" vom Terminal aus ausführe, werde ich im Terminal zur Eingabe meines Kennworts aufgefordert und danach wird Synaptic normal geöffnet.

Kann jemand bitte den richtigen Weg vorschlagen, um Synaptic zum Laufen zu bringen? Ich könnte den Menüeintrag einfach in "gksudo synaptic" ändern, aber ich vermute, dass er synaptic-pkexecaus einem bestimmten Grund eingestellt ist. Ich habe ein vages Verständnis dafür, dass dieses pkexecGeschäft etwas mit PolicyKit zu tun hat, aber ich weiß nicht wirklich, was PolicyKit ist oder wie ich feststellen kann, ob etwas damit nicht stimmt.

ven42
quelle
Dies war ein Fehler in Ubuntu 11.10, genau das gleiche Szenario ... es wird hier diskutiert - ubuntuforums.org/showthread.php?t=1827093 Vielleicht würde das Ausführen eines Updates das Problem beheben?
Corey Whitaker
Können Sie synaptisch vom Terminal aus starten? Wenn Sie nicht können, geben Sie hier die Ausgabe ein.
Alireza
Danke für den Link. Laut diesem Thread wurde der Fehler in synaptic-0.75.2ubuntu6 behoben. Wenn ich "apt-cache policy synaptic" ausführe, ist 0.75.9ubuntu1 installiert. "apt-get update && apt-get dist-upgrade" sagt, dass ich voll auf dem neuesten Stand bin.
ven42
Versuchen Sie, Synaptic erneut zu installieren.
Atenz
Ich habe gerade "apt-get install --reinstall synaptic" ausprobiert. Der Prozess wurde erfolgreich abgeschlossen, hat jedoch das Verhalten von synaptic nicht geändert. Ich fürchte, das Problem besteht immer noch.
ven42

Antworten:

3

Es stellte sich heraus, dass ich das policykit-1-gnomePaket installieren musste . Nachdem ich dieses Paket installiert und neu gestartet hatte, funktionierte Synaptic normal.

Ich habe den gesamten Lubuntu-Desktop zum Vergleich mit meiner minimalen Installation in einer VM installiert und so festgestellt, was fehlte. Laut Paketbeschreibung:

PolicyKit-gnome bietet einen D-Bus-Sitzungsbusdienst, mit dem Authentifizierungsdialoge zum Abrufen von Berechtigungen aufgerufen werden.

Ohne die beschriebene Funktionalität würde ich natürlich nie eine GUI-Authentifizierungsaufforderung zum Öffnen von Synaptic erhalten.

synapticist eine Abhängigkeit des lubuntu-desktopMetapakets, daher wurde es in meiner minimalen Installation standardmäßig installiert. Sollte nicht policykit-1-gnomeauch eine Abhängigkeit von sein lubuntu-desktop, da Synaptic ohne sie nicht funktioniert? Denkst du, ich sollte einen Fehler melden?

ven42
quelle
Hervorragende Arbeit, um die Ursache des Problems aufzuspüren! Und ja, ich denke, Sie sollten dies als Fehler melden . Meine von der Lubuntu-Desktop-CD installierten Lubuntu-Systeme haben dieses Problem nicht. Sie werden wahrscheinlich policykit-1-gnomeseparat von anderen Paketen installiert geliefert. Es ist auf manuell installiert eingestellt (und ich habe es nicht selbst installiert). Wenn Sie einen Fehler melden, aktualisieren Sie bitte Ihre Antwort mit dem Fehlerlink.
Eliah Kagan
1
Ich bekomme genau das gleiche Problem beim Ausführen einer minimalen Installation von Ubuntu mithilfe einer eigenständigen Compiz-Sitzung mit Unity. Die Sache ist, ich habe Policykit-1-Gnome installiert, aber es funktioniert immer noch nicht.
Nishant George Agrwal
Wenn Sie lubuntu / lxde und openbox ausführen, wird dieses Paket aus irgendeinem Grund zum Entfernen während eines Upgrades markiert (Sie haben die Möglichkeit, Pakete während des Upgrades beizubehalten). Durch das Installieren policykit-1-gnomeund Abmelden / Anmelden wird die GUI pkexecbereitgestellt, die gestartet werden soll. Die Frage wurde bearbeitet, um das Problem besser widerzuspiegeln, da dieser Beitrag etwas schwer zu finden ist und das Problem synapticin keiner Weise darauf zurückzuführen ist.
Iyrin
3

Ich verwende eine alternative Lösung zur akzeptierten Antwort. Ich bevorzuge die Verwendung lxpolkitanstelle von, policykit-1-gnomeda es für LXDE entwickelt wurde.

Dieses Problem, pkexecwenn der Authentifizierungsbildschirm nicht gestartet wird, ist sehr häufig. Als Erstes müssen Sie überprüfen, ob Sie eine grafische Policy Kit-Oberfläche (entweder lxpolkitoder policykit-1-gnome) für LXDE installiert und konfiguriert haben, da diese Pakete markiert sind, um während eines größeren Upgrades von lubuntu entfernt zu werden. Anscheinend sind beide bei der Installation der Distribution nicht enthalten.

Lösung

  • Installieren lxpolkit.
    sudo apt-get install lxpolkit

  • Abmelden und Anmelden.

  • Set lxpolkitals Standard - Policy - Agent
    Im Menü, gehen Sie zu Preferences > Default applications for LXSession(oder laufen lxsession-default-appsin einem Terminal). Gehen Sie im ersten Abschnitt "Ausführen von Anwendungen" ( Update: Standard-Apps-Manager 14.10 ist anders. Verwenden Sie die Core applicationsRegisterkarte. ) Zur Option für Polkit agentund stellen Sie sicher, dass lxpolkit ausgewählt ist.

Anstatt das Paket zu verwenden policykit-1-gnome, lxsessionwird es jetzt lxpolkitfür LXDE verwendet.

LXPolkit-Screenshot

Warum Apps, die mit gestartet wurden, pkexecnicht über das LXDE-Menü ausgeführt werden

Es kommt darauf an, wie Apps im X11-System mit pkexec gestartet werden .

Die im lxpanel-Menü angezeigten Apps werden entweder in /usr/share/applications(globale Menüelemente ) oder ~/.local/share/applications(benutzerspezifisch) gespeichert und konfiguriert . Siehe LXDE Wiki - Hauptmenü

In diesen Verzeichnissen finden Sie eine .desktop-Datei für jede der in Ihrem Menü angezeigten Anwendungen. Hier ist ein Beispiel für /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

Beachten Sie die Linie Exec=synaptic-pkexec.

Wenn keine Policy Kit-Oberfläche vorhanden ist, wird der Benutzer normalerweise in der Befehlszeile nach einem Kennwort gefragt. Da dies ein Menüpunkt ist, wird dieser im Hintergrund gestartet und es gibt keine Befehlszeile zur Eingabe des Passworts. Daher müssen Sie sicherstellen, dass Sie verwenden lxpolkit. Wenn Sie das Gnome-Polkit bevorzugen, installieren Sie das Paket, mit policykit-1-gnomedem das Anmeldemenü bei jeder Verwendung gestartet pkexecwird. Ich habe das Paket entfernt policykit-1-gnomeund die Verwendung lxpolkitfunktioniert gut für alle Anwendungen.

Alternativlösungen

Verwenden Sie gksudo anstelle von pkexec.
Sie können im Menü mit der rechten Maustaste auf Anwendungen wie synaptic klicken, auf Eigenschaften klicken und das Feld Befehl von synaptic-pkexecauf ändern gksudo synaptic. Oder kopieren Sie über die Befehlszeile die Originaldatei in das Anwendungsverzeichnis Ihres Benutzers mitsudo cp /usr/share/applications/synaptic.desktop ${HOME}/.local/share/applications/synaptic.desktop

Bearbeiten Sie dann die Zeile Exec=synaptic-pkexecund ersetzen Sie sie durchExec=gksudo synaptic

gksudos "Hauptzweck ist es, grafische Befehle auszuführen, die root benötigen, ohne einen X-Terminal-Emulator ausführen zu müssen und su direkt zu verwenden." - GKSU (1)

Und das aus gutem Grund! Siehe Grafisches Ausführen von Sudo .

Dies erfordert natürlich, dass jede Anwendung, die auf pkexec basiert, bearbeitet wird, um mit gksudo gestartet zu werden. Dies erfordert mehr Arbeit von Ihrer Seite, wenn Sie lxpanel verwenden. Einen schönen Vergleich der Sicherheits- und Benutzerfreundlichkeitsfunktionen für gksudo und PolicyKit finden Sie unter Vergleich der Berechtigungsberechtigungsfunktionen .

Schreiben Sie Ihre eigenen pkexecRichtlinien für einzelne Anwendungen
Dies ist mehr als ich tun möchte, aber es kann in einigen Situationen nützlich sein. Ich empfehle dies nicht ohne ein tiefes Verständnis für das Schreiben von PolicyKit-Aktionen .

Die Aktionen, die Ihnen über polkit zur Verfügung stehen, hängen von den von Ihnen installierten Paketen ab. Einige werden in mehreren Desktop-Umgebungen (org.freedesktop. ) Verwendet , andere sind DE-spezifisch (org.gnome. ) Und einige sind spezifisch für ein einzelnes Programm (org.archlinux.pkexec.gparted.policy). Der Befehl pkaction listet alle in / usr / share / polkit-1 / action definierten Aktionen zur schnellen Referenz auf.

Hier ist ein Beispiel, das ich nicht getestet habe, von City-busz - Mit dem Befehl 'pkexec' anstelle von 'gksu' :

ZB wenn Sie gparted als root mit ausführen möchten

$ pkexec gparted

Befehl, dann erstellen Sie eine neue Datei

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

mit folgendem Inhalt:

<?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>

Weitere Aktionen können derselben Datei hinzugefügt werden.

Ein Tipp an renegat bei archlinux.org für die Zusammenstellung relevanter Auszüge aus verwandten LXDE- und PolicyKit-Dokumentationen, die mich letztendlich dazu veranlassten, LXPolkit als bevorzugte Lösung zu verwenden.

Iyrin
quelle
0

Verwenden Sie den Vorschlag, um mit der rechten Maustaste auf den synaptischen Eintrag im Menü unter Systemprogramme zu klicken, wählen Sie Eigenschaften, dann die Registerkarte Desktop-Eintrag und ändern Sie synaptic-pkexec in gksudo synaptic.

Das hat nicht funktioniert, also habe ich über ein Terminal untersucht, auf dem synaptic (gksudo synaptic) ausgeführt wird.

Für mich führte der Versuch, gksudo zu verwenden, zu einer Meldung, in der mir mitgeteilt wurde, wie gksu installiert wird. Als ich versuchte zu installieren, wurde eine Meldung angezeigt, dass gksu bereits installiert war (und immer noch nicht funktionierte). Ich habe gksu deinstalliert und neu installiert, und jetzt funktioniert synaptic einwandfrei.

Scott
quelle