Ubuntu: Ersatz für gksu

Bis Ubuntu 18.04 gab es das Hilfsprogramm gksu, mit dessen Hilfe man – zum Beispiel innerhalb eines Scriptes – ein anderes Programm als Root starten konnte, indem man „zwischendurch“ das nötige Passwort eingab. Ab dieser Version wurde das aus den Paketquellen entfernt, weil es als Sicherheitsrisiko eingestuft wurde. Damit funktionierten dann plötzlich alle Scripte und (bei mir) Shortcuts nicht mehr, die darauf angewiesen waren (siehe hier bei mir Upgrade Ubuntu 16 nach 18: einige Hürden).

Es gibt Anleitungen im Netz, wie das Problem behoben werden kann, indem man Pakete aus alten Ubuntu-Quellen (Archiv) installiert. Das ist sicher etwas fragwürdig und kann auch kein Update bekommen.

Viel besser ist da der reguläre Weg, der mit dem Befehl sudo arbeitet:

sudo -A <programm>

Das -A bewirkt die Einbindung eines als Askpass bezeichneten Hilfsprogramm, dass das Passwort grafisch (!) abfragt und über sein stdout an den Aufrufer zurückgibt. Allerdings muss dazu etwas getan werden, sonst gibt es eine Fehlermeldung. Zunächst wird der Helfer installiert, der eigentlich für den SSH-Zugriff gedacht ist:

sudo apt install ssh-askpass-gnome

Dann öffnet man als Root die Datei /etc/sudo.conf und fügt eine Zeile zu:

# Use the OpenSSH askpass
#Path askpass /usr/X11R6/bin/ssh-askpass
Path askpass /usr/lib/openssh/gnome-ssh-askpass

Es ist kein Neustart nötig – der nächste Aufruf von „sudo -A“ funktioniert!

Linux: Thunderbird im SysTray starten und halten

Thunderbird beherrscht es von allein nicht, in den SysTray verkleinert zu werden un damit praktisch im Hintergrund zu laufen. Dazu ist eine Hilfsanwendung nötig, bei mir bisher Birdtray. Dieses gefällt mir nicht – es sieht altbacken aus und ist eben eine extra zu pflegende und noch dazu recht alte Anwendung (2020). Als ich das Problem erstmalig in Angriff genommen habe, fand ich aber nichts anderes und habe bis jetzt damit gelebt. Zumindest das Hauptanliegen – das Laufen im Hintergrund – wird damit ja erfüllt.

Eben habe ich nochmal nach Lösungen gesucht und dabei SysTray-X gefunden und eben ausprobiert. Und siehe da: Es sieht wesentlich eleganter aus und ist eine echte Erweiterung für Thunderbird, kein extra Programm. Es wird über ein eigenes Repository installiert und damit automatische gepflegt. Einiger Nachteil gegenüber Birdtray ist, dass die Darstellung der Anzahl neuer Mails nicht vom Konto abhängig gemacht werden kann – was aber m. E. sowieso nie wirklich funktioniert hat.

Die Installation ist einfach und wird hier [1] für viele Linux-Systeme ausführlich dokumentiert (englisch). So wird das am Beispiel von Xubuntu 20.04 gemacht (Achtung: die erste und dritte Zeile sind jeweils EINE Zeile in der Shell!):

wget -q https://download.opensuse.org/repositories/home:/Ximi1970/xUbuntu_20.04/Release.key

sudo apt-key add Release.key

sudo bash -c 'echo "deb https://download.opensuse.org/repositories/home:    /Ximi1970:/Mozilla:/Add-ons/xUbuntu_20.04 ./" > /etc/apt/sources.list.d/systray-x.list'

sudo apt update

sudo apt install systray-x

Beim nächsten Neustart von Thunderbird ist die Erweiterung SysTray-X vorhanden und sofort lauffähig. Mit einer Reihe von Optionen kann sie nun noch optimiert werden.

Achtung: Nach Ubuntu 22.04 wird apt-key nicht mehr unterstützt. Deswegen ist das in [1] beschriebene Verfahren für Ubuntu 22.04 etwas anders:

