ubuntuusers.de

18. Mai 2021

Di, 18. Mai 2021, Joël Schurter

Die auf OpenSUSE basierende Linux-Distribution hat gestern eine neue Version für ihre Rolling-Sparte veröffentlicht. Neu wird bei einer Installation von GeckoLinux standardmässig btrfs als Dateisystem genutzt. Des Weiteren wurden auch einige Desktops und andere Pakete aktualisiert.

In dieser Version wurde an vielen Ecken und Enden geschliffen, insbesondere was die Desktops und die Benutzerfreundlichkeit angeht.

Durch einen "Mehrheitsbeschluss" wurde nun das Standard-Dateisystem im Installer gewechselt. Deshalb ist nun in den verschiedenen auf Calamares basierenden Installationsprogrammen das Dateisystem btrfs mit transparenter Zstd-Datenkompression standardmässig eingestellt. Natürlich werden auch alle anderen modernen Linux-Dateisysteme weiterhin über die Option "Custom Partitioning" unterstützt.

Darüber hinaus ist zRAM-Swap von Haus aus aktiviert und auch der EarlyOOM-Daemon ist ebenfalls aktiviert. Dieser dient dazu, nicht wiederherstellbare Systemeinfrierungen in Situationen mit wenig Speicher zu verhindern.

Für Benutzer von neuerer Ryzen-Hardware ist der xf86-video-amdgpu-Treiber ab diesem Update verfügbar. Ausserdem gibt es Verbesserungen im Skript des Sprachinstallationsprogramms, um es zuverlässiger und kompatibel mit zukünftigen Paket-Updates zu machen.
Dazu wird geraten, den Wiki-Artikel zur Verwendung von anderen Sprachen zu beachten.

Ebenfalls aktualisiert wurden die folgenden Desktops:

  • Gnome auf Version 40
  • Cinnamon 4.8.6
  • Plasma 5.21.5
  • Budgie 10.5.3
  • LXQt 0.17
  • XFCE 4.16
  • Mate 1.24
  • Pantheon (verschiedene Komponenten mit eigenen Versionen)

Weitere Änderungen und Updates sind im Changelog und den Quellen nachzulesen:

Release Notes: https://github.com/geckolinux/geckolinux-project/releases/tag/210517.999

https://9to5linux.com/geckolinux-switches-to-btrfs-by-default-now-offers-gnome-40-1-lxqt-0-17-and-budgie-10-5-3

Di, 18. Mai 2021, Niklas

NomadBSD ist ein FreeBSD-Derivat, das für Live DVDs oder auch als fest installiertes Betriebssystem verwendet werden kann und direkt einen modernen, benutzerfreundlichen Desktop auf Basis von Openbox und Plank mitbringt (wir haben es vorgestellt).

Der bedeutendste Unterschied dabei ist, das jetzt FreeBSD 13.0-RELEASE als Basis benutzt wird. Das bedeutet, dass viele bedeutende Verbesserungen am FreeBSD Kernel (wir berichteten) ihren Weg nun auch in NomadBSD gefunden haben. Durch zahlreiche neue Treiber in FreeBSD 13 profitieren vor allem neuere Geräte von dem Update.

Ausserdem wurde das Versionsschema geändert. Zuerst kommt die FreeBSD Version mit Major Version, Minor Version und Art der Version (ALPHA/BETA/RC/RELEASE). Aus FreeBSD 13.0-RELEASE wird so NomadBSD 130R. Darauf folgt das Datum, an dem die Version veröffentlicht wurde, beginnend beim Jahr, dann Monat und zum Schluss der Tag.

Diese Umstellung wurde nötig, weil man in Zukunft mehrere NomadBSD Versionen auf Basis verschiedener FreeBSD Versionen anbieten möchte. Früher gab es immer nur eine aktuelle NomadBSD Version nach dem Versionsschema 1.X.

Des Weiteren wurde die Partitionierung auf 1M verändert, um die Schreibgeschwindigkeit auf Flash Speichern wie SSDs und USB-Sticks zu verbessern. Es wurden auch Treiber für virtuelle Maschinen von VMware hinzugefügt und ein Fehler behoben, durch den GLX deaktiviert war.

Quelle: https://nomadbsd.org/#130R-20210508

Hinweis: Der Screenshot stammt aus dem Review der Vorgängerversion

Di, 18. Mai 2021, Joël Schurter

Die Entwickler der Livesystem-Distribution Tails haben dazu aufgerufen, die neueste Version 4.19 rc1 zu testen. In der Vergangenheit gab es immer wieder Probleme und Missverständnisse bezüglich der Verbindung zum Tor-Netzwerk, dies soll mit dieser Version deutlich verbessert werden.

Insbesondere folgende Bereiche/Szenarien sollten laut den Entwicklern getestet und bei Fehlern gemeldet werden:

  • sich von einer WLAN-Verbindung mit Internetanschluss trennen und danach mit einer WLAN-Verbindung ohne Internetanbindung verbinden
  • Via Proxy mit dem Internet verbinden
  • wenn man sich mit Bridges (Brücken) mit Tor verbindet, jedoch die Verbindung nicht hergestellt werden kann.
  • Tails starten, wenn man noch nicht mit einem Netzwerk verbunden ist

Um die Tests möglichst genau und aufschlussreich durchzuführen, hat Tails hier einige Tipps und Tricks zusammengestellt.

Natürlich wurden auch hier einige Bugs behoben, neue Funktionen hinzugefügt und Anwendungen aktualisiert.

Folgende Neuerungen und Änderungen sind in der neuen Tails-Version 4.19, welche am 1. Juni 2021 erscheinen soll, zu erwarten:

  • Verbesserte Netzwerk-Hardware-Erkennung (z.B. falls eine WLAN-Karte nicht unterstützt wird)
  • Tor-Brücken dauerhaft im Speicher ablegen
  • Erkennung von Captive Portals, z.B. in manchen Hotels und anderen öffentlichen WLAN-Hotspots

Weitere Änderungen, Testszenarien etc. sind im Changelog nachzulesen:

https://gitlab.tails.boum.org/tails/tails/-/raw/4.19-rc1/debian/changelog

Die Entscheidung zwischen den großen Betriebssystemrichtungen fällt bei mir ziemlich schnell. Das System mit dem Apfel fällt für mich raus, weil ich keine 1000€ für einen Laptop ausgeben will, wenn man gute Businesslaptops schon für weniger als 500€ haben kann. Somit gibt es für die meisten Menschen nur noch dieses wundervolle System aus Redmond. Version 7 davon war ein wirklich tolles Betriebssystem mit einer meiner Meinung nach intuitiven Benutzeroberfläche und vielen netten Details. Ich weiß nicht so recht, wer auf die Idee kam, mit Windows 8 mit allen bisherigen Gewohnheiten der Windowsnutzer zu brechen und einmal den gesamten Desktop auf den Kopf zu stellen. Ich verstehe immer noch nicht, warum es “da” Entwickler gibt, die denken, dass man den Desktop in ein übergroßes Smartphone verwandeln muss. Ich zumindest will das nicht - und viele Andere wollten sich die Benutzeroberfläche von Win8 nicht antun und sind deshalb bei Version 7 geblieben. Das ging natürlich auch nicht an der Firma dieses unglaublich sympathischen Mannes vorbei, die hinter diesem “Betriebssystem” steht und es musste einen neue Windows-Version her: Windows 10 entsteht! Zur Oberfläche von Windows 10 hat Gerrit eine emotionale Zusammenfassung geliefert. Ich persönlich sehe Windows 10 als die “logische” (Logik scheint auch immer relativ zu sein…) Weiterentwicklung von Windows 8 und den Weg, den man versucht hatte, um dieses OS zu retten. Tatsächlich wirkt Windows 10 etwas stümperhaft zusammengeschustert mit Elementen aller bisheriger Windows-Versionen und will trotzdem mit den bekannten Regeln brechen und anders sein. Die Idee dahinter mag gut sein, ist aber meiner Meinung nach nicht sonderlich gut umgesetzt.

Da ich aber mit vielen Programmen arbeite, die es zum Großteil nur für Win, ApfelOS und Linux gibt, fallen für mich andere alternative - zum Teil auch vielversprechende - Betriebssysteme wie HaikuOS aus dem Wettbewerb heraus und es gibt eigentlich nur eine wirkliche Alternative: Linux!

Jetzt ist das ja nicht so einfach, weil es ja nicht ein “Linux” gibt. Wie bekannt ist Linux ja eigentlich nur der Betriebssystemkernel und das was landläufig als “Linux” bezeichnet wird, sind Distributionen, von denen es ja nicht so wenige gibt. Jetzt gibt es ja Stimmen, die eher für eine große einheitliche Linux-Distribution sind; ich bin da nicht für und finde diese Vielfalt zwar manchmal verwirrend, aber dennoch gut - warum dem so ist, habe ich schoneinmal erläutert.

Ich will so viel wie möglich über die normale Paketverwaltung installieren (und nicht über Flatpaks, Snaps, AppImages etc.pp.), also bleiben eigentlich nur noch ein paar große Distris übrig:

  • Debian und seine Ableger
  • Ubuntu (ja ich weiß, dass das ein Debian-Derivat ist, aber ich behandle es doch einmal gesondert)
  • Arch Linux
  • RHEL & Fedora und die jeweiligen Ableger

Vor allem was den letzten Punkt betrifft, kann ich nicht viel sagen, da ich weder RHEL, noch Fedora, noch einen Ableger der beiden jemals getestet habe, aber der Vollständigkeit wegen zähle ich sie trotzdem auf, da sie ja recht verbreitet und wohl auch nicht so schlecht sind.

