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: System Policy prevents Wi-Fi scans (Ubuntu 24)

Der hier geschilderte Kurztipp funktioniert unter Ubuntu 24 leider nicht mehr, weil – kurz gesagt – sich etwas bei polkit geändert hat. Nachdem ich nun ein dist-upgrade auf Ubuntu 24.04 LTS durchgeführt habe, erhielt ich nach dem Login über RDP spätestens nach einem Klick auf das Netzwerk-Icon in der Taskbar wieder folgende Meldung:

Die Regelsyntax hat sich bei polkit geändert, nun ist eine JavaScript-artige Form an anderer Stelle erforderlich:

$ sudo su

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

# vi 51-allow-network-manager-wifi-scan.rules

Nun kopiere man folgende Zeilen hinein, speichere und beende den vi.

polkit.addRule(
   function(action, subject) {
      if (action.id == "org.freedesktop.NetworkManager.wifi.scan"
         // && subject.user == "USERNAME"
      ) {
         return polkit.Result.YES;
      }
   }
);

Hinweis: Diese Regel erlaubt allen Benutzern den Wi-Fi-Scan, da die Zeile mit der Überprüfung des Benutzernamens durch die beiden „//“ auskommentiert ist.

Nach dem Ausloggen und erneuten Einloggen über RDP oder XDMCP sollte die Meldung nicht mehr erscheinen. Falls doch: Reboot tut gut.

Kurztipp: für andere Benutzer nicht lesbare Dateien finden

Situation: Sicherung eines Verzeichnisses (z.B. /etc) als normaler Benutzer, manche Dateien werden allerdings nicht gesichert da Leserechte nicht vorhanden sind.

Frage: Um welche Dateien handelt es sich dabei?

Antwort:

sudo find /etc -type f ! -perm -o=r

Erläuterung: Als Superuser findet der Befehl im Verzeichnis /etc Dateien (keine Ordner, das wäre -type d), die nicht (!) für „andere Benutzer“ (o wie others) die Berechtigung (permission) zum Lesen das Leserecht (r) gesetzt haben.

Problem: Es könnte Dateien geben, die zwar die Leseberechtigung für Others haben, aber in Ordnern liegen, die gar nicht von Others besucht werden dürfen.

Frage: Um welche Ordner handelt es sich dabei?

Antwort:

sudo find /etc -type d ! -perm -o=rx