it-swarm.com.de

pkexec startet kein polkit GUI in Lubuntu / LXDE

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 einen 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 ein Fehlen davon).

Ich kann Synaptic zum Öffnen bringen, indem ich im Menü "Ausführen" gksudo synaptic eingebe. Wenn ich "synaptic-pkexec" vom Terminal aus starte, 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 einfach den Menüeintrag in "gksudo synaptic" ändern, aber ich vermute, dass es aus einem Grund auf synaptic-pkexec gesetzt ist. Ich habe eine vage Vorstellung davon, dass dieses pkexec Geschäft etwas mit PolicyKit zu tun hat, aber ich weiß nicht genau, was PolicyKit ist oder wie ich feststellen kann, ob etwas damit nicht stimmt.

7
ven42

Es stellte sich heraus, dass ich das policykit-1-gnome -Paket installieren musste. Sobald ich dieses Paket installiert und neu gestartet habe, hat Synaptic normal funktioniert.

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

PolicyKit-gnome bietet einen D-Bus-Sitzungsbusdienst, mit dem Authentifizierungsdialogfelder 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.

synaptic ist eine Abhängigkeit des Metapakets lubuntu-desktop, daher wurde es in meiner Minimalinstallation standardmäßig installiert. Sollte policykit-1-gnome nicht auch eine Abhängigkeit von lubuntu-desktop sein, da Synaptic ohne dies nicht funktioniert? Glaubst du, ich sollte einen Fehler melden?

3
ven42

Ich verwende eine alternative Lösung zu der akzeptierten Antwort. Ich bevorzuge die Verwendung von lxpolkit anstelle von _policykit-1-gnome_, da es für LXDE entwickelt wurde.

Dieses Problem tritt häufig auf, wenn pkexec den Authentifizierungsbildschirm nicht startet. Als Erstes müssen Sie prüfen, ob Sie eine grafische Policy Kit-Oberfläche (entweder lxpolkit oder _policykit-1-gnome_) für LXDE installiert und konfiguriert haben, da diese Pakete bei einem größeren Upgrade von lubuntu als entfernt markiert sind. Anscheinend sind beide bei der Installation der Distribution nicht enthalten.

Lösung

  • Installieren Sie lxpolkit.
    _Sudo apt-get install lxpolkit_

  • Abmelden und einloggen.

  • Legen Sie lxpolkit als Standardrichtlinienagenten fest
    Gehen Sie im Menü zu _Preferences > Default applications for LXSession_ (oder führen Sie _lxsession-default-apps_ in einem Terminal aus). Im ersten Abschnitt "Ausführen von Anwendungen" ( Update: Standard-App-Manager 14.10 ist anders. Verwenden Sie die Registerkarte _Core applications_. ), gehen Sie zu Option für _Polkit agent_ und stellen Sie sicher, dass lxpolkit ausgewählt ist.

Anstatt das Paket _policykit-1-gnome_ zu verwenden, verwendet lxsession jetzt lxpolkit für LXDE.

LXPolkit screenshot

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

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

Die Apps, die im lxpanel-Menü angezeigt werden, 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 Anwendung, die in Ihrem Menü angezeigt wird. 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 Zeile Exec=synaptic-pkexec.

Wenn keine Policy Kit-Schnittstelle 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 lxpolkit verwenden. Oder wenn Sie das Gnome-Polkit bevorzugen, installieren Sie das Paket _policykit-1-gnome_, das das Anmeldemenü startet, wenn pkexec verwendet wird. Ich habe das Paket _policykit-1-gnome_ entfernt und die Verwendung von lxpolkit funktioniert für alle Anwendungen gut.

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-pkexec_ in _gksudo synaptic_ ändern. Oder kopieren Sie über die Befehlszeile die Originaldatei mit _Sudo cp /usr/share/applications/synaptic.desktop ${HOME}/.local/share/applications/synaptic.desktop_ in das Anwendungsverzeichnis Ihres Benutzers.

Bearbeiten Sie dann die Zeile _Exec=synaptic-pkexec_ und ersetzen Sie sie durch _Exec=gksudo synaptic_

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

Und das aus gutem Grund! Siehe Sudo grafisch ausführen .

Dies setzt natürlich voraus, dass jede Anwendung, die auf pkexec basiert, so bearbeitet wird, dass sie mit gksudo gestartet wird. Dies erfordert mehr Arbeit von Ihrer Seite, wenn Sie lxpanel verwenden. Ein netter Vergleich der Sicherheits- und Benutzerfreundlichkeitsfunktionen für gksudo und PolicyKit finden Sie unter Vergleich der Berechtigungsberechtigungsfunktionen .

Schreiben Sie Ihre eigene pkexec Richtlinie für einzelne Anwendungen
Das ist mehr als ich tun möchte, aber es kann in manchen Situationen nützlich sein. Ich empfehle nicht, dies zu tun, ohne ein gutes Verständnis von Schreiben von PolicyKit-Aktionen .

Die Aktionen, die Ihnen über das Polkit zur Verfügung stehen, hängen von den Paketen ab, die Sie installiert haben. Einige werden in Umgebungen mit mehreren Desktops verwendet (org.freedesktop. ), andere sind DE-spezifisch (org.gnome. ) und andere spezifisch für ein einzelnes Programm (org.archlinux). pkexec.gparted.policy). Der Befehl pkaction listet alle Aktionen auf, die in/usr/share/polkit-1/actions definiert sind.

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

Z.B. wenn du gparted als root mit laufen lassen willst

_$ 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>
_

Der gleichen Datei können weitere Aktionen hinzugefügt werden.

Tipp an renegat at archlinux.org zum Kompilieren relevanter Auszüge aus verwandten LXDE- und PolicyKit-Dokumentationen, die mich letztendlich dazu veranlassten, LXPolkit als bevorzugte Lösung zu verwenden.

3
iyrin

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

Das hat nicht funktioniert, also habe ich über ein Terminal nachgeforscht, auf dem synaptic läuft (gksudo synaptic).

Der Versuch, gksudo zu verwenden, führte für mich zu einer Meldung, in der mir die Installation von gksu erklärt wurde. Bei der Installation wurde die Meldung ausgegeben, dass gksu bereits installiert war (und immer noch nicht funktionierte). Ich habe gksu deinstalliert und neu installiert, und jetzt funktioniert synaptic einwandfrei.

0
Scott