Ich selber leide sicher nicht an Versionitis, brauche also auch nicht immer die neuesten Versionen. Mir ist wichtig, dass ich mich auf mein Betriebssystem verlassen kann, dass es täglich funktioniert, ich möglichst lange Updates erhalte und ich erwarte, dass ich eigentlich auch möglichst schnell Bugfixes erhalte. B Mein Einstieg in Linux fand mit einem Ubuntu-Derivat statt, das recht nah an Ubuntu ist, hauptsächlich etwas Theming betreibt und ein paar eigene Programme mitliefert. Dadurch bin ich dann durch ein paar Anleitungen im Wiki zu der wirklich tollen Community auf ubuntuusers.de gelangen und habe mich Ende letzten Jahres dort angemeldet. Ubuntu habe ich seitdem wirklich liebgewonnen und benutze es (bzw. das oben schon angesprochene Derivat Linux Lite) gerne. Wenn man sich mit Ubuntu intensiv auseinandersetzt, hört von Debian und beschäftigt sich früher oder später auch damit. Sowohl Debian als auch Ubuntu haben den Ruf, möglichst stabil zu laufen - und das stimmt so auch; ich hatte es bisher zumindest noch nie, dass Ubuntu plötzlich abgestürzt wäre und die meisten Fehler, die im Forum mit solchen oder so ähnlichen Problemen auftauchen sind im Regelfall selbstverschuldet. Wie gesagt: im Regelfall! Immer wieder gibt es auch Probleme, die durch Bugs ausgelöst werden, allerdings ist die Quote, was das betrifft, eher gering. Hier kommen wir aber auch zu einem großen Nachteil an diesen “stabilen” Betriebssystemen. Ein Bug muss ersteinmal gemeldet werden und dann bearbeitet werden. Die Änderungen landen, sofern sich überhaupt jemand des Bugreports animmt, bei Ubuntu ersteinmal in den Proposed-Quellen und werden dann später erst in die eigentlichen Quellen geschoben - das kann alles insgesamt schon einmal etwa zwei Wochen dauern. Man hat dann also zwei Wochen einen nervenden Bug. Ein im Moment recht prominentes Beispiel, war der Bug, der ein Ubuntu-Upgrade von Ubuntu 20.10 auf die aktuelle STS-Version 21.04 verhinderte. Der Bug wurde am 19.04.2021 auf Launchpad gemeldet, eine Fehlerkorrektur kam am 6.5.2021 in die Proposed-Quellen und am 11.5.2021 in die normalen Quellen für Updates. Und liebe Ubuntu-Entwickler (das was ich hier schreibe, gilt für die Debian-Entwickler und alle anderen Entwickler ebenso): Danke für eure Arbeit! Das ist gut so und macht so weiter, aber der ein oder andere Bug ist störend, wenn er gut drei Wochen offen ist.

Natürlich können in den vermeintlichen Bugfixes auch neue Bugs sein und von daher ist es sinnvoll, dass nicht alles im Akkordtempo in die normalen Quellen geschoben wird, sondern vorher getestet wird - gerade bei einer Distribution, die sich selbst das Ziel gesetzt hat, einsteigerfreundlich zu sein.

Leider, leider hat es bisher weder Ubuntu, Debian noch irgendeine Rolling-Release-Distribution geschafft, Bug 1 zu fixen. :)

Bisher habe ich hier in diesem Text Ubuntu und Debian eher zusammen behandelt. Wenn man mal von dem “Ballast”, den Ubuntu mit sich herumschleppt (z.B. Snaps, früher die Amazon-Integrierung) absieht, könnte man den Einruck bekommen, Ubuntu sei ein Debian in warmen Farben. Jetzt nehmen wir uns mal ein reguläres Debian-Installations-Medium und eines von Ubuntu. Wenn wir jetzt das Debian-Medium starten, werden wir früher oder später während der Installation gefragt, ob und wenn ja welche Desktopumgebung wir haben wollen. Das gibt es bei Ubuntu so nicht. Es gibt für jedes offizielle Derivat ein eigenes Image und dann noch das offizielle Image mit GNOME und das Server-Image ohne irgendeine Desktopumgebung. Wenn man sich außerdem mal eine Debian-Installation und eine Ubuntu-Installation anschaut, so sind bei Ubuntu wahrscheinlich meistens deutlich mehr Programme installiert, als bei Debian.

Das ist ein großer Punkt, bei dem man bei Distributionen unterscheiden muss: Es gibt Distributionen, die alles vorkonfiguriert und vorinstalliert haben (so Ubuntu) und es gibt die Distributionen, die dem Nutzer viel Wahl geben, wie er sein System gestalten will (so Debian und Arch). Das ist auch genau der Punkt, warum ich Debian und Ubuntu weiter oben in der Aufzählung getrennt habe (ganz abgesehen davon, dass Ubuntu recht autark arbeitet und sich (leider?) nur seht wenig von Debian beeinflussen lässt).

Während Debian und Ubuntu in vielen Punkten ähnlich (beziehungsweise vom Unterbau fast identisch) sind, geht Arch einen völlig anderen Weg.

Arch perfektioniert das Ziel, den Benutzer alles beeinflussen zu lassen. Das hat dann zwar zur Folge, dass die Installation rein auf Textebene ist und man (außer man installiert explizit etwas Anderes) auch nur ein System ohne irgendeinen Schnickschnack hat. Ich musste bei meiner Arch-Installation sogar die usbutils nachinstallieren. Was Arch außerdem von allen anderen hier genannten Distributionen unterscheidet, ist die Tatsache, dass es eine Rolling-Release-Distribution ist. Das bedeutet, dass man nicht alle 3 Jahre eine neue Version installieren muss, sondern jeden Tag mittels des Befehles pacman -Syu seine Installation auf den neuesten Stand bringt. Arch liefert außerdem eigentlich alles so gut wie ungepatcht aus, was vom Upstream an Paketen kommt. Wobei man hier anmerken muss, dass Arch auch so etwas wie die Proposed-Quellen unter Ubuntu hat, nur landen Änderungen sehr viel schneller in den regulären Quellen.

Arch Linux hat den Ruf eine Distri für fortgeschrittene Benutzer zu sein, weil man alles selbst machen muss und eigentlich nichts vorkonfiguriert ist. Das hat natürlich Vor- und Nachteile. Ein enormer Nachteil ist natürlich der Zeitaufwand, den man dafür aufbringen muss, dafür weiß man am Ende aber auch ziemlich genau, was das eigene System eigentlich so treibt und am Ende ist man wahrscheinlich selbst schuld für die meisten Fehler, weiß dann aber im Idealfall auch, wo man suchen muss. Außerdem gilt Arch als eine instabile Distribution, die häufiger mit Bugs zu kämpfen hat, weil ja alles direkt vom Upstream übernommen wird. Tatsächlich ist die Instabilität von Arch Linux wohl eher ein Mythos, der aus der Anfangszeit der Distribution stammt. Ich benutze Arch jetzt seit bald 2 Monaten und hatte bisher genau einen(!) Bug, den ich wirklich bemerkt hatte. Durch ein Update von GTK+ konnte Thunar nicht mehr starten und ich bin dann vorübergehend auf Natilus ausgewichen. Dieser Fehler war allerdings schon am nächsten Tag durch ein Update behoben und ich konnte Thunar wieder wie gewohnt nutzen! Andere (langjährige) Archnutzer haben mir berichtet, dass sie bisher in der ganzen Zeit noch nie durch einen Bug eingeschränkt wurden. Trotzdem würde ich Arch nicht als eine Einsteigerdistribution bezeichnen. Zwar ist man recht gut bedient, wenn man wirklich Willens ist und es gibt nichts was man nicht mithilfe der Wikis von Arch und dem von ubuntuusers lösen könnte (gut dann ist halt etwas Transferleistung gefragt), aber ich habe zum Beispiel mein allererstes Linux so verbastelt, das ich nicht glaube, dass damit irgendjemand gerne sicher gearbeitet hätte und bin deshalb froh, dass ich diese Installation sowieso stilllegen musste, weil sie keinen Support mehr hatte und das gibt es eben so bei Arch nicht, da man sein System ja kontinuierlich aktuell hält.

Natürlich gibt es wenn man gerne “so etwas wie ein Rolling-Release” haben möchte, andere Alternativen. Wenn man sich zum Beispiel schon besser mit Debian respektive Ubuntu auskennt, ist vielleicht Debian Sid (oder das darauf aufbauende Siduction) eine schöne Alternative. Hierbei setzt man immer auf den Entwicklungszweig von Debian und muss nicht regelmäßig ein Dist-Upgrade von einer Debian-Version auf die Andere machen, sondern ist immer auf dem neuesten Stand (den Debian anbietet). Meiner Erfahrung (bisher allerdings nur in VMs) ist Sid eine recht gute Mischung aus aktueller Software und Debian-Stabilität. Man kann hier aber weder erwarten, dass man das selbe hat, wie bei einem normalen Debian Stable oder bei einem Arch. Außerdem gibt es für die Ubuntu-Nutzer auch einen Entwicklungszweig, mit dem man theoretisch sein System in ein Semi-Rolling-Release verwandeln kann. Da gibt es sogar ein Skript von Martin Wimpress. Inwiefern das sinnvoll kann jeder für sich selber entscheiden. Ich würde das allerdings nicht auf einem Produktivsystem machen!!

Wie schon erwähnt kann ich (leider) noch nichts zu RHEL, Fedora, openSUSE etc. sagen beziehungsweise schreiben.

Für jeden sind andere Distributionen passend und natürlich hat da jeder seine Präferenzen, aber ich habe auch meine:

Grundsätzlich habe ich mittlerweile wirklich Gefallen an Arch gefunden, auf den fremden Rechnern, die ich administriere kommt aber immer noch ein Ubuntu oder ein Derivat darauf, weil sich das System in meiner Erfahrung als sehr stabil und zuverlässig erwiesen hat und ich verstehe auch, warum Unternehmen eher LTS-Distributionen einsetzen. In nächster Zeit - bin ich mir sicher - landet bei mir irgendwo auf einer Festplatte sicher noch Debian Sid.

17. Mai 2021

Mo, 17. Mai 2021, Ralf Hersel

Die GNU/Linux-Distribution Deepin ist in der neuen Version 20.2.1 erschienen. Die chinesische Distro wird von Wuhan Deepin Technology entwickelt und gilt als eine der schönsten GNU/Linux-Distributionen aus dem Osten. Sie bietet ein sicheres, zuverlässiges und einfach zu bedienendes Betriebssystem, da es die letzte stabile Version von Debian (10.9 Buster) verwendet.

Die Debian-basierte Distribution, hat eine angepasste Oberfläche, den Deepin-Desktop mit den dazugehörigen Werkzeugen. Das Projekt hat am letzten Donnerstag eine neue stabile Version 20.2.1 veröffentlicht. Das neue Major-Release bringt eine Menge Verbesserungen, die das Betriebssystem deutlich schneller machen.

"In Deepin 20.2.1 wurde die Betriebsleistung der Prozessoren, die Netzwerkübertragung und -antwort, das Lesen und Schreiben von Dateien und die Grafik durch Optimierung der Konfiguration und des Kernels deutlich verbessert. Und der konventionelle Betrieb wurde vollständig optimiert. Mit diesen Verbesserungen geniessen Sie ein reibungsloseres Erlebnis und schnellere Reaktionen", so das Projektteam.

Tipps zur neuen Version und mehr zu den neuen Funktionen von Deepin 20.2.1 finden sich in der Release-Ankündigung.

Quelle: https://www.deepin.org/en/2021/05/13/deepin-20-2-1/

Dies ist ein Update zu den Beiträgen:

  1. Konzept zum Deployment meines Blogs mit Ansible und
  2. Erfahrungsbericht zum Deployment meines Blogs mit Ansible.

Umgebung

Aktuell nutze ich als Ansible Control Node (ACN) ein Debian Buster mit Ansible 2.7.7. Die Backups liegen wie gehabt auf einem Speicher im lokalen Heimnetzwerk.