wget -q https://download.opensuse.org/repositories/home:/Ximi1970/xUbuntu_22.04/Release.key

sudo mv -f  Release.key  /etc/apt/trusted.gpg.d/Systray-x.Ximi1970.asc

sudo bash -c 'echo "deb https://download.opensuse.org/repositories/home:/Ximi1970:/Mozilla:/Add-ons/xUbuntu_22.04 ./" > /etc/apt/sources.list.d/systray-x.list'

sudo apt update

sudo apt install systray-x

Auch die Quellen zum selber Kompilieren sind verfügbar.

Hinweis: Zumindest bei mir (Xfce4) ist das Symbol von Systray-x im Systray zunächst nicht sichtbar! Dazu muss ein Panel-Reload gemacht werden. Beim Booten mache ich das, indem ich mit einer möglichst kleinen Zeitverzögerung (hier 5 Sekunden, das kann je nach Startverhalten beliebig erhöht werden) folgendes auslöse:

sleep 5 && xfce4-panel -r

[1] https://github.com/Ximi1970/systray-x#binaries-system

Android: Wahl des Filemanagers

Zur Grundausrüstung meines Xiaomi Redmi Note 9 gehört ein simpler Dateimanager, der zwei für mich wichtige Dinge nicht kann: Die Änderung der Standard-App zum Öffnen einer Datei (das ging früher immer!) und das Platzieren einer Datei oder eines Verzeichnisses auf einem der Desktops. Eigentlich gehört das zum Standard von Android – dachte ich…

Ich habe nun viele Dateimanager aus dem Play Store ausprobiert, die alle mehr oder weniger für mich passten. Natürlich gehen solche Boliden wie der von Windows bekannte Total Commander, aber ich will auf einem Mobiltelefon keine umfangreiche Dateiverwaltung machen – nur mal löschen, umbenennen, verschieben und eben die beiden oben genannten Aufgaben müssen gehen.

Ich dachte auch nicht, dass die Einstellung einer Standard-App zum Öffnen vom System geliefert wird. In allen Beschreibungen für Anfänger steht sinngemäß: Man tippe etwas länger auf einen Dateinamen, wähle dann „öffnen mit“, wünsche sich aus einer Liste die gewünschte App aus und hat dann die Wahl zwischen „einmal“ und „immer“. So kenne ich das auch von früher. Aber nein! Für dieses Verhalten sorgt der installierte Dateimanager, das System sorgt nur für die Möglichkeit. Kann es der Dateimanager nicht, dann gibt es die Auswahl „immer“ nicht. So ging es mir und ich suchte ewig nach dem Fehler.

Lange Rede, kurzer Sinn. Ich kam nicht umhin, sich einen Dateimanager zu suchen, der für mich eben die beiden Wünsche erfüllt. Ich habe nun eine App mit dem schönen passenden Namen „Dateimanager“ gefunden, mit der ich zufrieden bin und die ich hiermit empfehlen kann:

https://play.google.com/store/apps/details?id=files.fileexplorer.filemanager&hl=de

Nebenn der eigentliche Arbeit ist dazu noch ein Player bzw. Betrachter für Musik, Videos und Bilder sowie ein Auspacker (nicht ausprobiert, ZIP?) integriert.

Die heute letzte Version ist vom 10.1.2023, die App wird also wohl gut gepflegt.

Ubuntu: CUPS Anzeige verbessern

