Kurztipp: Kartenleser mit Ubuntu 24.04 LTS

Problem: Nach dem dist-upgrade auf Ubuntu 24.04 LTS funktionierte der ReinerSCT Cyberjack Kartenleser nicht mehr. Der Daemon (pcscd) lief zwar, protokollierte aber nichts Gutes ins syslog:

pcscd[267998]: CYBERJACK: Started
pcscd[267998]: 00000000 auth.c:143:IsClientAuthorized() Process 267997 (user: 1000) is NOT authorized for action: access_pcsc
pcscd[267998]: 00000210 winscard_svc.c:355:ContextThread() Rejected unauthorized PC/SC client

Ursache: die „Treiber“ benutzen nun polkit für die Zugriffskontrolle, und standardmäßig ist halt nichts konfiguriert und damit jedem alles verboten.

Lösung: Man lege zwei polkit-Regeln an (das sind nicht mehr als kleine Textdateien mit ein wenig JavaScript-Code): Eine Regel, um auf den Kartenleser zugreifen zu können, und eine weitere Regel, um auf die Karten zugreifen zu können. (Details dazu siehe README.polkit aus dem pcscd-Paket, Link siehe unten). Und ja, man könnte auch alles in eine Datei packen, wenn man möchte.

Zunächst einmal sorgen wir dafür, dass überhaupt der Kartenleser vom Benutzer angesprochen werden kann (USER entsprechend durch Euren Benutzernamen ersetzen):

$ sudo su

# cd /etc/polkit-1/rules.d

# vi pcsc-access-reader.rules

polkit.addRule(function(action, subject) {
    if (action.id == "org.debian.pcsc-lite.access_pcsc" &&
        subject.user == "USER") {
            return polkit.Result.YES;
    }
});

Datei sichern, vi beenden. Neu gestartet werden muss nichts, die Zugriffsregel gilt sofort.

Nun müssen wir herausfinden, welchen Namen der Kartenleser hat, da wir diesen für die weitere Zugriffsregel benötigen. Das geht mittels pcsc_scan (steckt im Paket „pcsc-tools“, notfalls mit „sudo apt install pcsc-tools“ installieren):

$ pcsc_scan 
PC/SC device scanner
V 1.7.1 (c) 2001-2022, Ludovic Rousseau 
Using reader plug'n play mechanism
Scanning present readers...
0: REINER SCT cyberJack RFID standard (234247110815) 00 00
...

Alles was hinter „0: “ steht, benötigen wir nun für die folgende Regel, die den Zugriff auf die Smartcards regelt. Wie oben wechseln wir als root ins Verzeichnis und legen eine neue Regel an. READER muss entsprechend durch den obigen kompletten Namen (inkl. der ganzen Ziffern am Ende), USER wiederum durch den Namen des Benutzers ersetzt werden:

$ sudo su

# cd /etc/polkit-1/rules.d

# vi pcsc-access-card.rules

polkit.addRule(function(action, subject) {
    if (action.id == "org.debian.pcsc-lite.access_card" &&
        action.lookup("reader") == 'READER' &&
        subject.user == "USER") {
            return polkit.Result.YES;
    }
});

Wer auf so viele Details keine Lust hat, kann das alles sicherlich auch mit einer einzigen Regel erledigen, die immer die Erlaubnis erteilt, egal welcher Benutzer gerade welchen Kartenleser verwendet:

$ sudo su

# cd /etc/polkit-1/rules.d

# vi pcsc-allow-all-users-access-all-readers-and-cards.rules

polkit.addRule(function(action, subject) {
    if (action.id == "org.debian.pcsc-lite.access_pcsc") {
       return polkit.Result.YES;
    }
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.debian.pcsc-lite.access_card") {
       return polkit.Result.YES;
    }
});

Links:

Kurztipp: KDE über xrdp