Als Zielsysteme für die Wiederherstellung dienen ein Debian 10 (Buster) und Debian Testing (das kommende Bullseye). Bei beiden Zielsystemen handelt es sich um minimale Installation in zwei VMs auf einem KVM-Hypervisor.

Ablauf

Zuerst habe ich meinen Blog aus dem Backup auf der Debian 10 VM wiederhergestellt. Dabei gab es tatsächlich ein Problem. Das VHOST-Template für den Webserver entsprach nicht mehr der Version, die auf dem Produktivsystem zum Einsatz kommt. Ich hatte schlicht vergessen, die Änderung nachzupflegen. Der Fehler wurde schnell identifiziert und behoben. Anschließend verlief der Wiederherstellungsprozess reibungslos.

Beim zweiten Versuch erfolgte die Wiederherstellung auf einer VM mit Debian Testing (Bullseye). Dieser Test ist für mich wichtig, um zu sehen, ob ich meinen Blog auch auf der kommenden stabilen Debian-Version ausrollen kann. Hier waren etwas mehr Anpassungen an der Rolle „deploy-my-blog“ notwendig, um dieses Blog erfolgreich wiederherstellen zu können. So haben sich einige Paketnamen geändert:

Alter NameNeuer Name
python-aptpython3-apt
python-mysqldbpython3-mysqldb
Gegenüberstellung der alten und neuen Paketnamen

Doch auch an der VM selbst war ein manueller Eingriff notwendig, bevor sich mein ACN überhaupt mit dem Node verbinden konnte. Ansible konnte auf dem Node keinen Python-Interpreter finden. Ich schiebe die Schuld der Version 2.7.7 in die Schuhe. Nachdem ich einen Symlink von /usr/bin/python auf /usr/bin/python3 erstellt hatte, klappte der Zugriff.

Der letzte Stolperstein war php-fpm. Kommt unter Buster Version 7.3 zum Einsatz so ist dies unter Bullseye 7.4. Da die Versionsnummer in meiner Ansible-Rolle hart verdrahtet ist, war auch hier eine Anpassung notwendig. Anschließend gelang auch hier die Wiederherstellung.

Fazit

Grundsätzlich klappte die Wiederherstellung wie gewohnt. Den Fehler mit der VHOST-Datei könnte ich zukünftig vermeiden, indem ich diese einfach mit aus dem Backup wiederherstelle, statt ein Template zu nutzen.

Das bei der Wiederherstellung auf einer neueren Betriebssystemversion Anpassungen erforderlich sind, hatte ich erwartet. Diese halten sich meiner Meinung nach in Grenzen und sind akzeptabel.

Die längste Zeit beanspruchte das Kopieren der Backups auf die Zielsysteme. Die eigentliche Wiederherstellung war mit den Stolpersteinen in 10-15 Minuten. Mit fehlerbereinigter Rolle sogar nur noch ca. 5 Minuten. Eine manuelle Wiedereinrichtung hat mich früher eher zwischen 30-60 Minuten gekostet. Von daher bin ich sehr zufrieden.

16. Mai 2021

Seit etwas über einem Jahr arbeite ich bei GitLab und habe engen Kontakt mit Kunden, die entweder schon GitLab einsetzen oder bald einsetzen werden. Ein Thema was zuletzt immer häufiger aufkommt, ist das Thema „Monorepo“. Noch spannender ist, wie einige Kunden sagen, sie haben „mehrere Monorepos“, was keinen Sinn ergibt. Denn nicht umsonst setzt sich das Wort auf „mono“ und „repo“ zusammen, also „einzel“ und „Repository“. Im Endeffekt hat man also ein großes Repository wo der komplette Quellcode enthalten und verwaltet wird. Jedes Mal, wenn ein Kunde von „mehreren Monorepos“ spricht, dann zwickt mein Auge immer wieder stark, denn meistens ist damit eigentlich nur gemeint, dass es sich um „Multi-Projekt Repositorys“ handelt. Also sind es meist eher Repositorys wo mehrere Projekte innerhalb eines Repositorys verwaltet werden.

Stellenweise finden sich im Internet diverse Blogposts wo Monorepos die Abkürzung von „monolithisches Repository“ ist. Das ist nicht die Definition, die ich wählen würde und auch nicht die, die gängig verbreitet ist. Ein Monolith aus Sicht der Software-Entwicklung kann schließlich auch aus mehreren Repositorys bestehen – und tut es in vielen Umgebungen auch. Überschneidungen gibt es hier aber sicherlich.

Echte Monorepos finden sich in der freien Wildbahn eher selten. Der wohl bekannteste Vertreter ist Google. Google hat für ihre internen Tools ein großes Repository, was nicht auf Git aufsetzt, sondern eine proprietäre Eigenentwicklung ist. Enthalten ist dort der Quellcode und die Versionshistorie der ganzen Firma seit Anbeginn der Zeit. In einem Paper von Juli 2016 beschreiben sie recht ausführlich, wie ihr Monorepo aufgebaut ist, wie sie damit Arbeiten und wie groß es mittlerweile ist. Wem die Details interessieren, sollte da mal reinlesen. Knapp 5 Jahre später dürfte das Repository noch deutlich riesiger geworden sein.

Ein weiterer bekannter Nutzer von Monorepos sind weitere große Techfirmen wie Facebook, Microsoft oder Twitter. Bei jeder Firma dürfte die Nutzung durchaus unterschiedlich sein. Facebook setzt beispielsweise auf Mercurial als SCM tool. Details darüber schrieben sie im Blogpost „Scaling Mercurial at Facebook“. Der Artikel ist von Januar 2014, also auch schon etwas älter.

Warum überhaupt Monorepos?

Egal ob man mit multiplen Repositorys arbeitet oder mit einem Monorepo: Beide Varianten haben je nach betrachteten Aspekt Vor- und Nachteile. Während man bei einem Monorepo-Ansatz vielleicht nicht die Probleme des Multi-Repo-Ansatzes hat, bekommt man stattdessen andere Herausforderungen.

Statt hier plump die Vor- und Nachteile beider Varianten einzugehen, verfolge ich hier einen etwas anderen Ansatz und beleuchte einzelne Aspekte und Methodiken mit beiden Varianten. Dies betrifft sowohl technische Herausforderungen vom eingesetzten Versionsverwaltungsprogramm, als auch die Build-Tools, sowie die Arbeitsweise.

Internes Dependency-Managements

Ein wichtiger Grund für ein Monorepo (oder auch Multi-Projekt-Repository) ist die vereinfachte Möglichkeit des Managements von internen Abhängigkeiten. Und dieser Use-Case ist generell gar nicht mal so selten.

Häufig sieht es so aus, dass es innerhalb einer Firma mehrere Projekte gibt, welche die gleiche Abhängigkeit nutzen. Soweit nichts Besonderes. Aber wie sieht nun der Vorgang aus, wenn eine Änderung an der Abhängigkeit gemacht werden muss?

Im klassischen Konzept, also ohne einem Monorepo, werden gleich jeweils eine Änderung an zwei Repositorys benötigt: Einmal in der Library, wo die eigentliche Änderung durchgeführt wird und anschließend die nächste Änderung im Hauptprojekt. Diese ist allerdings abhängig von der Änderung der Abhängigkeit. Hier muss also erst einmal abgewartet werden, bis die Änderung eingeflossen ist, bevor so wirklich die Änderung im Hauptprojekt gemacht werden kann. Der Prozess dauert also automatisch etwas länger und führt zu längeren Entwicklungszeiten. Zusätzlich könnte auch noch sein, das mehrere Projekte diese Abhängigkeit verwenden und diese auch eine Änderung benötigen, diese muss – auch wenn es sich vielleicht nur um eine kleine Anpassung handelt – in jedem Projekt nachgepflegt werden.

Hier ist also schonmal ein wesentlicher Vorteil von Monorepos beziehungsweise Multi-Projekt-Repos: Eine Änderung in einer Abhängigkeit kann in einem Rutsch und einem Review durchgeführt werden. Komplexere Abhängigkeiten beim Mergen von Änderungen über verschiedene Repositorys hinweg wird vermieden und das Review ist gleichzeitig transparenter durchführbar, da man in einer Ansicht und mit einem Review projektübergreifend die Änderung überblicken kann.

Was ich hier allerdings noch nicht betrachtet habe, ist das CI (und CD) Setup, denn das hat auch einen wesentlichen Einfluss auf die Arbeitsweise. Aber dazu im nächsten Abschnitt mehr.

CI/CD und Build Tools

Ein weiterer Aspekt der wichtig zu betrachten ist, ist das Setup rund um CI/CD und den Build Tools. Wie im Abschnitt zuvor schon erwähnt steht und fällt es der verwendete Ansatz an den Tools und Workflows.

Um das Beispiel aus dem vorherigen Abschnitt fortzuführen ist es nun wichtig zu betrachten, wie der Build-Prozess nun aussieht. Im traditionellen Umfeld mit mehreren Repositorys hat jedes Projekt im Repository meistens eine Pipeline-Definition, welche bei jedem Merge-Request ausgeführt wird, um das Projekt zu bauen und zu testen. Kompliziert wird es aber, wenn man es auch „richtig“ testen will und das ist gar nicht so einfach.

Angenommen, die Abhängigkeit mit dem Namen „DependencyA“ ist die Abhängigkeit von „HauptprojektA“ und „HauptprojektB“. Wenn also für eine Änderung in „HauptprojektA“ eine Änderung in „DependencyA“ benötigt wird, dann muss diese Änderung da normal eingepflegt werden, worin dann die Pipeline läuft und das Projekt baut und die Tests ausführt. Wenn es erfolgreich war, dann wird ggf. eine neue Version getaggt, damit es dann von „HauptprojektA“ und „HauptprojektB“ referenziert und verwendet werden kann. Dort müssen dann nochmals Merge Requests erzeugt werden, die dann die Version von „DependencyA“ hochziehen und dann alles Bauen und Testen.

Das ist im Prinzip das, was ich auch zum internen Dependency-Management geschrieben habe. Das Problem hierbei ist, dass immer nur jedes Projekt für sich getestet wird, aber nicht alle Projekte als ganzes. Das heißt im Konkret, wenn die Änderung in „DependencyA“ zu einem Fehler im „HauptprojektB“ führt, muss der ganze Workflow wieder von vorne gestartet werden.

Was häufig aber fehlt, ist die Möglichkeit alle Projekte zu bauen, die voneinander abhängen für die einzelne Änderung. Das heißt, ich mache eine Änderung an „DependencyA“, die Pipeline baut nicht nur das Projekt selbst und testet es, sondern es zieht bei „HauptprojektA“ und „HauptprojektB“ die Änderung „trocken“ mit und baut es im gleichen Zuge auch mit durch und führt die Tests aus. So kann sichergestellt werden, dass die Änderung nicht zu Folgefehlern in den eigentlichen Projekten führt.

