Tag Archives: PolicyKit

Shutdown/restart & mounting drives without display manager

Quite a long time ago I became unable to shutdown or restart my system from the Xfce logout dialog. I also couldn’t mount USB flash drives. Recently I tackled this issue which seems to be related to systemd + PolicyKit + Consolekit and found a solution. As written there I have created two files:

/etc/polkit-1/localauthority/50-local.d/consolekit.pkla:

[restart]
Identity=unix-user:<username>
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes

[stop]
Identity=unix-user:<username>
Action=org.freedesktop.consolekit.system.stop
ResultAny=yes

/etc/polkit-1/localauthority/50-local.d/udisks.pkla:

[udisks]
Identity=unix-user:<username>
Action=org.freedesktop.udisks.*
ResultAny=yes

This finally gave me back full control over my system even though I didn’t bother digging deeper into the involved concepts.

After a recent update I once again lost these capabilities again though and had to give it another spin. Once again I found a solution and adapted my snippet for automatically launching the X server:

# Autostart X if not running
if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/tty1 ]]; then
  startx -- vt1
fi

Herunterfahren/Neustarten & Laufwerke einhängen ohne Display Manager

Notice: this entry is also available in English.

Vor längerer Zeit verlor ich die Möglichkeit, als regulärer Nutzer über den Xfce-Abmeldedialog mein System herunterzufahren oder neuzustarten. Auch USB-Sticks konnte ich nicht mehr einhängen. Kürzlich befasste ich mich endlich ein wenig mit diesem Problem, was offenbar mit systemd + PolicyKit + ConsoleKit zusammenhängt und stieß auf eine Lösung. Wie dort beschrieben habe ich zwei neue Dateien angelegt:

/etc/polkit-1/localauthority/50-local.d/consolekit.pkla:

[restart]
Identity=unix-user:<username>
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes

[stop]
Identity=unix-user:<username>
Action=org.freedesktop.consolekit.system.stop
ResultAny=yes

/etc/polkit-1/localauthority/50-local.d/udisks.pkla:

[udisks]
Identity=unix-user:<username>
Action=org.freedesktop.udisks.*
ResultAny=yes

Damit konnte ich nun endlich wieder mein System ganz normal benutzen, auch wenn ich weder Zeit noch Lust hatte, mich eingehender mit dem zugrundeliegenden System zu befassen.

Bei einem kürzlichen Update verlor ich aber wiederum diese Fähigkeiten und musste mich erneut auf die Suche begeben. Glücklicherweise wurde ich wieder fündig und passte meinen Codeschnipsel für den automatischen Start des X-Servers an:

# Autostart X if not running
if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/tty1 ]]; then
  startx -- vt1
fi

Mal sehen, wie lange diese Konstellation nun funktionstüchtig bleibt.

Zugriff auf USB-Datenträger mittels udisks

Um endlich in den Genuss eines aktuellen Thunars mit Gio-Unterstützung zu kommen begab ich mich auf eine kurze Suche und wurde im Xubuntu Developers PPA fündig. Die Aktualisierung verlief reibungslos, womit ich nun auch einmal auf entfernte Quellen zuzugreifen. So habe ich bisher auf mein Heimverzeichnis meiner Hochschule per sshfs und einem Eintrag in /etc/fstab zugegriffen. Grafisch einigermaßen komfortabel habe ich das Einhängen mit Hilfe einer benutzerdefinierten Aktion in Thunar vorgenommen.

Doch mittels Gio-Unterstützung in Thunar sollte dies der Vergangenheit angehören. Also rief ich ssh://ilux150.informatik.htw-dresden.de auf und erfreute mich der Tatsache, dass dies einfach funktionierte. Auch FTP-Zugriff funktioniert einwandfrei, auch wenn das wünschenswerte FTPES noch nicht in Gvfs implementiert wurde.

Schnell zeigte sich allerdings ein Problem: beim versuchten Zugriff auf meinen USB-Stick wurde ich nun mit einer Not Authorized Fehlermeldung abgewiesen. Nach kurzer Suche zu diesem Problem erkannte ich schnell, dass hier PolicyKit seine Finger im Spiel hat. Weiteres Suchen offenbarte mir schließlich eine Lösung, welche ich unter /etc/polkit-1/localauthority/50-local.d/plugdev.plka platzierte:

[Access to removable media for the plugdev group]
Identity=unix-group:plugdev
Action=org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount
ResultAny=yes

Damit allein war es jedoch noch nicht getan, da mir ck-list-sessions nach wie vor bescheinigte, dass die ConsoleKit-Sitzung nicht aktiv sei. Ohne eine aktive ConsoleKit-Sitzung könnte kein Programm unter X Dienste wie Udisks in Anspruch nehmen. Lange Rede kurzer Sinn war die Lösung schließlich, meine .xinitrc folgendermaßen zu gestalten:

exec ck-launch-session startxfce4

Hierdurch wird Xfce in einer ConsoleKit-Sitzung gestartet, womit ich nun ohne weiteres auf meine USB-Datenträger zugreifen kann. (Nachtrag: mit dem 4.7.0 Release von xfce4-session sollte dies nicht mehr erforderlich sein.) Meiner Meinung nach sollten Distributionen den hier beschriebenen Zugriff auf USB-Datenträger von Haus aus für reguläre Nutzer erlauben. Einige wie Ubuntu werden das auch sicher machen, bei Debian ist die Akzeptanz angesichts des serverlastigen Einsatzgebietes allerdings ungewiss.