Mittwoch, 26. Oktober 2011

Der schöne sudo-Dialog mit Ubuntu & GNOME3 - pkexec

Manche Anwendungen möchte man einfach als root starten. Beispielsweise benötige ich einen zweiten Texteditor (Gedit) mit root-Rechten um bequem Systemeinstellungen zu ändern.

Bisher habe ich diese Anwendungen unter Gnome 2 und 3 mit gksudo gestartet. Dazu habe ich die Datei gedit-root.desktop angelegt:

[Desktop Entry]
Name=gedit (root)
GenericName=Text Editor (root)
Comment=Edit text files
Exec=gksodu /usr/bin/gedit
Terminal=false
Type=Application
StartupNotify=true
MimeType=text/plain;
Icon=accessories-text-editor
Categories=GNOME;GTK;Utility;TextEditor;
X-GNOME-DocPath=gedit/gedit.xml
X-GNOME-FullName=Text Editor (root)
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gedit
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=3.0.0
X-GNOME-Bugzilla-ExtraInfoScript=/usr/share/gedit-2/gedit-bugreport
X-Ubuntu-Gettext-Domain=gedit

Der Dialog zur Autorisierung sieht dann ähnlich wie dieser aus:


Startet man unter GNOME 3 Anwendungen wie synaptic, fällt sofort der neue Dialog auf um diese Anwendung als root zu auszuführen.


Dieser Dialog wird mit dem Befehl pkexec aufgerufen. In der Datei gedit-root.desktop wird der Aufruf wie folgt geändert:

Exec=pkexec "/usr/bin/gedit"

Das genügt jedoch noch nicht ganz. Es muss noch eine Policy-Datei für den Aufruf angelegt werden (siehe http://hal.freedesktop.org/docs/polkit/pkexec.1.html). Diese Datei sieht dann wie folgt aus:



 
  Run Gedit as root
  Gedit als root starten
  Authentication is required to run Gedit
  Authorisierung ist erforderlich um Gedit zu starten
  gedit
  
  
   auth_admin
   auth_admin
   auth_admin
  

  /usr/bin/gedit
  true
 

Der Name der Datei ergibt sich aus der action id und der Endung policy. Sie wird dann unter "/usr/share/polkit-1/actions/de.aonnet.pkexec.gedit.policy" gespeichert.

Jetzt funktioniert der pkexec Aufruf und es erscheint der gewünschte Dialog:


Keine Kommentare:

Kommentar veröffentlichen