Beim Einsatz von mehreren Repositorys ist das nicht soo einfach zu lösen, da theoretisch automatisiert in den entsprechenden Reverse-Dependency-Projekten neue Branches mit den Änderungen erstellt werden müssen, um die Pipeline zu triggern. Oder es muss eine andere Art der Parametrisierung eingebaut werden, um dies zu bewerkstelligen. zuul-ci.org ist ein Projekt um so etwas umzusetzen. Praktische Erfahrung habe ich damit allerdings nicht.

In Monorepos ist das grundsätzliche Problem eine Änderung in allen Projekten durchzubauen auch enthalten, ist da aber grundsätzlich einfacher zu verwalten, weil es eben in einem Repository enthalten ist. Nichtsdestotrotz wird auch hier ein eigenes bzw. spezielles Buildtool benötigt, was selbstständig die Abhängigkeiten auf allen Projekten im Repository erkennt und entsprechend durchbaut. Das Buildtool Bazel unterstützt das und baut etwa nur die Änderungen durch, die auch wirklich benötigt werden.

Kollaborationen im Team und zwischen Teams

Beim Arbeiten über den Grenzen von verschiedenen Teams ist die Abstimmung bei Änderungen essenziell. Beim Einsatz von mehreren Repositorys sind die Verantwortlichkeiten über die Repository-Berechtigungen selbst gesetzt. Die Hürde bei „fremden“ Teams die Änderung an einer gemeinsam genutzten Abhängigkeit und beim Projekt selbst einzubringen ist häufig eher hoch. Aber das ist mehr eine organisatorische und auch kulturelle Frage.

In Monorepos und Multi-Projekt-Repos ist das nicht so einfach möglich, weil sich hier das klassische Modell nicht anwenden lässt. Dafür gibt es allerdings das Konzept der CODEOWNERS wo sich eintragen lässt, welcher User der „Eigentümer“ welches Unterverzeichnisses ist, damit diese im Code-Review automatisch benachrichtigt werden und nur diese es mergen dürfen. Diese Funktion ist keine Funktion von Git selbst, sondern wird von den verschiedenen Git-Hosting-Diensten selbst implementiert. In GitLab ist die Code Owners Funktionalität kostenpflichtig, in GitHub je nach Visbilität des Projekts auch.

Git Funktionen für große Repositorys

Bisher habe ich mich hauptsächlich mit den konzeptionellen Vor- und Nachteilen beschäftigt. Fakt ist allerdings, dass die echten Vor- und Nachteile sehr stark von den eigentlichen Firmen, Strukturen und Projekten ab.

Bisher habe ich nicht nur die Arbeitsweise und Workflows betrachtet, weniger wie gut bzw. schlecht es mit Git selbst funktioniert. Darum geht es nun in den folgenden Abschnitten.

Performance

Das Git von Haus aus nicht wirklich für große Repositorys gemacht ist, ist vielen mittlerweile hinlänglich bekannt, da alle Versionen aller Dateien im Standard im Repository enthalten sind. Je mehr Dateien und Verzeichnisse sind, desto eher wird die Performance leiden. Dies ist nicht nur daran geschuldet, dass das Repository sehr groß (in Gigabyte gemessen) wird, sondern auch, dass nicht effizient mit mehreren Millionen von Dateien umgehen kann.

Wie sich das ganze Auswirken kann, zeigt ein Konferenz-Vortrag von Microsoft: „Scaling Git at Microsoft“. Dort wird erzählt welche Probleme Microsoft hatte, um das Windows Repository auf Git zu migrieren. Es resultierte in ein 270GB großes Repository, wo das Klonen 12h gedauert hat, ein git checkout 3h, das Ausführen von git status auch immerhin 8 Minuten und Ausführen von git commit dauerte auch schon mal eben 30 Minuten. Alles wohlgemerkt auf SSDs. Aus technischer Sicht ist das ein sehr spannender Vortrag, bei dem ich erst richtig verstanden hab, was für Probleme Git bei großen Repositorys hat.

Allerdings muss man sowieso hervorheben, dass wohl die wenigsten Projekte wirklich so große Repositorys haben werden.

Git LFS

Ein angesprochenes Problem von Git ist wie zuvor erwähnt die Handhabung von Binärdateien. Dazu gibt es Git LFS, womit sich Binärdateien außerhalb des eigentlichen Git-Repositorys von Git speichern und verwalten lassen. Der einzige Zweck ist wirklich nur die Handhabung von Binärdateien und weniger von generellen großen Repositorys.

In einem separaten Blogpost habe ich das Thema Git LFS näher beleuchtet.

git submodule und git subtree

Wenn man mit mehreren Repositorys arbeitet, gibt es verschiedene Möglichkeiten die Abhängigkeiten mit hereinzuziehen. Wenn diese Abhängigkeiten einfach über den Paketmanager der verwendeten Programmiersprache verwendet werden kann, ist es am einfachsten. Wenn man allerdings den Code einer Abhängigkeit direkt in das Hauptprojekt einbinden muss, dann gibt es die Möglichkeit mit Submodulen zu arbeiten. Die eher unbekanntere Methode ist Subtree zu nutzen.

Beide Varianten haben Vor- und Nachteile. Die Handhabung von git submodule ist eher aufwändig und mühselig. Es müssen relativ viele Schritte durchgeführt werden, damit alles ordnungsgemäß funktioniert. Mit git subtree kann man hingegen das Zurückführen der Änderung gut und gerne mal vergessen, ist dafür aber angenehmer zu nutzen.

Auch auf diese beiden Befehle gehe in einem weiteren Blogpost näher darauf ein.

git sparse-checkout

Sowohl git submodule als auch git subtree waren zwei Funktionen, die eher nicht für Monorepos relevant sind. Was hingegen relevant ist, ist die Möglichkeit nur mit einem Teil des Repositorys arbeiten zu können. Ein gängiges git clone lädt schließlich das komplette Repository herunter, was bei einem echten Monorepo eher ungünstig ist, da man dann auch allen Code lokal vorliegen hat, den man gar nicht braucht. Mit einem Sparse-Checkout lässt sich ein Klonen und Arbeiten mit einzelnen Unterverzeichnissen bewerkstelligen.

Das GitHub-Blog hat einen ausführlichen Blogpost veröffentlicht in dem genauer beschrieben wird, wie man mit git sparse-checkout arbeiten kann, damit das Arbeiten mit einem Monorepo überhaupt erst halbwegs ordentlich möglich ist.

Fazit

Wenn ihr nun diesen Blogpost gelesen habt, habt ihr vielleicht das Gefühl, dass die Vorteile den Nachteilen von Monorepos überwiegen und dies auch meine Einstellung ist. Tatsächlich ist diese Frage gar nicht so einfach zu beantworten.

Prinzipiell bin ich kein großer Fan von Monorepos. Die meisten Firmen dürften viel zu klein sein, um überhaupt die Vorteile von Monorepo-Ansätzen profitieren zu können. Die Nachteile überwiegen da häufig, da eher speziellere Tools für das Bauen und Verwalten der ganzen Toolchain gebraucht wird, die zu meist auch komplexer sind. Und ich meine hier ganz bewusst echte Monorepos und nicht Multi-Projekt-Repositorys. Die sind nicht ganz so komplex und umspannen in der Regel nicht völlig verschiedene Teams, Abteilungen die nichts miteinander zu tun haben.

Bei ganz großen Firmen sieht das natürlich anders aus, aber sehr viele ähnlich große Firmen die vergleichbar mit Microsoft, Google oder Twitter sind, gibt es dann doch eher seltener. Und die haben auch genug Personal, um spezielles eigenes Tooling zu entwickeln.

Was man hingegen nicht verleugnen sollte, ist der Fakt, dass an Git aktuell vor allem Verbesserung bei der Handhabung von großen Repositorys sichtbar ist. Da dürften noch viele weitere Neuigkeiten mit einfließen, so wie git sparse-checkout ein relativ neues Feature ist.

Unabhängig davon: Das Thema Monorepos haben Dirk und ich in unserem Podcast TILpod in Folge TIL006 besprochen mit einer etwas anderen Art und Weise.

Firefox bekommt Unterstützung für neue Bildformate. Neben der Unterstützung für AVIF, welche für Firefox 92 geplant ist, soll Firefox in Zukunft auch das neue Bildformat JPEG-XL (JXL) unterstützen.

Bereits seit längerer Zeit arbeitet Mozilla an der Unterstützung des neuen Bildformats AVIF in Firefox. AVIF steht für AV1 Image File Format und ist ein Bildformat, welches auf dem Video-Codec AV1 basiert und wie AV1 von AOMedia spezifiziert worden ist. Ähnlich wie AV1 bei Videos verspricht auch AVIF bei Bildern bei gleichbleibender Qualität deutlich geringere Dateigrößen als konkurrierende Formate wie JPG oder WebP. Die Aktivierung der AVIF-Unterstützung ist derzeit für Firefox 92 geplant. Firefox 92 wird nach aktueller Planung am 27. September 2021 erscheinen.

AVIF ist aber nicht das einzige neue Bildformat, welches Firefox in Zukunft unterstützen wird. Eine initiale Unterstützung für das von der Joint Photographic Experts Group entwickelte Bildformat JPEG-XL, kurz: JXL, ist in der Nightly-Version von Firefox 90 gelandet.

Bildformate Vergleich 2021
Bildquelle: cloudinary.com

Bei der Unterstützung von JPEG-XL in der Nightly-Version von Firefox 90 handelt es sich um eine erste Integration, bei der einige Features noch nicht implementiert sind. An einen produktiven Einsatz ist zu diesem Zeitpunkt also noch nicht zu denken. Standardmäßig ist die Unterstützung aus diesem Grund auch noch hinter dem Schalter image.jxl.enabled in about:config deaktiviert. Welche Firefox-Version JPEG-XL final unterstützen wird, lässt sich zu diesem Zeitpunkt noch nicht sagen. Mit Sicherheit wird es aber noch einige Monate dauern.

Der Beitrag Firefox bekommt Unterstützung für Bildformat JPEG-XL (JXL) erschien zuerst auf soeren-hentzschel.at.

Cyberchef (The Cyber Swiss Army Knife) hatte ich vor fast 4 Jahren auf ITrig erwähnt. Das Tool sagte mir damals wegen seiner praktischen Encoding beziehungsweise Decoding Funktionen zu.

Seitdem ist einige Zeit vergangen und Arbeitsweisen haben sich geändert. So verwende ich inzwischen unter anderem Visual Studio Code fürs tägliche Editieren. Durch die vielen Plugins ist der Editor sehr gut erweiterbar.

Genau hier kommt die Erweiterung Swiss Knife ins Spiel

 

VS Code – Swissknife

swissknife

Die Visual Studio Code Erweiterung von Luis Fontes beherrscht eine Menge an Funktionen, vom Hashes generieren, über Hex oder Base64 bis Markdown.