Wenn ich im Browser CUPS aufrufe und die fertiggestellten Aufträge aufliste (http://localhost:631/jobs?which_jobs=completed), kommt bei Name/Benutzer nur „Unbekannt Zurückbehalten“. Das ist wenig hilfreich. Wie kann ich das verbessern?

Als root bearbeite ich mit einem Editor die Steuerdatei für CUPS wie folgt: Aus

<Policy default>
    JobPrivateAccess default
    JobPrivateValues default
    ...

wird

<Policy default>
    JobPrivateAccess default
    JobPrivateValues none
    ...

Danach wird CUPS neu gestartet mit

sudo systemctl restart cups

und in der Liste erscheinen dann wunschgemäß der Dateiname und der User zu jedem Vorgang.

LibreOffice: Lücken im Wort nach PDF-Export

Ich benutze LibreOffice (LO) Version: 7.4.2.3 für Linux und schreibe gerade einen langen Text, ein Buch mit etwa 250 Seiten. Es wird viel ergänzt, eingeschoben oder gekürzt. Automatisch gesetzte Trennstellen der Silbentrennung in Worten rutschen über die Zeilenenden hin und her, dabei verschwinden sie und erscheinen neu. Am Textbild bemerkt man fast nichts ungewohntes. Als Optionen für die Ansicht habe ich die Formatierungszeichen nicht angeschaltet (die würden hier auch nicht helfen) und die Feldhinterlegungen zunächst auch nicht.

Nach dem Export als PDF erscheinen aber an sehr vielen Stellen plötzlich kurze Lücken mitten im Wort, kleiner als normale Leerzeichen – offenbar genau an solchen Trennstellen, die nun keine Silbentrennung mehr darstellen. Je länger ich am Text gearbeitet habe, um so mehr werden es. Bei genauem Hinsehen erkennt man die Stellen auch im Text in LO als ganz schmale Lücke. Überfährt man sie mit der Tastatur, muss man mit der Cursortaste dort zweimal drücken – da ist also „irgendwas“! Man kann „es“ aber nicht einzeln markieren.

Ich habe mir Hilfe im deutschsprachigen LibreOffice-Forum gesucht und einen Thread eröffnet. Einen Tag später hatte ich genug Hinweise und eine praktikable Lösung [1], die ich hier kurz beschreiben möchte. Nach meiner Meinung ist es ein Fehler in LibreOffice beim Export eines Textes (nur bei ODT?) nach PDF, den ich mit dem Workaround nicht beheben, aber umgehen kann.

Also: Im PDF sieht man im fraglichen Wort eine ganz schmale Lücke, die man beim flüchtigen Lesen übersieht. Man schaltet in LO die Ansicht / Feldhinterlegungen ein und öffnet das Dokument. In dem Wort sieht man nun grau hinterlegt einen kurzen Bindestrich ohne Lücken an den Seiten. Das ist eine Stelle, an der die Silbentrennung schon mal gewirkt hat, bevor sie durch Umformatierungen wieder zurückgenommen wurde – das erspart LO anscheinend den erneuten Blick in sein Regelwerk beim nächsten Einlesen und damit Ladezeit. Das hat Sinn.

Keinen Sinn hat es, dass diese unsichtbaren Stellen im PDF als Lücke dargestellt werden – das ist ein Fehler von LO beim PDF-Export! Getestet habe ich das mit Adobe Reader und Evince, es ist also kein Fehler der PDF-Reader. Das fragliche Zeichen ist hexadezimales 0xAD, wie ich mit einem Programmier-Editor gefunden habe, und das müsste beim Export einfach übergangen werden.

Wie umgeht man nun den Fehler? Eigentlich ist es ja keiner im Dokument, denn das sollte die sinnvollen Steuerzeichen ruhig enthalten dürfen.

Da man das Zeichen 0xAD nicht eingeben kann, muss man es in einem Wort isolieren und dann im gesamten Dokument gegen „nichts“ ersetzen. Man muss also eine Fundstelle im PDF finden und diese dann auch im ODT suchen. Nehmen wir an, man findet das Wort „Dampf=walze“ – das = soll hier die beschriebene Trennstelle darstellen. Man kopiert das ganze Wort mit Strg-C in die Zwischenablage, ruft „Bearbeiten / Suchen und Ersetzen“ auf und kopiert mit Strg-V das Wort mitsamt der Trennstelle in das „Suchen“-Feld. Die Trennstelle ist hier wirklich unsichtbar – nicht beirren lassen! Jetzt wird es ernst:

Man löscht in diesem Wort von links mit ENTF die Buchstaben bis zu genau dem Zeichen vor der unsichtbaren Trennstelle („Dampf“), von rechts mit <– (löschen) bis zum Zeichen genau nach der Trennstelle („walze“). In diesem Feld steht nun nichts sichtbares mehr, man kann auch den Cursor nicht bewegen – aber alles ist gut, da ist noch was! Im Ersetzen-Feld trägt man nichts ein, wirklich leer, kein Leerzeichen, und startet „alle ersetzen“. Schwupps, sind alle 1027 Fundstellen bereinigt! Das heißt, man möge VORHER eine Kopie anlegen, falls etwas schiefgeht…

Zur Kontrolle kann man nun wieder ein PDF mit neuem Namen (um vergleichen zu können) exportieren, darin dürften alle diese Fehler verschwunden sein.

Ich würde mich sehr über Kommentare freuen, vielleicht hat noch jemand Erklärungen oder andere Hinweise zur Lösung des Problems?


[1] https://www.libreoffice-forum.de/viewtopic.php?f=5&t=38316
Vielen Dank an die Freunde im Forum, die mir so toll geholfen haben!

Abmahn-Falle reCaptcha

Wer freut sich nicht darüber, auf Websites mit Formularen immer wieder Bilderrätsel lösen zu müssen, die oft kaum erkennbar sind oder falsch ausgewertet werden, oder seine Lese- und Rechenkünste der 1. Klasse unter Beweis stellen zu müssen. Die Rede ist von sogenannten Captchas [1]. Sie dienen dazu, Maschinen – also Programmen – das automatische Ausfüllen von Formularen zumindest so zu erschweren, dass davon abgesehen wird. Damit soll in der Regel die Flut von Spam-Kommentaren verhindert werden.

Besonders bekannt sind die Captchas von Google. So ausgeklügelt die heute auch sind und wie gut sie auch ihren Zweck erfüllen, so haben si doch einen entscheidenden Nachteil. Neben ihrer Hauptaufgabe aus Nutzersicht schicken sie jedoch im Hintergrund eine Menge zwar anonyme, aber persönliche Daten zu Google. Neben den technisch notwendigen wie den IP-Adressen, werden Orte, Browser, Plugins, Mausbewegungen… gesammelt und statistisch ausgewertet. Das ist der eigentliche Gewinn für Google, alles andere ist nur Werkzeug. Eigentlich eine Win-Win-Situation, aber eben ein Dorn im Auge der Datenschützer.

Worum es hierbei im Detail geht und warum das aus Sicht der Datenschützer problematisch ist, wird hier [2] gut beschrieben, das muss ich hier nicht nochmal machen.

Um das Problem generell zu umgehen, bietet sich die Nutzung grundsätzlich anderer Konzepte als die diversen Captcha-Lösungen, insbesondere der von Google, an. Mein Favorit ist der „Honigtopf“, ein altbekanntes Mittel, um Fliegen und andere schädliche Insekten anzulocken und unschädlich zu machen. Für unsere Zwecke heißt das tatsächlich „Honeypot“ und beschreibt eine Programmiertechnik innerhalb einer Website, lüsterne Bots (spezielle Suchmaschinen) auf die falsche Fährte zu locken und damit unschädlich zu machen.

Für WordPress gibt es eine Reihe von Plugins, die das realisieren. Welches geeignet ist, hängt ab von anderen verwendeten Techniken, z. B. von benutzten Formular-Plugins wie CF7 oder WPForms. Manches kann man gut kombinieren, z. B. „Honeypot for CF7“ und „Blackhole for Bad Bots“. Man suche einfach mal Plugins mit „Honeypot“ und es finden sich einige, die man probieren kann.

Hat man das erledigt, kann in der Datenschutz-Erklärung der Abschnitt zu Captchas ersatzlos gestrichen werden, der sonst wegen der ungewollten Datenübertragung nach Übersee nicht fehlen dürfte.


[1] https://de.wikipedia.org/wiki/Captcha
[2] https://www.dr-datenschutz.de/google-recaptcha-und-der-datenschutz/

Abmahn-Falle Google Fonts

Es scheint wieder eine neue Abmahnwelle anzurollen. Sie ist nicht neu, aber besonders hinterhältig. Der Hintergrund ist, dass Google eine riesige Menge Schriften (Fonts) zur kostenlosen Verwendung anbietet, indem sie einfach in der eigenen Website verlinkt und beim Laden der Seiten online bezogen werden. Dabei werden – so funktioniert eben das Internet! – neben der eigenen IP-Adresse auch einige anonyme Daten des Browsers zu Google übertragen. Das stößt den Anwälten unter den Datenschützern (Stichwort: DSGVO, Datenschutz-Grundverordnung) auf und sie wittern Profit. Denn dieser Datenübertragung stimmt der Nutzer in der Regel nicht bewusst zu. Was für ein Irrsinn! Es werden dann Abmahnungen im niedrigen dreistelligen Bereich verschickt, die meist schnell bezahlt werden, weil sich ein Rechtsstreit deswegen nicht lohnt. Das bei 1000 „Klienten“ ergibt ein hübsches Sümmchen.

Insbesondere bei Websites mit WordPress, bei deren verwendetem Theme die verwendete Schrift (Font) von Google oft fest einprogrammiert ist, ist das unter Umständen schwer zu beheben. Es gibt Plugins, die sowas beheben sollen, was aber aus meiner Erfahrung nicht geht und sogar in einer „weißen Seite“ enden kann.

Ist die Website vorhanden – egal ob konventionell oder z.B. WordPress -, muss man zunächst herausfinden, welche Google-Fonts verwendet und tatsächlich online bezogen werden. Nur um diese geht es in diesem Zusammenhang, alle anderen Techniken werden jetzt nicht betrachtet. Das lässt sich zum Beispiel mit diesem Tool machen:

[1] https://fonts-check.de/

Gibt es „schädliche“ Fonts, werden die aufgelistet. Oft erscheinen dort mehrere Versionen, also Dateiformate – entscheidend ist nur der darinsteckende Name, z.B. „Roboto“. Erscheint nichts, ist alles gut.

Konventionelle Website

Hat man eine konventionelle Website, die man selbst geschrieben hat, stehen die Aufrufe der Google-Fonts im Head-Bereich in einer Form wie

<link href=“https://fonts.googleapis.com/css?family=Roboto’ rel=’stylesheet“>

Diese Zeilen werden auf allen Seiten gelöscht. Stattdessen wird in die normalerweise immer vorhandene zentrale CSS-Datei der Code eingefügt, den man sich mit dem Tool

[2] Google Webfonts Helper (google-webfonts-helper.herokuapp.com/fonts)

(leider nur in Englisch verfügbar!) komfortabel zurechtmachen lassen kann. Dabei kommen solche recht komplexen Styles heraus, die man dann den entsprechenden Selektoren (auch *) zuweisen kann:

* {
    @font-face {
      font-family: 'Roboto';
      font-style: normal;
      font-weight: 400;
           url('../fonts/roboto-v30-latin-regular.woff2') format('woff2'),
           url('../fonts/roboto-v30-latin-regular.woff') format('woff'),
           url('../fonts/roboto-v30-latin-regular.ttf') format('truetype'),
           url('../fonts/roboto-v30-latin-regular.svg#Roboto') format('svg');
    }
}

Die Zeilen für den IE 8/9 habe ich gleich weggelassen, die braucht keiner mehr.

Website mit WordPress

Hier gibt es mehrere Möglichkeiten. Die einfachste ist, dass das verwendete Theme das „Verstecken“ benutzter Google-Fonts gleich selbst mitbringt oder gar keine verwendet.

Etwas aufwändige kann es werden, wenn es welche verwendet, die aber fest im Theme kodiert sind. Dann kann man nur versuchen, das Verstecken mit einem geeigenten Plugin zu bewerkstelligen wie zum Beispiel „OMGF | GDPR/DSVGO Compliant, Faster Google Fonts. Easy.“ (OMGF) oder „Local Google Fonts“. Man kann auch versuchen, die Verwendung ganz abzuschalten, z.B. mit dem Plugin „Disable and Remove Google Fonts“. All das muss nicht funktionieren und kann schlimmstenfalls dazu führen, dass beim Neuladen des Backends oder der Website selbst nichts mehr erscheint außer einer wenig sagenden Fehlermeldung: Dann hilf nur der beherzte Zugriff über FTP auf /wp-content/plugins und das Löschen des Verzeichnisses <plugin-name>, den man sich hoffentlich gemerkt hat… (es empfiehlt sich also ein vorheriger Blick dorthin, um den Namen zu kennen).

Fazit

Auch wenn die Abmahner für diesen unsinnigen Lapsus „nur“ etwa 300 € haben wollen, sollte man die Sache rechtzeitig beheben. Manchmal sind die Fonts überflüssig, weil sie gar keinen Gewinn gegenüber Standardschriften bringen, aber Ladezeit bewirken. Möchte man sie wegen der Ästethik haben, lohnt sich der Aufwand. Übrigens auch dann, wenn ihr Websites für Kunden macht: Man wird das Engagement loben und die 300 € lieber euch geben statt den Anwälten.


Ich bitte um Ergänzungen in euren Kommentaren! Ich werde aber kaum für alle möglichen Fälle wie exotische CMS oder E-Commerce-Sites Empfehlungen zusammentragen, dazu ist das Thema einfach zu vielfältig.

Thunderbird: Aktivierung von eigenem CSS-Code

Mancheiner bemüht sich vergeblich, eigenen Code in Thunderbird’s userChrome.css und userContent.css unterzubringen und verzweifelt daran, dass das einfach nicht wirkt. Man muss Thunderbird zuvor sagen, dass das auch benutzt werden darf und soll! Ob das eine Sicherheitsmaßnahme ist, sei dahingestellt. Also:

Entweder baut man direkt in prefs.js folgendes ein – was ich wegen der Fehleranfälligkeit sehr ungern tue:

 user_pref("toolkit.legacyUserProfileCustomizations.stylesheets",true);

Oder man geht in Thunderbird in „Einstellungen/Allgemein“ nach ganz unten zu „Konfiguration bearbeiten, gibt dort den Schlüssel

toolkit.legacyUserProfileCustomizations.stylesheets

ein und setzt ihn auf true. Er steht standardmäßig auf false.

Voilá.

WordPress: Öffentlicher PGP-Schlüssel in Mediathek

Der öffentliche Schlüssel für die Benutzung von PGP zum Beispiel für Emails muss ja öfentlich verteilt werden können. Da es eine ziemlich lange unleserliche ASCII-Textdatei ist, empfiehlt es sich, da in Form einer Datei zum Importieren zu tun.

Wer WordPress für seine Website benutzt, wird das (wie ich hier auf der Seite Sicherheit) auf einer eigenen Seite tun und die Datei beispiel_schluessel.asc als File-Download anbieten. Dazu muss die Datei aber zunächst in die Mediathek aufgenommen werden. Und das gelingt nicht ohne weiteres, weil Textdateien wie .txt oder .asc noch hochgeladen werden können. Das sind angeblich Sicherheitsgründe – bei Texten? Okay…

Ich umgehe das auf folgende Weise. Hat man Zugriff auf das Wurzelverzeichnis seiner WordPress-Installation und damit auf wp-config.php, kann man dort folgende Zeile eintragen:

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Dann lädt man seine Datei hoch und kommentiert anschließend diese Zeile gleich wieder aus.

// define( 'ALLOW_UNFILTERED_UPLOADS', true );

Denn die Einstellung würde es in einem vielleicht vorhandenen Formular erlauben, jede beliebige Datei hochzuladen, was tatsächlich riskant wäre.

Es gibt eine ganze Reihe Plugins, mit denen man die Liste der erlaubten Dateitypen erweitern können soll. Ich habe einige hierfür ausprobiert, es hat nicht geklappt. Und es wäre auch mit Kanonen auf Spatzen geschossen wegen einer einzigen Datei, oder?