Ich habe auf einem Rechner mit Ubuntu 22 sowohl XFCE als auch KDE als Desktop installiert. Beim Remote-Zugriff über RDP erscheint jedoch nur ein Login ohne Auswahlmöglichkeit des Window-Managers und in meinem Falle wurde immer XFCE gestartet.

Abhilfe: Man erzeuge eine ~/.xsession und schreibe „startplasma-x11“ hinein.

echo "startplasma-x11" > ~/.xsession

P.S.: Ich werde dennoch bei XFCE bleiben. KDE hat zwar mehr Bling Bling, aber bei XFCE muss ich für manche Dinge einfach weniger herumklicken.

Kurztipp: Legitimierung Farbprofil / farbverwaltendes Gerät

Nach den beiden Kurztipps zum NetworkManager (hier und hier) hier nun noch ein Tipp der Sorte, wie man nervende PolicyKit-Warnungen weg bekommt.

Nach dem Upgrade auf Ubuntu 20.04. und dem Login innerhalb einer Remote-Session über XDMCP poppten nacheinander folgende Warnmeldungen auf und verlangen die Kennworteingabe:

Nach den Erfahrungen der älteren Tipps habe ich einfach geraten und folgende Dateien mit entsprechenden Inhalten angelegt. Und was soll ich sagen, es hat funktioniert, yipeeh!

Legitimierung ist zur Erstellung eines farbverwaltendes Geräts notwendig

$ sudo vi /etc/polkit-1/localauthority/50-local.d/52-allow-color-manager-create-device.pkla