Das heißt eurer Editor wird mit wenigen Klicks um viele Alltagsanwendungen erweitert.

Folgende Funktionen beherrscht das Schweizer Messer für Visual Studio momentan:

  • Base64 decode

  • Base64 encode

  • Binary To Text

  • Bip39 Mnemonic

  • CSV to Markdown

  • Count characters

  • Count words

  • Crypto currency value

  • Date to Timestamp

  • Eliptic Curve Key Pair

  • Generate Password

  • HTML Encode (AlL)

  • Hex decode

  • Hex encode

  • Hex to RGB

  • Identify hash

  • JWT Decode

  • Join lines

  • Lorem Ipsum

  • Markdown to HTML

  • Md5 hash

  • New Swissknife Script (JS)

  • New Swissknife Script (TS)

  • Password strength

  • RGB To Hex

  • RSA Key pair

  • Random String

  • Request to fetch

  • SHA1 hash

  • SHA256 hash

  • SHA512 hash

  • Self Signed Certificate

  • Start Local HTTP Server

  • Start Local HTTPS Server

  • Stop HTTP Server

  • Text To Binary

  • Text to String

  • Timestamp to Date

  • To Camel Case

  • To Lower Case

  • To Morse code

  • To Upper Case

  • UUIDv4

  • Unicode decode

  • Unicode encode (js format)

  • Unix/Linux Permission To Human Readable

  • Url Decode

  • Url Encode

  • Url Encode (All Characters)

  • Url Shorten

  • Url Unshorten (url expand)

Die Funktionen lassen sich mit swissknife.show oder Strg+Shift+9 beziehungsweise cmd+shift+9 im Terminal aufrufen. (Text markieren vorher nicht vergessen).

Hat man die Tastenkombination einmal im Kopf, erleichtert die Erweiterung das Arbeiten an vielen Stellen sehr, vorrausgesetzt die Anwendungsfälle kommen öfters vor.

Download swissknife

 

Cyberchef (The Cyber Swiss Army Knife) hatte ich vor fast 4 Jahren auf ITrig erwähnt. Das Tool sagte mir damals wegen seiner praktischen Encoding beziehungsweise Decoding Funktionen zu.

Seitdem ist einige Zeit vergangen und Arbeitsweisen haben sich geändert. So verwende ich inzwischen unter anderem Visual Studio Code fürs tägliche Editieren. Durch die vielen Plugins ist der Editor sehr gut erweiterbar.

Genau hier kommt die Erweiterung Swiss Knife ins Spiel

 

VS Code – Swissknife

swissknife

Die Visual Studio Code Erweiterung von Luis Fontes beherrscht eine Menge an Funktionen, vom Hashes generieren, über Hex oder Base64 bis Markdown.

Das heißt eurer Editor wird mit wenigen Klicks um viele Alltagsanwendungen erweitert.

Folgende Funktionen beherrscht das Schweizer Messer für Visual Studio momentan:

  • Base64 decode

  • Base64 encode

  • Binary To Text

  • Bip39 Mnemonic

  • CSV to Markdown

  • Count characters

  • Count words

  • Crypto currency value

  • Date to Timestamp

  • Eliptic Curve Key Pair

  • Generate Password

  • HTML Encode (AlL)

  • Hex decode

  • Hex encode

  • Hex to RGB

  • Identify hash

  • JWT Decode

  • Join lines

  • Lorem Ipsum

  • Markdown to HTML

  • Md5 hash

  • New Swissknife Script (JS)

  • New Swissknife Script (TS)

  • Password strength

  • RGB To Hex

  • RSA Key pair

  • Random String

  • Request to fetch

  • SHA1 hash

  • SHA256 hash

  • SHA512 hash

  • Self Signed Certificate

  • Start Local HTTP Server

  • Start Local HTTPS Server

  • Stop HTTP Server

  • Text To Binary

  • Text to String

  • Timestamp to Date

  • To Camel Case

  • To Lower Case

  • To Morse code

  • To Upper Case

  • UUIDv4

  • Unicode decode

  • Unicode encode (js format)

  • Unix/Linux Permission To Human Readable

  • Url Decode

  • Url Encode

  • Url Encode (All Characters)

  • Url Shorten

  • Url Unshorten (url expand)

Die Funktionen lassen sich mit swissknife.show oder Strg+Shift+9 beziehungsweise cmd+shift+9 im Terminal aufrufen. (Text markieren vorher nicht vergessen).

Hat man die Tastenkombination einmal im Kopf, erleichtert die Erweiterung das Arbeiten an vielen Stellen sehr, vorrausgesetzt die Anwendungsfälle kommen öfters vor.

Download swissknife

 

Wenn ich aktuell unter Arch Linux die OSS-Version des Editor VS Code starten will, startet diese zwar, friert sofort ein, sodass man das Programm nur noch gewaltsam beenden kann. Die Lösung ist aber erfreulicherweise ziemlich einfach.

Öffnet man die Datei /usr/bin/code-oss mit einem Editor (vorzugsweise nicht VS Code ;-) ) sollte der Inhalt wie folgt aussehen.

ELECTRON_RUN_AS_NODE=1 exec electron11 /usr/lib/code/out/cli.js /usr/lib/code/code.js "$@"

Alles, was man machen muss, ist electron11 auf electron zu ändern. Danach sollte VS Code wieder normal starten.

Vermutlich handelt es sich hierbei um einen Bug seitens Arch Linux. VS Code benötigt als Abhängigkeit das Paket electron (aktuell Version 12). Mit diesem wird die Datei /usr/bin/electron installiert. Im Paket code wurde allerdings letzten Monat /usr/bin/electron auf /usr/bin/electron11 geändert (https://github.com/archlinux/svntogit-community/commit/412cf018280fd9b9f612eb84075354b9fe555af8). Vermutlich weil VS Code zu der Zeit noch von Version 11 von electron abhängig war. Und nach dem Update auf Version 12 wurde vermutlich vergessen es entsprechend anzupassen. Aber das ist nur eine Vermutung. Eventuell betrifft das Problem auch andere Distributionen (und ggf. auch die normale Version von VS Code)

15. Mai 2021

Die MZLA Technologies Corporation hat vor kurzem mit Thunderbird 78.10.1 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 78.10.1

Mit dem Update auf Thunderbird 78.10.1 hat die MZLA Technologies Corporation ein Update für seinen Open Source E-Mail-Client veröffentlicht. Neben einer Fehlerbehebung schafft das Update auch eine als moderat eingestufte Sicherheitslücke für Nutzer einer Windows-Version älter als Windows 10 Build 1709 aus der Welt.

Der Beitrag Thunderbird 78.10.1 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

14. Mai 2021

Die Veröffentlichung von Firefox 90 war ursprünglich für den 29. Juni 2021 vorgesehen. Nun hat Mozilla den Veröffentlichungstermin von Firefox 90 und allen nachfolgenden Versionen verschoben.

Zwischen neuen Feature-Updates von Firefox liegen normalerweise exakt vier Wochen. Bereits vor etwas mehr als einem Monat wurde entschieden, die Veröffentlichung von Firefox 89 und allen nachfolgenden Versionen um zwei Wochen nach hinten zu schieben. Nun kommt es zu einer weiteren Verschiebung: Auch zwischen Firefox 89 und Firefox 90 werden sechs statt der üblichen vier Wochen liegen. Neuer Veröffentlichungstermin für Firefox 90 ist damit der 13. Juli 2021.

Weiter wurde der Zeitraum zwischen Firefox 94 und Firefox 95 sowie zwischen Firefox 95 und Firefox 96 auf jeweils fünf Wochen angehoben.

Der Release-Kalender dieser Seite ist bereits an die neuen Daten angepasst.

Der Beitrag Mozilla verschiebt Firefox 90 erschien zuerst auf soeren-hentzschel.at.

Ein möglichst offenes und ein möglichst vertrauenswürdiges System widersprechen sich manchmal. Besonders deutlich wird dies beim Thema Verified Boot unter Linux.

Linux kennt mit LUKS/cm-crypt eine gute und sichere Verschlüsselungslösung. Man kann ein solchermaßen verschlüsseltes System sogar zusätzlich mit einem Hardware-Token wie z. B. einem YubiKey absichern. Doch woher weiß man beim Hochfahren eines Systems eigentlich, das man ein unverändertes System startet und nicht eine heimlich manipulierte Variante?

Ein sogenannter Verifizierter oder Vertrauenswürdiger Start (Verified / Trusted Boot) ist bei Mobilgeräten schon länger Standard. Der Ansatz ist – stark vereinfacht dargestellt – eine Vertrauenskette vom Bootloader, über die Boot-Partition bis hin zu den verifizierten System-Partitionen. Während des Systemstarts überprüft jede Stufe die Integrität und Sicherheit der nächsten Stufe, bevor sie übergibt. Erkennt das System eine Manipulation, führt es automatisch einen Rollback zur letzten verifizierten Version durch.

Klassische Desktop- oder Notebooksysteme kennen so etwas nicht. Das meist völlig ungesicherte BIOS erlaubt den Start von jedem beliebigen Medium und sofern man dabei nicht den Bootloader versehentlich zerstört, kann man so ziemlich alles mit dem System machen, was man möchte.

Apple hat das Prinzip des Verified Boot bereits vor längerer Zeit auf den Desktop gebracht mit den sogenannten T1/T2 Sicherheitschips. Der T1 brachte die Secure Enclave vom Mobilgerät auf das MacBook bzw. den iMac, der T2 brachte den sichereren Start.

Bei normaler Desktop-/Notebook-Hardware wäre so etwas theoretisch auch möglich. Microsoft hat vor einigen Jahren mit Secure Boot versucht, einige Schritte in diese Richtung zu unternehmen. Aus der ersten Debatte um diese Funktion hat sich leider in der Linux-Community das Gerücht gehalten, dass man Secure Boot immer deaktivieren sollte. Dabei funktionieren professionelle Linux-Distributionen schon lange mit Secure Boot (und alle anderen verwendet man sowieso nicht, wenn einem Sicherheit wichtig ist).

Alle heute verkauften Geräte haben zudem einen sogenannten TPM-Sicherheitschip (verdankt man den Basis-Anforderungen von Microsoft). Die neueste systemd-Version unterstützt nicht nur die Bindung der LUKS-Verschlüsselung an diesen TPM-Chip, sondern SUSE hat auch eine Implementierung von Trusted Boot für GRUB entwickelt (mehr Informationen dazu), die theoretisch mit dem TPM-Chip zusammen arbeitet.

Meiner Meinung nach sind das sinnvolle Schritte in die richtige Richtung. Wie immer stört das natürlich die Frickler und Bastler in der Community, aber wenn man im Bereich Sicherheit am Ball bleiben möchte, kann man diese Entwicklung nicht ignorieren.

Secure Boot ist unter openSUSE schon lange kein Problem mehr, mit der nächsten systemd-Version werde ich mein LUKS-Systemvolume auch an den TPM-Chip binden. Danach folgt dann TrustedGRUB/Trusted Boot aber hier scheint es noch wenige Erfahrungen und folglich auch wenige Bericht zu geben.

Der Artikel Verified Boot – Leerstelle unter Linux? erschien zuerst auf [Mer]Curius

Fr, 14. Mai 2021, Niklas

Bodhi Linux ist eine minimalistische Distribution, die ihre eigene Desktopumgebung Moksha auf Basis von Enlightenment 17 mitbringt. Die Distribution basierte in der letzten Version, 5.1 auf Ubuntu 18.04 LTS und wurde jetzt auf Ubuntu 20.04 LTS aktualisiert.

Das Highlight dieser neuen Version ist die Umgestaltung der Desktopoberfläche. Diese wirkt jetzt deutlich moderner, orientiert sich am Trend zu flachen Designs, aber ist nach wie vor in einem freundlichen, grünen Farbton gehalten.

Ein neues Design gibt es ausserdem auch beim Bootloader und dem Bootscreen. Auch das Anmeldeformular wurde überarbeitet und bringt einige neue Effekte mit.

Bodhi Linux ist in zwei verschiedenen Varianten verfügbar: Mit dem normalen Long Term Support Kernel in Version 5.4, der nur weitere Sicherheitsupdates, aber keine Funktionsupdates erhält und mit dem Hardware Enabled (HWE) Kernel, der alle 6 Monate grössere Updates bekommt und dabei auch neuere Treiber enthält, in Version 5.8.

Daneben gibt es auch eine AppPack Variante, die deutlich mehr vorinstallierte Software mitbringt und auch den LTS Kernel 5.4 nutzt. AppPack bringt die Office-Suite LibreOffice, die IDE Geany, das Bildbearbeitungsprogramm GIMP, den IRC Client HexChat, den Universalmessenger Pidgin, den FTP Client FileZilla, den Audio Player Audacious, den Media Player VLC, das Screencast-Programm Kazam und das Notizprogramm CherryTree.

In der normalen und der HWE Variante kann man Bodhi Linux als vollständig Bloatware-frei bezeichnen. Es bringt nur das mit, was absolut erforderlich für die alltägliche Arbeit ist. Dazu zählt der Webbrowser Chromium, der Text-Editor Leafpad, der Dateimanager Thunar, die Softwareverwaltung Synaptic und einige Enlightenment Programme wie das Terminal Terminology und der Bildbetrachter Ephoto.

Die Distribution ist für 64Bit x86 Geräte verfügbar und kann kostenlos von der Webseite des Projekts in Form eines ISO Abbilds heruntergeladen werden.

Quellen:

12. Mai 2021

Mi, 12. Mai 2021, Niklas

Heute hat die UBports Foundation die Version 17 von Ubuntu Touch, der Linux Distribution für Smartphones, veröffentlicht. Eine der wichtigsten Neuerungen dabei ist die Unterstützung für NFC auf verschiedenen Geräten, wie etwa dem Pixel 3a oder dem Volla Phone.

Neben den gewöhnlichen NFC Funktionen wird man Entwicklern auch die Möglichkeit geben, in ihren Apps NFC Tags zu lesen und zu schreiben. Ausserdem werde über Möglichkeiten nachgedacht, Informationen von passiven medizinischen Monitoren mittels NFC abzulesen.

Bei UBports wird aktuell noch an einer Umstellung auf das modernere Ubuntu 20.04 LTS als Basis für Ubuntu Touch gearbeitet. Im Zuge dessen hat man weitere Optimierungen des Betriebssystems erreicht, wie etwa eine Verlängerung der Akkulaufzeit und zuverlässigere Benachrichtigungen auf dem Pixel 3a sowie die automatische Anpassung der Bildschirmhelligkeit auf dem Volla Phone.

Auch die Kamera wurde bei der neuesten Aktualisierung erheblich verbessert. Das betrifft das Blitzlicht, den Zoom, die Drehung und die Fokussierung. Diese Optimierungen sind auf einer Vielzahl der unterstützten Geräte verfügbar, unter anderem auf dem OnePlus One und dem Sony Xperia X.

Die Tastatur wurde ebenfalls optimiert. Hier werden jetzt korrekte Wortvervollständigung bei den Tastaturlayouts Französisch (Schweiz) und Englisch (Dvorak) angezeigt. Ausserdem wurde das Umschalten des Tastatur-Editier-Overlays zwischen Auswahl- und Bewegungsmodus bei einem Doppeltipp zuverlässiger.

Die neue Version wird bei bestehenden Ubuntu Touch Installationen automatisch ausgeliefert. Wer Ubuntu Touch jetzt auf dem Handy installieren und ausprobieren will, kann es kostenlos von der Webseite des Projekts herunterladen.

Quellen:

Seit Januar ist mein privates Haupt-Arbeitsgerät ein HP EliteBook G7 440. Die Linux-Kompatibilität ist hervorragend und das Gerät für mich perfekt. Firmware-Updates kann man auch als Linux-Anwender machen.

Die lange Unterstützung mit Firmware-Aktualisierungen ist eine der Stärken von Business-Notebooks. Egal ob sie von Lenovo, Dell oder eben HP stammen. Ein nicht zu unterschätzender Vorteil, da sich auch in der Firmware Sicherheitslücken und Bugs befinden können.

In meinem Bericht zum Gerät bemängelte ich damals die fehlende Unterstützung durch LVFS/fwupd. Prinzipiell ist das zwar eine tolle Infrastruktur, aber bisher habe ich noch kein Gerät gefunden, das dadurch mit Updates versorgt wird. Weder das alte ThinkPad, noch eben das neue EliteBook. Lediglich der Dongle meiner Logitech-Maus hat damit tatsächlich mal ein Update spendiert bekommen.

Allerdings wollte ich das letzte „BIOS“-Update nun wirklich haben, weil es Probleme mit den Tasten zur Helligkeitssteuerung unter Linux beseitigt. Ein bisschen Recherche brachte mich nun dazu, dass es viel einfacher als gedacht sein kann.

Im „BIOS“-Menü gibt es eine Funktion „BIOS-Update“. Sofern das Gerät per Ethernet mit dem Internet verbunden ist, lädt die Funktion alle Firmware-Updates für die verbaute Hardware (UEFI, SSD, Thunderbold, Intel ME) automatisch herunter und installiert sie. Völlig egal was für ein Betriebssystem installiert ist. Damit natürlich auch für Linux-Nutzer. Die Warnung für Nutzer der BitLocker-Verschlüsselung kann man dabei getrost überspringen.

Damit ist das letzte Manko an dem Gerät im Linux-Einsatz für mich beseitigt. Allerdings ist es natürlich eine Erinnerung daran, wie viele Funktionen sich inzwischen in der Firmware eines Notebooks (vom Hersteller oft noch „BIOS“ tituliert) befinden. Ein nicht zu unterschätzender Aspekt, wenn man über Privatsphäre und Datenschutz in Kombination mit Betriebssystemen diskutiert.

Der Artikel HP EliteBook G7 – Firmware Updates unter Linux erschien zuerst auf [Mer]Curius

11. Mai 2021

Föderierte Systeme sind in einigen Kreisen gerade sehr angesagt. Das Konzept ist nicht neu, hat aber mit Matrix (Element), Mastodon und anderen Instanzen des Fediverse inzwischen neue prominente Vertreter. Hinsichtlich Datenschutz und digitaler Privatsphäre haben diese Systeme aber strukturelle Probleme.

Föderiert vs. Zentral

Föderierte Systeme sind das Gegenteil von zentralisierten Systemen, die von ihren Kritikern auch gerne als „Walled Gardens“ bezeichnet werden. Zentralisierte Systeme werden so bezeichnet, da in ihrem Kern eine zentral verwaltete Serverinfrastruktur steht, über welche die beteiligten Clients miteinander kommunizieren. Das System nutzen nahezu alle proprietären Dienste, aber auch freie Systeme wie Signal.

Föderierte Systeme bestehen dagegen aus einem Netz unabhängiger Server, auf denen dieselbe bzw. eine kompatible Software läuft, die miteinander kommunizieren und gewissermaßen ein Netz bilden. Das System kennt eigentlich jeder Anwender, da die E-Mail so funktioniert. Praktisch gesagt: Während man von WhatsApp zu Signal keine Nachricht schreiben kann, geht das von GoogleMail zu Posteo natürlich schon. Im Messenger-Bereich ist es auch nichts wirklich neues, denn XMPP („Jabber“) funktioniert ebenfalls nach diesem System.

Ein föderiertes System ist beim Aspekt der Unabhängigkeit vom zentralen Anbieter unschlagbar. Es wird deshalb vor allem von Befürwortern der digitalen Souveränität gerne hervorgehoben. Bei zentralisierten Systemen wie z. B. Signal hängt alles vom zentralen Betreiber ab. Schaltet Signal seine Server ab, ist das Kommunikationsnetz Signal Geschichte. Die Serversoftware ist zwar quelloffen, aber ein neuer Betreiber könnte nicht automatisch an die Stelle des ehemaligen zentralen Betreibers treten.

Risiken offener Protokolle

Ein grundlegendes Risiko dieser offenen Protokolle zeigt schon ein Blick auf die Geschichte von XMPP. Ist die Entwicklung noch jung, gibt es meist nur einige wenige Clients und eine Serversoftware. Die Zahl der Betreiber und Nutzer ist ebenso noch recht gering. Neue Funktionen und Änderungen am Protokoll werden schnell verteilt und erreichen schnell alle beteiligten Anwender.

Mit der Zeit differenzieren sich die Softwarelösungen aber immer mehr aus. Genau das finden die Befürworter solcher Systeme ja auch gut. Änderungen und sinnvolle Weiterentwicklungen brauchen immer mehr Zeit, um alle Beteiligten zu erreichen. Es wird immer mehr zurückhängende Instanzen geben und Inkompatibilitäten im Netzwerk.

Ein Beispiel dafür ist die Einführung von OMEMO bei XMPP, die bis heute nicht alle Clients erreicht hat. Ein anderes Beispiel ist die klassische E-Mail, wo immer noch nicht alle Server standardmäßig Transportverschlüsselung anbieten. Kunden von Posteo konnten vor einigen Jahren einstellen, dass eine E-Mail nicht verschickt wurde, wenn die Gegenseite keine Transportverschlüsselung gewährleistete. Das waren insbesondere in der Anfangszeit ganz schön viele, ist mit der Zeit aber natürlich weniger geworden.

Systembedingte Probleme

Die Zeit kann aber nicht alle Probleme lösen. Einige Schwierigkeiten sind systemimmanent und können nicht sinnvoll überwunden werden. Sobald man Matrix nutzt, ist man Teil des föderierten Netzwerkes. Die einzelnen Instanzen müssen miteinander Daten austauschen können, da man ansonsten nur mit anderen Anwendern des Servers kommunizieren könnte, auf dem man selbst registriert ist.

Während man bei einem zentralisierten Anbieter wie Signal nur einem Anbieter vertrauen muss, bedarf der Einsatz von Matrix Vertrauen in alle Anbieter von Matrix-Serverinfrastruktur. Das ist umso gefährlicher, weil Metadaten-Vermeidung strukturell bei verteilten Infrastrukturen aufgrund der Einbeziehung vieler Server und Clients schwierig ist.

Ein paar praktische Beispiele: Alle an einer Kommunikation beteiligten Matrix-Server speichern beispielsweise theoretisch unbegrenzt die komplette Kommunikation. Umso bedenklicher, da einige Clients des heterogenen Ökosystems (siehe Nachteile solcher Netzwerke oben) wie KDEs NeoChat nicht mal Verschlüsselung beherrschen. Gleichwohl würde das sowieso nur die Inhalte und nicht die Metadaten schützen. Man kann Nachrichten zwar löschen, aber technisch handelt es sich dabei lediglich um eine Art „Löschwunsch“ an andere Server, ob diese das auch umsetzen, entzieht sich der Kontrolle.

Der Homeserver, auf dem man sein Konto angelegt hat, speichert zudem noch deutlich mehr: Kontaktliste, Mitgliedschaften in Gruppenchats, Nachrichtenverläufe usw. Diesem Betreiber muss man extrem vertrauen. Allerdings hat man hier wenigstens ein wenig Steuerungsmöglichkeit.

Nicht das Ende der Probleme

Dabei handelt es sich noch nicht mal um das Ende der Fahnenstange. Es gab im Gegensatz zu Signal oder Threema keinen Audit der kompletten Infrastruktur, sondern nur 2016 der E2E-Verschlüsselungslösung. Die Implementierung von E2E-Verschlüsselung in den Clients steht noch auf einem ganz anderen Papier. Oft ist ja nicht die Verschlüsselung das Problem, sondern die Umsetzung im Client. Ein Problem das vor allem bei so heterogenen Ökosystemen natürlich zum Problem wird, weil man nicht weiß was die anderen Beteiligten für Software nutzen.

Die Finanz- und Entwicklungsstruktur der zentralen Bausteine sind auch kein Beispiel für Transparenz. Matrix bzw. Element (ehm. Riot) wird primär von der New Vector Ltd. entwickelt. Eine Firma, die nicht gerade die transparenteste Finanzsituation hat. Hier ist man gegenüber Signal oder auch Telegram nicht im Vorteil.

Alles schlecht? Nein, aber die falsche Außendarstellung

Sind föderierte Kommunikationssysteme im Allgemeinen und Matrix im Speziellen deshalb schlecht? Nein! Zumindest wenn man die richtige Perspektive wählt und keine falschen Erwartungen weckt.

Zentrale Systeme haben Nachteile, weil man sich abhängig von einem Betreiber macht. Im Hinblick auf eine digitale Souveränität des Individuums, kleiner Gruppen, Firmen oder gar Staaten können föderale Systeme einen Ausweg bieten. Je nach Anforderungen und Wünschen ist das ein interessantes Angebot.

Das hat aber alles nichts – wirklich gar nichts – mit Datenschutz und digitaler Privatsphäre zu tun! Wer bei dieser langen Liste von Defiziten und Problemen zum aktuellen Zeitpunkt Matrix als Privatsphären- und Datenschutz-freundliche Alternative zu Signal oder Threema bewirbt, hat ganz gewaltige Scheuklappen auf. Ich finde es erschreckend wie viele Kommentatoren sich hier vom Begriff der digitalen Souveränität und dem Open Source-Charakter blenden lassen.

Der Artikel Föderierte Messenger – Konzeptionelle Probleme am Beispiel Matrix erschien zuerst auf [Mer]Curius

Das Ikhayateam von ubuntuusers.de hat mein Blog im Planet aufgenommen. Vielen Dank für die Ehre.
Mein Name ist Andreas und ich nutze Ubuntu GNU/Linux seit 2005 auf meinen Computern. In der Linux-Community bin ich auch als waldstepper bekannt.

Ich schreibe unregelmäßig über Meine Erfahrungen mit Linux in meinem Blog. Ich wünsche euch viel Spaß beim Lesen meiner Artikel.

Di, 11. Mai 2021, Ralf Hersel

Kürzlich habe ich einen meiner beiden Haupt-Rechner von Ubuntu 20.10 auf Manjaro 21.0.3 umgestellt. Dem gingen monatelange Tests in virtuellen Maschinen und auf alter Hardware voraus. Trotz der vielen Tests, ist man nie vor Überraschungen gefeit. Manjaro ist eine sehr gute GNU/Linux-Distribution, die ich jedem, der ein wenig Linux-Erfahrung hat, ans Herzen legen kann. Bei einem Punkt bin ich jedoch an meine Grenzen gestossen; nämlich dem Einbinden von externen Laufwerken über das Netzwerk.

Wer regelmässig GNU/Linux.ch liest, weiss, dass ich eine 2 GB M2-SSD an einem Raspi4 als Fileserver betreibe. Dieser Massenspeicher soll auf allen Rechnern automatisch beim Systemstart gemountet werden.

Ein Eintrag in der /etc/fstab funktionierte bei meiner Manjaro-Installation nicht auf Anhieb. Die Zeile in der /etc/fstab sieht dabei wie folgt aus:

192.168.1.49:/mnt/nas /mnt/nas nfs defaults,auto,_netdev 0 0

Nach einem manuellen mounten mit sudo mount -t nfs 192.168.1.49:/mnt/nas /mnt/nas oder dem Einbinden des zuvor in der /etc/fstab eingetragenen Mountpoints mithilfe von sudo mount /mnt/nas, wurde das NFS-Share gemounted. Nicht jedoch nach einem Neustart des Systems. Denn zusätzlich musste der SystemD-Dienst namens NetworkManager-wait-online.service aktiviert werden, durch den sichergestellt wird, dass die Netzwerkverbindung verfügbar ist, bevor versucht wird das angegebene Share zu mounten:

systemctl enable NetworkManager-wait-online.service

Alternativ besteht die Möglichkeit den Mount in einer SystemD-Unit zu definieren.

Das Verzeichnis, in das die Freigabe gemountet werden soll muss, bei der oben beschrieben Einbindung via /etc/fstab sowie bei der Nutzung eigener SystemD-Mount-Units bereits existieren oder kann mit Root-Rechten angelegt werden, z.B.:

sudo mkdir /mnt/nas

Im Verzeichnis /etc/systemd/system/ legt man eine Datei an, nämlich mnt-nas.mount. Wichtig dabei ist, dass der Dateiname dem Pfad des Mountpoints entspricht. Beispiel: der Mountpoint /mnt/nas erfordert den Dateinamen mnt-nas.mount.

So sieht der Inhalt der Datei (in meinem Fall) aus:

mnt-nas.mount

[Unit]
Description=Raspi4 M2 SSD Mount

[Mount]
What=192.168.1.49:/mnt/nas
Where=/mnt/nas
Type=nfs
ForceUnmount=true

[Install]
WantedBy=multi-user.target

Nachdem diese Datei angelegt wurden, sollte man mögliche gleichlautende Einträge aus der /etc/fstab entfernen, um unliebsame Nebenwirkungen zu vermeiden. Aber Achtung, hier geht es nur um Netzwerklaufwerke, nicht um die eingebauten Platten. Bitte nicht den gesamten Inhalt der /etc/fstab löschen!

Dann gilt es SystemD mitzuteilen, was Sache ist.

sudo systemctl enable mnt-nas.mount 

Durch die obige Konfiguration wird das Share automatisch beim Systemstart eingebunden. Auch hierbei muss wie zuvor beschrieben der NetworkManager-wait-online.service aktiviert werden.

Alternativ kann automount genutzt werden, wobei das Share dann nur eingebunden wird, sobald darauf zugegriffen wird.

Dazu erstellt man zusätzlich zu der SystemD-Mount-Unit eine automount Definition in /etc/systemd/system

Der Dateiname muss ebenfalls dem Mount-Pfad entsprechen, in meinem Fall mnt-nas.automount

[Unit]
Description=Raspi4 M2 SSD Automount

[Automount]
Where=/mnt/nas

[Install]
WantedBy=multi-user.target

Daraufhin muss die möglicherweise zuvor aktivierte mount Definition deaktiviert werden und die obige automount Unit aktiviert werden:

sudo systemctl disable mnt-nas.mount
sudo systemctl enable mnt-nas.automount

Auch auf einem Notebook, welches zur Bootzeit nicht direkt eine WLAN-Verbindung zum Netzwerk aufbauen kann, funktioniert die automount Methode mit den zwei SystemD-Unit-Dateien einwandfrei.

Ein herzlicher Dank geht an Lioh für ihre unschätzbare Hilfe beim Ausprobieren der verschiedenen Möglichkeiten.

Quelle: https://wiki.archlinux.org/title/NFS#As_systemd_unit

10. Mai 2021

Über World of Padman las man lange nichts hier bei Zockertown.

Aus gegebenen Anlaß will ich das hier nachholen.

Wann war eure letzte Lan Party? Sicherlich einige Jahre her, oder?​

Auf meiner lezten Lan Party war auch die eine oder andere WoP Session drin.

Schön zu lesen, dass sich das alte Team wieder aufgerafft hat und wieder an die Arbeit geht!

worldofpadman.net/news/wop-team-back-in-action

Ich liebe diesen Fun Shooter über alle Maßen. Wenn es hier Neues gibt, schreibe ich das hier.

Über World of Padman las man lange nichts hier bei Zockertown.

Aus gegebenen Anlaß will ich das hier nachholen.

Wann war eure letzte Lan Party? Sicherlich einige Jahre her, oder?​

Auf meiner lezten Lan Party war auch die eine oder andere WoP Session drin.

Schön zu lesen, dass sich das alte Team wieder aufgerafft hat und wieder an die Arbeit geht!

worldofpadman.net/news/wop-team-back-in-action

Ich liebe diesen Fun Shooter über alle Maßen. Wenn es hier Neues gibt, schreibe ich das hier.

In diesem Beitrag dokumentiere ich eine Lösung für die Meldung: „554 5.7.1 REJECT policy violation – too many different Display Names – code #242 (in reply to end of DATA command)“

Umgebung

Ich betreibe einen Virtual Private Server (VPS) im Internet, sowie einige Raspberry Pis und weitere Geräte, die man heute wohl am ehesten dem Internet der Dinge zuordnen würde.

Diese Systeme sollen mir Systemmeldungen per E-Mail senden. Dafür habe ich mir ein günstiges E-Mail-Postfach bei Mailbox.org gebucht und auf den betroffenen Systemen Postfix installiert und zum Versand über einen Smarthost konfiguriert. Die Konfiguration erfolgte über die Ansible-Rolle relaymail von Yannik. Diese dient jedoch nur als Werkzeug. Die Konfiguration kann selbstverständlich auch manuell durchgeführt werden.

Problembeschreibung

Bei einer Systemüberprüfung fielen mir einige Fehlermeldungen der folgenden Art ins Auge (einige Werte durch <Platzhalter> ersetzt):

„<Hostname und IP-Adresse> said: 554 5.7.1 id=<ID> – Rejected by next-hop MTA on relaying, from MTA(smtp:[<IP-Adresse>]:10025): 554 5.7.1 REJECT policy violation – too many different Display Names – code #242 (in reply to end of DATA command)“

Weitere Informationen zu dieser Meldung und deren Ursache finden sich im Mailbox.org-Benutzerforum in: „mailbox.org als smtp Relay nutzen“

Während meine Raspberry Pis mit Raspbian GNU/Linux 10 (buster) und Postfix 3.4.14-0+deb10u1 sich wie erwartet verhalten und lediglich meine E-Mail-Adresse in das Header-Feld „From“ eintragen, fügt mein VPS mit Debian GNU/Linux 10 (buster) und Postfix 3.4.14-0+deb10u1 den Namen des jeweiligen Benutzers bzw. Dienstes mit ein, welcher die E-Mail versenden möchte. Diese Informationen nimmt der VPS aus dem Kommentarfeld der /etc/passwd. Während die Kommentarfelder auf meinen Raspberry Pis leer sind, sind diese auf dem VPS entsprechend gefüllt.

Im E-Mail-Header stellt sich das dann wie folgt dar.

Header-Auszug bei E-Mail von Raspberry Pi

Date: Mon, 10 May 2021 04:56:32 +0200 (CEST)
From: no-reply@example.com

Header-Auszüge bei E-Mails vom VPS

From: no-reply@example.com (Cron Daemon)
To: root
Date: Mon, 10 May 2021 04:44:12 +0200 (CEST)
From: Jörg Kastning <no-reply@example.com>
Date: Mon, 10 May 2021 04:44:36 +0200 (CEST)
From: root <no-reply@example.com>

Lösung

Um das Problem aufzulösen, lasse ich nun Postfix das Header-Feld „From“ umschreiben und explizit auf den Wert no-reply@example.com setzen. In der /etc/postfix/main.cf müssen dazu folgende Zeilen vorhanden sein:

sender_canonical_classes = envelope_sender, header_sender
sender_canonical_maps =  regexp:/etc/postfix/sender_canonical_maps
smtp_header_checks = regexp:/etc/postfix/header_check

Inhalt der /etc/postfix/sender_canonical_maps:

/.+/    no-reply@example.com

Dies sorgt dafür, dass Postfix das Feld „Envelope-From“ explizit auf no-reply@example.com setzt.

Inhalt der /etc/postfix/header_check:

/From:.*/ REPLACE From: no-reply@example.com

Hiermit wird der Wert des Header-Felds „From“ explizit auf no-reply@example.com gesetzt. Die Lösung habe ich hier gefunden. Damit läuft der Versand meiner Systembenachrichtigungen wieder.

Weitere Artikel zu Postfix und Smarthosts in diesem Blog

9. Mai 2021

Wir erheben nur Metadaten“ – Wie oft hat man diesen Satz in den letzten Jahren gehört. Dabei sind Metadaten das wahrlich interessante und Metadaten-Vermeidung, die hohe Kunst. Dieser Aspekt ist leider in der Praxis oft immer noch im toten Winkel der Debatte.

Definition: Metadaten oder Metainformationen sind strukturierte Daten, die Informationen über andere Daten enthalten. Das kann ganz unterschiedliche Bereiche umfassen. Im hier behandelten Kontext meint es Informationen wie Wer, wann, wo, mit wem, worüber usw.

Ein lange bekanntes Problem

Bei jeder Novelle der Überwachungsgesetze und bei jedem Skandal um Telemetrie-Datenerhebung durch Firmen kommt zuverlässig das Argument, dass man nur Metadaten sammeln würde und die Inhalte nicht tangiert wären. Die meisten Menschen sind dann beruhigt, weil sie glauben, ihre wahrhaft sensiblen Daten wären weiterhin geschützt. Weit gefehlt!

Für einen Einstieg in die Materie empfiehlt sich immer noch ein Artikel auf netzpolitik.org von 2014: Wie dein unschuldiges Smartphone fast dein ganzes Leben an den Geheimdienst übermittelt. Ergänzend dazu ein Bericht der SZ von 2014 was sich aus Telefonüberwachung ableiten lässt: Die Lüge von den Metadaten. Wohin die Sammlung von Metadaten führen kann, hat die ZEIT 2015 eindrücklich dargelegt: BND speichert 220 Millionen Telefondaten – jeden Tag.

Die Berichte entstammen der Hochphase der Globalen Spionage- und Überwachungsaffäre, aber der Sachverhalt hat sich seitdem kaum geändert. Immer noch sammeln Firmen und Geheimdienste systematisch Metadaten, immer noch beschwichtigen Politiker und immer noch glauben die meisten Menschen, ihre Kommunikationsinhalte wären das wirklich schützenswerte.

Das ist verständlich, weil die Inhalte vermeintlich unsere Vorlieben, Interessen, Ziele, Wünsche und Träume enthalten, aber unsinnig, denn die Kommunikationsinhalte sind bei den meisten Menschen völlig uninteressant und ohne Kontext auch meistens wenig aussagekräftig. Wirklich interessant für Firmen und den westlichen Überwachungsstaat sind die Metadaten. Denn sie geben Auskunft über Bewegungsprofile, Netzwerke und Verbindungen.

Zumindest gegenwärtig lassen sich Metadaten auch immer noch leichter automatisiert auswerten als Video-, Sprach- oder Textinhalte. Wobei angesichts der Fortschritte in der automatischen Spracherkennung und Inhaltserschließung das bald hinfällig sein könnte.

Wir erzeugen mehr und nicht weniger Metadaten

Die oben referenzierten Artikel sind alle 6-7 Jahre alt. Damals wurde nur das Bewegungsprofil, Internet, WhatsApp und E-Mail berücksichtigt. Smart Watches, intelligente Fitness-Armbänder, Smarte Lautsprecher, Smarte Autos – all diese Entwicklungen waren noch nicht so weit wie heute. Das Ausmaß der genutzten Dienste und die Zahl der Sensoren im Smartphone hat seitdem somit definitiv noch zugenommen.

Im Unterschied zu den Inhalten kann man Metadaten nicht vermeiden, indem man selbst ein bisschen verschlüsselt und ein wenig sensibler im Umgang mit seinen Daten ist. Möglicherweise ist das Thema auch deshalb so wenig im Fokus, weil es ein Ohnmachtsgefühl auslöst. Bei den Inhalten kann der Einzelne aktiv werden und zu wirkungsvoller Verschlüsselung greifen. Dabei gibt es erfolgversprechende Verfahren, bei denen wir mit großer Wahrscheinlichkeit davon ausgehen könnten, hinterher unsere Inhalte effektiv geschützt zu haben.

Um Metadaten zu reduzieren, hilft es nur Dienste zu nutzen, die genau diese Daten vermeiden. Mit ein bisschen Verschlüsselung seiner Dateien im kommerziellen Cloud-Dienstleister oder der Inhalte seiner E-Mails beim gleichen Anbieter kommt man da nicht weiter.

Umdenken nicht in Sicht

Eine komplette Änderung alle Gewohnheiten und Dienste kann man von niemandem verlangen. Bei neuen Diensten oder Geräten sollte man diesen Faktor aber endlich berücksichtigen. Die Erkenntnis wie wichtig und gefährlich Metadaten sind, ist schließlich alt genug.

Es gibt gute und verbreitete Dienste, die sich zumindest des Problems angenommen haben. Die Signal-Entwickler beschäftigen sich seit Jahren mit der Reduzierung und Vermeidung von Metadaten. Bei Threema hat man dieses Problem auch immer beachtet. Wer freie Software bevorzugt, hat ebenfalls Alternativen: Die Vermeidung von Metadaten als Konzept gilt auch für den besonders sicheren Messenger Briar.

Viele andere Dienste tun dies nicht. Einerseits weil die Vermeidung von Metadaten kompliziert ist, andererseits weil es bei vielen Entwicklern keine Priorität hat. Das gilt natürlich für viele kommerzielle Dienste, aber auch für die neuen Lieblinge der verschränkten FOSS/Datenschutz-Community.

Die neuen föderierten Messenger (z. B. Delta Chat / Matrix) sind strukturell bedingt genau so ungeeignet für die Vermeidung von Metadaten wie XMPP und E-Mail vor ihnen. Die Vernetzung eines föderierten Systems benötigt einfach systembedingt Metadaten und bringt einen Kontrollverlust mit sich, weil man den Serverbetreibern vertrauen muss.

Vor allem den Hype um die neuen föderierten Protokolle kann ich unter diesem Gesichtspunkt nicht verstehen. Hier werden zu offensiv Konzepte vermischt, die sich nicht immer vertragen: Digitale Souveränität und Datenschutz. Man mag auf die alten Protokolle, wie beispielsweise die E-Mail, nicht verzichten können, aber muss doch nicht sehenden Auges im Bewusstsein der hier beschrieben Problematik neue Protokolle etablieren, die genau die gleichen strukturellen Probleme haben.

Zusammengefasst

Metadaten sind das wirkliche Problem. Sie sind für alle Feinde unserer digitalen Sicherheit und unserer Privatsphäre interessant, wir erzeugen immer mehr davon und das Problem steht zu wenig im Fokus. Verschlüsselung ist nett und so lange sie mit wenig Aufwand zu realisieren ist, auch ratsam – sie geht aber am Kernproblem vorbei. Das gilt auch für die neuen gehypten Dienste.

Der Artikel Metadaten – Immer noch zu wenig beachtet erschien zuerst auf [Mer]Curius

Fail2ban kann genutzt werden um Server gegen unbefugte Logins zu sichern. Dabei durchsucht Fail2ban die entsprechenden Logs und blockiert böswillige Versuche in das System einzubrechen. Damit gehört Fail2ban zu den Intrusion Prevention Systemen.

Manchmal kommt es allerdings vor das eine IP-Adresse gesperrt wird, welche nicht gesperrt werden sollte. Problematisch ist dies z.B., wenn es die eigene IP-Adresse ist. Der Fail2ban-Client bietet hierfür eine Operation an um IP-Adressen wieder zu entsperren:

fail2ban-client unban 192.168.1.2

Damit wird die entsprechende IP-Adresse von der Sperrliste gelöscht und die Firewall-Regel entfernt. Anschließend ist besagte IP-Adresse wieder in der Lage auf den Server zuzugreifen.