[Network Manager all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.settings.modify.system;org.freedesktop.color-manager.create-device
ResultAny=no
ResultInactive=no
ResultActive=yes

Legitimierung ist zum Erstellen eines Farbprofils erforderlich

$ sudo vi /etc/polkit-1/localauthority/50-local.d/53-allow-color-manager-create-profile.pkla

[Network Manager all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.settings.modify.system;org.freedesktop.color-manager.create-profile
ResultAny=no
ResultInactive=no
ResultActive=yes

Kurztipp: System policy prevents Wi-Fi scans

Hinweis: Der Tipp funktioniert ab Ubuntu 24 nicht mehr, bitte hier entlang (klick) für einen aktuellen Kurztipp.

Nach dem Upgrade auf Ubuntu 20.04 nervt ein weiteres kleines Problem, sobald ich eine neue Remote-Session per XDMCP starte. Kurze Zeit nach dem Login taucht diese Meldung auf:

Wie gut, dass ich vor geraumer Zeit ein ähnliches Problem (Klick) hatte und die Lösung hier im Blog niedergeschrieben hatte, denn so hatte ich gleich die Steilvorlage zur Lösung dieses Problems.

$ sudo su

# cd /etc/polkit-1/localauthority/50-local.d

# vi 51-allow-wifi-scan.pkla

Sodann schreibe / kopiere man folgende Zeilen hinein, speichern und beenden.

[Network Manager all Users]
Identity=unix-user:*
Action=org.freedesktop.NetworkManager.settings.modify.system;org.freedesktop.NetworkManager.wifi.scan
ResultAny=no
ResultInactive=no
ResultActive=yes

Beim nächsten Login über XDMCP sollte die Meldung nicht mehr auftauchen.

Google Chrome / Vivaldi / Opera über XDMCP: –no-sandbox

Seit mindestens zwanzig Jahren fernbediene ich meine Linux-Rechner über XDMCP von einem Windows-Rechner aus und kann so das Beste aus beiden Welten vereinen und mit einer Maus und Tastatur bedienen – und sogar per Copy & Paste von einer auf die andere Seite und wieder zurück arbeiten. Seitdem ich an meinem Windows-Rechner zwei Monitore anschließen kann, läuft auf einem halt Windows und auf dem anderen einen X-Server wie vcXsrv oder MobaXTerm, die per XDMCP meinen Linux-Rechner im Vollbild darstellt. Viele Dinge im Internet erledige ich alleine schon aus Sicherheitsgründen vom Linux-Rechner aus.

Seit einem der letzten Updates crashen alle chromium-basierten Browser, also Google Chrome, Vivaldi oder Opera, sofern sie nicht direkt an der Konsole / am Bildschirm des Linux-Rechners ausgeführt werden, offensichtlich deshalb, weil keine GPU zur Verfügung steht:

weiterlesen…

XFCE: Dropbox-Icon funktioniert nicht

Problem: Das Dropbox-Icon in der Menüleiste von XFCE / Xubuntu 14.04 funktioniert nicht und zeigt nur einen durchgestrichenen roten Kreis:

Den folgenden Workaround habe ich unter https://bugs.launchpad.net/ubuntu/+source/nautilus-dropbox/+bug/1546176 gefunden, der für mich funktioniert („Works for me!“):

Terminal öffnen, folgendes Kommando eingeben:

dropbox stop && dbus-launch dropbox start

Und schon sieht das Symbol wieder wie gewünscht aus:

Für einen dauerhaften Fix deaktiviere man innerhalb der Dropbox-Einstellungen den automatischen Start beim Systemstart und füge den Befehl „dbus-launch dropbox start“ in die automatisch gestarteten Anwendungen innerhalb der XFCE4-Sitzungsverwaltung ein.

Sobald man also durch manuelle Eingabe (siehe oben) das Dropbox-Symbol hervorgezaubert hat, mit der linken Maustaste auf das Symbol klicken und die Einstellungen, Haken entfernen und mit OK verlassen:

Danach in die Einstellungen / Sitzung und Startverhalten gehen, auf den Tab „Automatisch gestartete Anwendungen“ wechseln, auf „Hinzufügen“ klicken und den Befehl passend eintragen – ich habe ihn hier noch in ein Script gepackt und entsprechend das Script eingetragen:

/dev/tty…: Keine Berechtigung

Kurztipp: Um einem Benutzer Zugriffsrechte für eine serielle Schnittstelle zu geben, füge man ihn der Gruppe dialout hinzu. Die Änderung wirkt sich erst nach dem nächsten Login aus.

Beispiel: cutecom

dev-ttyS0

Beispiel: Direktzugriff auf das Device

dirk@n145:~$ echo "Hello World" > /dev/ttyUSB0
-bash: /dev/ttyUSB0: Keine Berechtigung

Beispiel: VirtualBox

dev-ttyS0-vb

Fehlt die Gruppenzugehörigkeit des Benutzers, der VirtualBox inklusive Durchreichen der seriellen Schnittstelle im Portmodus „Host-Schnittstelle“ verwendet, so kann die virtuelle Maschine wegen der fehlenden Zugriffsmöglichkeit gar nicht gestartet werden.

Lösung:

Nun wäre es möglich, eine Anwendung auch mittels sudo zu starten, aber oftmals ist es nicht erwünscht, dass Anwendungen mit root-Rechten laufen. Das Hinzufügen des jeweiligen Benutzers zur Gruppe dialout beseitigt das Problem.

dirk@n145:~$ sudo gpasswd --add dirk dialout
Benutzer dirk wird zur Gruppe dialout hinzugefügt.
dirk@n145:~$ logout
dirk@n145:~$ echo "Hello World" > /dev/ttyUSB0 && echo "ok" || echo "NOK"
ok

Wichtig: Erst ausloggen und wieder neu einloggen.

cifs mount error(5): Input/output error

Kurztipp: Wenn das Mounten eines Samba-Shares unter *Ubuntu einfach nicht mehr gelingen will, dann könnten die folgenden wundersamen acht Zeichen helfen, die Haare vor dem Zerraufen zu bewahren:

mount -t cifs //smbserver/smbshare /mnt/local/mountpoint -o,username=johndoe,password=secret,sec=ntlm

In der /etc/fstab packt man die zusätzliche Option hinter die Mount-Optionen:

//smbserver/smbshare /mnt/local/mountpoint cifs credentials=/home/johndoe/cred.smbserver.smbshare,sec=ntlm 0 0

(via: LinuxQuestions.org)