Autorenarchiv: Jörg Kastning

Mit diesen Arbeitsmitteln starte ich ins Jahr 2026

Dies ist ein Update des Artikels aus dem Jahr 2024. Für 2025 gibt es keinen gesonderten Artikel, da meine Arbeitsmittel größtenteils die Gleichen waren. Eine aktuelle Hardwareübersicht gibt es hier.

Dinge, die seit dem letzten Artikel hinzugekommen sind, beginnen mit einem „Neu“. Entfallene Dinge wurden gestrichen.

Smartphone

Als privates Mobiltelefon benutze ich seit 2022 ein Samsung Galaxy S22 mit einem Congstar-Tarif, welcher mich im Monat 10,- EUR kostet. Ich bin mit dem Gerät weiterhin zufrieden und plane, es in 2026 ebenfalls zu nutzen.

Im Folgenden führe ich einige von mir genutzte Apps auf, mit einer kurzen Erklärung, wofür ich diese verwende. Wo möglich verlinke ich in den F-Droid Store. Wo dies nicht möglich ist, führen diese in den Google Play Store.

Hier die am häufigsten verwendeten Apps zählen in alphabetischer Reihenfolge:

Zu den eher sporadisch genutzten Apps zählen in alphabetischer Reihenfolge:

Ich nutze auch Online-Banking-Apps auf dem Smartphone. ich nutze diese z.B., um am Laptop getätigte Überweisungen oder Online-Einkäufe zu autorisieren. Darüber hinaus schätze ich die Benachrichtigung über getätigte Umsätze.

Ach ja, telefonieren tue ich damit natürlich auch. ;-)

Tablet

Seit Mitte 2019 [verwende ich] auch ein Samsung T830 Galaxy Tab S4 Wi-Fi Tablet. Durch seine 10,5 Zoll (ca. 27 cm) Bildschirmdiagonale, das geringe Gewicht und mit der App ReadEra eignet es sich hervorragend zum Lesen von PDF-Dateien und E-Books.https://www.my-it-brain.de/wordpress/meine-privaten-arbeitsmittel-anfang-2022/

Darüber hinaus nutze ich das Gerät:

  • Für Online-Shopping (mehr als das Smartphone)
  • Lesen im Internet (Blogs, Dokus, etc.) mit Firefox Klar

Dabei verwende ich mehr oder weniger die gleichen Apps wie auf dem Smartphone. Für den Zugriff auf Mastodon verwende ich hier statt Fedilab die App Tusky (F-Droid).

Seit 2024 neu auf dem Tablet sind FeedMe (Google Play Store) und Wallabag (Google Play Store). FeedMe hat sich für mich als Alternative zu Feedly (Google Play Store) bewährt.

Laptop

  • Ich arbeite weiterhin mit einem Lenovo ThinkPad T14s (seit 2021)
  • Das Betriebssystem wurde im Laufe der Zeit von Fedora 37 auf Fedora 43 aktualisiert

Der Laptop ist mein Hauptarbeitsmittel, den ich für so gut wie alle anfallenden Aufgaben verwende. Lediglich zum Lesen von E-Books bevorzuge ich das Tablet und zum Instant Messaging das Smartphone.

  • Mein Lieblingsbrowser ist Firefox
  • Mein Lieblingseditor ist Vim
  • Thunderbird ist die Anwendung meiner Wahl für Aufgaben, E-Mail und Kalender
  • TeXstudio ist mein Lieblings-LaTeX-Editor
  • Neu: Ich wechsel für meine Anwendsfälle von LaTeX zu Typst; 2026 wird getestet und ausprobiert
  • Neu: GNOME Calendar, um an einem Ort bzw. in einer Anwendung einen Überblick über alle privaten und beruflichen Termine zu behalten

Server-PC

Auf diesem Rechner laufen dauerhaft vier virtuelle Maschinen:

Als dauerhaft laufender Rechner führt dieser Host meine Cronjobs und Ansible-Playbooks aus, erzeugt Backups und kopiert/synchronisiert Daten von hier nach dort.

Die Untersützung von Podman bzw. der weiteren Container-Tools Buildah und Skopeo in RHEL ist super. Die kostenlose Developer Subscription for Individuals ermöglicht mir die produktive Nutzung von bis zu 16 RHEL-Servern. Das sind mehr als genug für meine privaten Zwecke.

Sonstige Geräte im Netzwerk

  • Brother MFC-J890DW, falls mal jemand etwas drucken muss
  • Meine Synology Diskstation DS213air dient mir seit 2013 als Netzwerkspeicher (NAS)
    • Dient als Backup-Senke
    • Beheimatet Foto-, Video- und Musiksammlung
    • Stellt Netzlaufwerke für Windows und Linux bereit
    • Bietet aktuell 2,7 TB Speicherkapazität (2 Disks als RAID 1)
    • Externe USB-Festplatte (500 GB) für lokale Backups
    • Sie ist alt, aber verrichtet zuverlässig ihren Dienst
  • Protectli VP2410 – 4 Port Intel ® CeleVP2410 – 4 Port Intel ® Celeron J4125ron J4125 mit OPNSense
    • Dieses Gerät lag seit 2023 ungenutzt herum, da sich die Anschaltung des Glasfaseranschlusses um ein Jahr verzögert hat; jetzt ist er in Betrieb
    • Die OPNSense hat in 2025 meinen Pi-Hole abgelöst und stellt den Zugang zum Internet über Dual-WAN bereit

Cloud-Dienste

Hier hat es im laufenden Jahr keine Änderungen gegeben. Ich gehe davon aus, dass es hier in 2026 ebenfalls keine Änderungen geben wird. Drei neue Dienste sind hinzugekommen, die ich bei adminforge.de nutze. Dies sind:

  • DNSforge
  • Bandbreite messen
  • ToDo App
  • FreshRSS Reader
  • Linkwarden
  • Wallabag

Dezentral ist wunderbar – Alternativen zu Big Tech

Es ist der erste Sonntag im Monat (und des Jahres 2026) und damit Digital Independence Day (di.day). Um kurz zu erklären worum es geht, zitiere ich von der vorstehend verlinkten Seite:

Unser digitales Leben befindet sich in der Hand weniger Superreicher. Mit der Monopolstellung ihrer Unternehmen bestimmen Menschen wie Elon Musk, Jeff Bezos oder Mark Zuckerberg weltweit, wie wir uns online informieren, wie wir diskutieren, kommunizieren oder handeln. Einen solchen unkontrollierten Einfluss sollte kein Mensch und kein Unternehmen besitzen, weil wir dann nicht mehr in Freiheit leben können.

Alternativlos erscheinen die Angebote von Big Tech nur durch ihre übergroße Sichtbarkeit. Dabei gibt es zu Social-Media-Plattformen, Online-Einkauf oder Videostreaming eine Vielzahl gesellschaftsschonender Alternativen.

Freie Software und Open Source Software bieten jede Menge Alternativen zu den zentralen Diensten kommerzieller Anbieter. Doch nicht jede/r kann oder möchte diese Dienste selbst hosten. Für diese Menschen möchte ich in diesem Beitrag drei tolle Projekte aus Deutschland vorstellen, welche eine Vielzahl von Diensten (kostenlos) für euch zur Nutzung bereitstellen.

adminForge – Self-hosted Open Source Services & Linux Admin Tutorials

Unter der URL https://www.adminforge.de stellt Stefan Giebel (Stand 2025-12-27) auf 19 Servern insgesamt 72 verschiedene Dienste bereit. Und zwar nach eigenen Angaben frei, ohne Tracking, ohne Logging und ohne Werbung. Die verfügbaren Dienste gliedern sich in die Themenbereiche:

  • Netzwerk & Verwaltung
  • Online-Dienste
  • Soziales & Kommunikation
  • Alternative Frontends
  • Büro & Produktivität
  • Datenaustausch
  • Sicherheit & Datenschutz
  • Bildung & Referenz
  • Nachrichten & Lesezeichen
  • Push-Benachrichtigungen
  • Fernarbeit

Eine aktuelle Übersicht aller Dienste findet ihr unter der URL: https://adminforge.de/#services

Ich selbst nutze in 2026 die folgenden Dienste von adminForge:

Stefan bietet diese Dienste kostenlos an. Er freut sich, wenn wir seine Arbeit mit einer Spende unterstützen, was ich gerne tue.

Anoxinon e.V. – für ein gemeinschaftliches Internet

Anoxinon e.V. ist ein Verein, der sich der Förderung von Datenschutz und freier Software durch Bereitstellen von Informationen und alternativen Internetdiensten verschrieben hat. Aktuell stellt der Verein 5 Dienste bereit.

MIt https://social.anoxinon.de/@Tronde bin ich auf der Mastodon-Instanz des Vereins zuhause.

Der Verein finanziert sich ausschließlich über Mitgliedsbeiträge, Spenden und ggf. Zuschüsse.

tchncs.de

Seit ca. 2012 betreibt Milan unter tchncs.de Webdienste für die Öffentlichkeit. Das Angebot ist werbefrei und trägt sich durch freiwillige Spenden seiner NutzerInnen.

Am 01.01.2026 habe ich 21 Dienste gezählt, die sich auf die folgenden Kategorien verteilen:

  • Social
  • Collaboration
  • Chat
  • Blog
  • Development
  • Gaming

Aktuell nutze ich keinen der angebotenen Dienste aktiv. Gelegentlich arbeite ich in einem dort gehosteten Cryptpad mit.

Ich finde das großartig und bitte um eure Unterstützung

Privatpersonen und ein Verein stellen hier datensparsame Dienste kostenlos zur Nutzung bereit. Die Dienste, welche ich selbst aus diesem Angebot nutze, empfinde ich als stabil und zuverlässig.

Dafür, dass ich selbst keinen Betriebsaufwand habe, bin ich gerne bereit, diese Projekte durch unregelmäßige Spenden zu unterstützen.

Getreu dem Motto „tue Gutes und rede darüber“ könnt auch ihr den „Digital Independence Day“ und die drei hier vorgestellten Projekte unterstützen, z.B. indem ihr diesen Beitrag in euren Netzwerken teilt. Damit helft ihr, den Bekanntheitsgrad und potenziell die Anzahl der Spenden zu steigern.

Der My-IT-Brain Jahresrückblick 2025

Zum Jahresende möchte ich kurz zurückblicken und reflektieren, wie dieses Jahr für meinen kleinen Blog verlaufen ist.

Anzahl veröffentlichter Artikel

In Summe: 32 Artikel.

Behandelte Themen

Thematisch haben sich fast alle Artikel mit Freier Software und Open Source beschäftigt oder waren daran angelehnt. Wie auch in den vorangegangenen Jahren habe ich keine bewussten Themenschwerpunkte gesetzt, sonder über die Themen geschrieben, dich mich in der jeweiligen Zeit interessierten und mich beschäftigt haben.

Zu Beginn des Jahres habe ich noch einmal zur Thema „Dokumentation für den Notfall“ geschrieben. Diese ist für die Angehörigen gedacht, falls der Nerd mal nicht mehr verfügbar ist. Dieses Thema wird mich auch 2026 wieder beschäftigen, wenn ich meine Dokumentation aktualisiere.

Ich habe mit vier Beiträgen zu den Blogwochen 2025 beigetragen, zu denen Benedikt, Dirk und Robert anlässlich der Geburtstage ihrer Blogs aufgerufen hatten. Dies war meine erste Blogparade und mir gefällt die Idee, dass sich Blogs auf diesem Wege vernetzen. So konnte ich einige neue Blogs in meinen Feedreader aufnehmen.

Fazit

Ich stelle fest, mir bereitet das Bloggen immer noch Freude, so dass ihr euch auch in 2026 auf neue Text in diesem Blog freuen dürft.

Mit diesem Beitrag geht mein Blog in die Jahreswechselpause. Ich bedanke mich bei allen Lesenden für euer Interesse an meinen Beiträgen und wünsche euch fröhliche Weihnachten und einen guten Rutsch ins Jahr 2026.

Daily Stand-ups und Meetings für soziale Interaktion

Am Montag des 24. November 2025 gab es im Matrix-Kanal des TILpod eine kurze Diskussion über den (Un-)Sinn und Nutzen von täglichen Besprechungen (Dailys) und darüber warum der regelmäßige Austausch gerade in ausschließlich verteilt arbeitenden Teams wichtig ist. Die Diskussion hat mich dazu motiviert, einmal aufzuschreiben wie wir dies bei uns im Team handhaben.

Dieser Text soll euch informieren, wie wir es mit den Meetings halten und mag euch als Inspiration dienen. Darüber hinaus freue ich mich, wenn ihr die in eurem Team gelebte Praxis und die Erfahrungen damit in den Kommentaren teilt.

Was ist denn überhaupt ein Team und wenn ja, wie viele?

Inspiriert vom buzzzoom.de habe ich Wikipedia und die Mistral AI befragt, was denn überhaupt ein Team ist:

Der Anglizismus Team [tiːm] (altenglisch in der Bedeutung „Familie, Gespann, Gruppe, Nachkommenschaft“) bezeichnet in der Soziologie eine aus mindestens zwei Personen bestehende Organisationseinheit, die eine bestimmte Aufgabe erfüllen und/oder gemeinsame Ziele verfolgen soll.

Quelle: https://de.wikipedia.org/wiki/Team

Mistral antwortet wie folgt auf die Frage: „Was ist ein Team?“

Ein Team ist eine Gruppe von Menschen, die gemeinsam an einem Ziel arbeiten. Teams zeichnen sich durch folgende Merkmale aus:

  • Gemeinsames Ziel: Alle Mitglieder streben dasselbe Ergebnis an.
  • Zusammenarbeit: Die Mitglieder ergänzen sich mit ihren Fähigkeiten und arbeiten koordiniert.
  • Verantwortung: Jedes Mitglied übernimmt Aufgaben und trägt zur Lösung bei.
  • Kommunikation: Offener Austausch ist essenziell für den Erfolg.

Teams gibt es in vielen Bereichen: im Beruf, im Sport, in der Schule oder auch in der Familie. Wichtig ist, dass die Mitglieder sich gegenseitig unterstützen und Vertrauen zueinander haben.

Möchtest du wissen, wie man ein gutes Team aufbaut oder welche Rollen es in einem Team gibt?

Beruflich betrachte ich mich der obigen Definition folgend als Bestandteil der folgenden Teams:

  • TAM-Team DACH (TAM == Technical Account Management)
  • EMEA TAM Team

Beide Teams haben gemeinsam, dass meines Wissens nach alle TAMs zu 100% remote oder hybrid arbeiten und keiner von uns einem Büro fest zugeordnet ist. Bis auf seltene Ausnahmen treffen und besprechen wir uns also ausschließlich in der Videokonferenzlösung unserer Wahl.

Das EMEA Platform Daily Standup

Diese Besprechung ist ein Angebot an das EMEA Platform TAM Team. Es findet jeden Werktag statt und dauert maximal 30 Minuten. Die Teilnahme ist freiwillig. Hier diskutieren wir offene Fragen, aktuelle Themen und nutzen es zum Informationsaustausch.

Die Teilnehmenden tragen ihre Punkte mit Referenzen in eine fortlaufende Agenda ein, so dass die Informationen auffindbar bleiben. Zuerst werden die Punkte von dieser Agenda nach Reihenfolge des Eintrags besprochen. Anschließend wird gefragt, ob es noch spontan weitere Themen gibt. Falls nicht hören wir einfach früher auf. Wer möchte, darf verbleibende Zeit selbstverständlich für persönliche Gespräche nutzen.

Mir gefällt neben dem sehr guten fachlichen Austausch besonders, dass die Teilnehmenden ihre Kameras immer eingeschaltet haben und wir uns gegenseitig sehen können. Dadurch entsteht zumindest für mich ein Gefühl der Zusammengehörigkeit und Nähe, so dass ich es in keinster Weise vermisse, dass wir nicht zusammen in einem Büro sitzen.

Nicht alle haben jeden Tag Zeit, an dieser Besprechung teilzunehmen, doch gibt es einen harten Kern auf den fast immer Verlass ist. Dieses Standup lebt vom Engagement der Teilnehmenden, die hier ihr Wissen teilen, so dass wir gemeinsam lernen und wachsen können.

Ein wichtiger Unterschied zu vielen anderen Dailys: Hier ist kein Chef oder Manager anwesend, der einen Arbeitsfortschritt kontrollieren oder neue Aufgaben verteilen möchte. Soetwas ist in unserer Job-Rolle als Technical Account Manager unüblich.

Open Coffee Chat und Beer-o-clock

Das Wichtigste gleich vorweg:

  • Wer Tee oder Wasser trinkt, ist im Open Coffee Chat ebenfalls willkommen.
  • Ich habe im Beer-o-clock noch niemanden Bier trinken sehen.

Beides sind wöchentliche Angebote zur sozialen Interaktion und ersetzen den Flurfunk. Auch wenn ich persönlich nicht regelmäßig an diesen Treffen teilnehme, halte ich sie für wichtig. Viele Behörden und sonstige Organisationen funktionieren nur wegen des informellen Informationsflusses. Da man sich in verteilten Teams nur selten an der Kaffeemaschine trifft, sind diese Formate in meinen Augen eine gute Alternative.

Hier wird nicht nur über die Arbeit gesprochen, sondern auch über persönliche Dinge. Was treibt die Kolleg:innen um, wie macht sich der neue 3D-Drucker daheim, etc. Aber auch wenn man eine schwere Zeit mit einem Kunden oder einer Schwesterabteilung hat, findet man hier Trost, Zuspruch und aufmunternde Worte (oder drei Pfund Salz in die Wunde gerieben).

Auch hier ist die Teilnahme selbstverständlich freiwillig und die Zahl der Teilnehmenden schwankt.

Ob ich jetzt mit 3-6 Personen in einem Glaskasten sitze oder mich mit diesen im Coffee Chat treffe, macht für mich persönlich keinen Unterschied. Mir gefällt, dass auch hier alle ihre Kamera eingeschaltet haben und man sich sehen kann.

Gleichzeitig gefällt mir, dass man sich diesen informellen Gesprächen einfach entziehen kann, wenn man Ruhe benötigt. Eine Sache, die mir früher im Büro deutlich schwerer gefallen ist.

Die Kaffee- und Zigaretten-Pause zwischendurch

Manche Büromenschen können dies vielleicht nicht nachvollziehen, doch aus dies gelingt virtuell.

Wenn ich allein in meinem Arbeitszimmer sitze, kann es manchmal ganz schön still sein. Während ich konzentriert an einer Aufgabe arbeite, stört mich dies nicht. Im Gegenteil, ich genieße die Ruhe und bin deutlich effizienter, als wenn ich ständig von irgendetwas oder irgendjemanden abgelenkt werde. Doch gibt es auch Phasen, wo ich die Stimmen von Kollegen vermisse.

Für diese Phasen haben einige Kollegen und ich einen Chat, in dem wir kommunizieren, wenn wir eine Kaffeepause gebrauchen können. Dann schalten wir uns in einer Videokonferenz zusammen und atmen kurz durch.

Wer ungestört arbeiten möchte, hat seinen Chat stumm geschaltet und wird nicht gestört.

Selbst wenn man nicht die ganze Zeit miteinander spricht, sondern jeder für sich an seinen Themen arbeitet, kann das Kamerabild der anderen einem doch das Gefühl vermitteln, nicht allein zu sein. Und nach einem kurzen Gespräch kann es oft mit neuer Energie weitergehen.

Funktioniert das für alle und jeden?

Nein. Natürlich nicht.

Wir Menschen sind verschieden und haben unterschiedliche Bedürfnisse. Ich denke, dass die Fähigkeit zur effizienten und effektiven Remote-Arbeit eine gewissen persönliche Reife, Fähigkeit zur Selbstorganisation und Disziplin voraussetzt. Zudem muss man seine Werkzeuge beherrschen, um nicht von ihnen beherrscht zu werden. Und selbst wenn all diese Dinge auf einen Menschen zutreffen, mag dieser doch in einem Büro unter Seinesgleichen besser aufgehoben sein.

Es gibt nun mal nicht die eine Lösung für alle. Siehe auch: Eierlegende Wollmilchsau.

Es gibt jedoch auch Teams wie unsere, wo dies hervorragend funktioniert. Ich fühle mich hier sehr wohl und kann mir gar nicht mehr vorstellen, täglich in ein lautes Büro zu pendeln.

Noch Fragen? Wie macht ihr das?

Mit diesem Text habe ich euch einen kleinen Einblick in unsere Meeting-Kultur gegeben. Falls ihr dazu Fragen habt, stellt sie doch bitte in den Kommentaren oder in diesem Matrix-Kanal.

Ihr möchtet gerne mitteilen, wie dies bei euch gelebt wird? Dann teilt eure Erfahrungen doch gerne in den Kommentaren oder lasst einen Link zu eurem Blog dort.

Und nun zurück an die Arbeit. ;-)

Der perfekte Wochenplan für den IT-Betrieb

Dieser Artikel ist mit einem Augenzwinkern zu verstehen. Er soll euch unterhalten und bestenfalls inspirieren.

Und so sieht nun der perfekte Wochenplan für IT-Betriebsabteilungen aus.

Maintenance Monday

Das Wochenende ist gerade erst vorbei. Wir sind ausgeruht, hoch motiviert und voller Tatendrang. Heute ist der Tag für:

  • Deployments neuer Anwendungsversionen
  • Installation von Updates für Anwendungen, Betriebssysteme, Firmware, etc.
  • Kontrolle von Ausführungsplänen und Protokolldateien
  • Berechtigungen geraderücken
  • Dienste prüfen

Aktualisiert, deployt und patcht, als wenn es kein morgen gebe. Diese Woche gibt es keinen Tag, der besser dafür geeignet ist, denn:

  • So einfach kommt ihr nicht wieder an ein Wartungsfenster
    • Einige Stakeholder sind noch im verlängerten Wochenende
    • Andere Stakeholder erzählen sich in der Teeküche von ihrem Wochenende
  • Wenn etwas so richtig schief geht, habt ihr noch vier weitere Werktage, um den Schlamassel wieder zu beheben und riskiert nicht direkt euer Wochenende zu verlieren
  • Ab hier wird es nur noch besser

Zieht man das regelmäßig durch, gewöhnen sich die Kolleginnen und Kollegen daran. Mit Routine geht vieles leichter.

Bonus: Ihr führt hier wirklich wichtige Aufgaben aus. Da muss einfach jeder Verständnis dafür haben, dass ihr nicht gleichzeitig an irgendwelchen Besprechungen teilnehmen könnt.

Und wenn doch etwas klemmt, das ihr nicht sofort lösen könnt, ist das gar nicht schlimm. Schreibt es auf und kümmert euch am Troubleshooting Tuesday darum.

Troubleshooting Tuesday

Machen wir uns nichts vor, es geht nicht immer alles glatt, eigentlich ist immer irgendwas. Ärgert euch nicht darüber, es ist ganz normal und heute ist der Wochentag, wo ihr die Probleme aktiv angehen könnt, die vom Montag übrig sind.

Bedenkt, wie viel ihr gestern schon geschafft habt. Einen großen Teil der Aufgaben für diese Woche habt ihr gestern bereits abgearbeitet. Dadurch habt ihr heute die Zeit, um euch in Ruhe den hartnäckigen Problemen widmen zu können.

Hinzu kommt, dass die gestrigen Änderungen schon zu lange her sind, um jetzt noch zurückzurollen. Es gibt nur noch den Weg nach vorn.

Auch hier hilft euch die Routine. Wenn ihr immer montags Wartungsarbeiten durchführt, gewöhnen sich eure Stakeholder daran, dass es halt dienstags hier und da noch klemmt. Sie wissen aber auch, dass ihr heute nichts anderes macht, als die hartnäckigen Probleme zu analysieren, mit dem Hersteller-Support zu kollaborieren und den störungsarmen Betrieb wiederherzustellen.

Bonus: Wenn man euch beim Troubleshooting stört, gehen die Probleme nicht weg. Ihr werdet somit heute vor unnötigen Besprechungen verschont bleiben.

Waiting on Customer Wednesday

Herzlichen Glückwunsch. Zwei Tage harter Arbeit liegen hinter euch. Heute nutzt ihr den Tag, um die Stakeholder überprüfen zu lassen, welche Aufgaben umgesetzt und welche Probleme gelöst wurden.

Fragt aktiv nach, ob eure Kundschaft zufrieden ist, lasst euch feiern und sammelt die Aufgaben für den nächsten Maintenance Monday ein.

Bonus: Nach zwei Tagen voller Änderungen, Anpassungen und kleinerer Störungen und Totalausfälle, freuen sich die Stakeholder heute endlich richtig arbeiten zu können. Da haben sie keine Zeit, sich mit euch in Besprechungen zu treffen.

Thinking Thursday

Um Störungen zu minimieren, wollen Änderungen gut geplant werden. Daher dient der Donnerstag dem Denken der Gedanken. Heute wird der Plan erstellt, was am kommenden Maintenance Monday aktualisiert, deployt und geändert werden soll.

Der Kreativität sollen hierbei keine unnötigen Schranken gesetzt werden. Verlasst ruhig mal die gewohnte Umgebung eures Arbeitszimmers bzw. Büros und geht zusammen in die Kneipe oder ins Schwimmbad. Studien renommierter Personen belegen, dass es sich positiv auf die Kreativität und Innovationsentwicklung auswirkt, wenn man sich mal aus dem Tagesgeschäft herausnimmt.

Bonus: Wenn ihr nicht da seid, könnt ihr nicht an Besprechungen teilnehmen.

Change Freeze Friday

Das Motto dieses Tages lautet:

  • Wenn etwas funktioniert, mach es nicht kaputt
  • Wenn etwas nicht funktioniert, mach es nicht schlimmer

Lass die Finger von den IT-Systemen und fummel heute nicht dran rum. Es gibt genügend andere wichtige Dinge, die heute getan werden können. Zum Beispiel:

  • Dokumentationen aktualisieren
  • Fehlende Dokumentation erstellen bzw. ergänzen
  • Überflüssige Dokumente löschen
  • Das Büro aufräumen
  • Die Kaffeemaschine reinigen
  • Persönliche Fort- und Weiterbildung

Bonus: Gleich ist Wochenende. Heute kann eh niemand mehr etwas reißen, da braucht ihr auch nicht mehr an unnützen Besprechungen teilnehmen.

Fazit

Dieser Wochenplan bietet Routine und Struktur für IT-Betriebsabteilungen. Die wichtigsten Aufgaben werden direkt zu Beginn der Woche erledigt und dadurch die Motivation und der Stolz auf die eigene Leistung gesteigert.

Bereits nach wenigen Wochen seid ihr so geübt, dass Besprechungen durch eure absolute Routine völlig überflüssig werden. Denn jeder weiß genau, womit ihr an welchem Wochentag beschäftigt seid.

Was wünscht ihr euch da noch mehr?

Gedanken zum File Access Policy Daemon fapolicyd

Wie ihr in „Wenn ansible.builtin.ping kein pong zurückgibt,…“ nachlesen könnt, bin ich kürzlich mit dem File Access Policy Daemon fapolicyd aneinandergeraten. In diesem Beitrag möchte ich meine Gedanken zu dieser Anwendung und einige Links zu weiterführenden Informationen mit euch teilen.

Das Software-Framework fapolicyd steuert die Ausführung von Anwendungen basierend auf einer benutzerdefinierten Richtlinie. Dies ist eine der effizientesten Methoden, um die Ausführung nicht vertrauenswürdiger und potenziell bösartiger Anwendungen auf dem System zu verhindern.

Übersetzung aus Introduction to fapolicyd

Informationen zu fapolicyd

Lose Gedanken

Zuerst möchte ich noch ein Zitat aus einem Matrix-Kanal mit euch teilen:

Klingt ein bischen wie SELinux für Arme ^W Menschen mit Freizeit.
Ich glaube,ich muß mal was anderes machen. Irgendwas mit Holz… ;-)

Ulf Volmer im TILpod-Matrix-Kanal

Dazu möchte ich schreiben, dass fapolicyd nicht als Alternative, sondern eher als Ergänzung zu SELinux zu sehen ist. Es handelt sich dabei also um ein weiteres Werkzeug, mit dem sich steuern lässt, was auf einem System ausgeführt werden darf und was nicht.

Ich kann nachvollziehen, warum man sich solch ein Werkzeug wünscht. Es bietet potenziell eine Antwort auf die Frage: „Wie verhindere ich, dass User beliebige flatpaks aus dem Internet herunterladen und aus ihrem HOME-Verzeichnis ausführen?“

Ob es dafür wirklich gut geeignet ist, habe ich nicht getestet. Es hat jedoch gezeigt, dass es meine Python-Skripte blockieren kann. Allerdings habe ich dabei auch gelernt, dass man diesen Schutz relativ leicht umgehen kann, indem man einfach die Shebang weglässt und das Skript manuell als Argument an einen Python-Interpreter übergibt. Siehe dazu meinen Kommentar auf GitHub.

Generell scheint es aufwändig zu sein, Regeln für HOME-Verzeichnisse zu konfigurieren. Ein Pull-Request hierzu wurde zurückgezogen.

Auf mich macht dies bisher den Eindruck, dass fapolicyd in der Tat mehr Arbeit und Ärger für Sysadmins bedeutet, jedoch nur einen geringen Zugewinn an Sicherheit bringt.

Was haltet ihr davon? Teilt eure Gedanken gern in den Kommentaren. Ich freue mich, zu lernen, welche Vor- und Nachteile ihr in fapolicyd seht.

Wenn ansible.builtin.ping kein pong zurückgibt,…

…dann können keine Ansible-Playbooks auf dem Zielsystem ausgeführt werden, Sysadmins lassen vom Schreiben der Playbooks ab und wenden sich der Fehleranalyse zu. Genau das mache ich nämlich gerade.

Und damit ihr auch etwas davon habt, halte ich das Ganze in diesen Beitrag fest. Die Gründe dafür sind vielfältig:

  • Unerfahrene Sysadmins können lernen, wie man bei einer Fehleranalyse vorgehen kann, um nach endlich vielen Schritten zu einem Ergebnis zu kommen
  • Falls ich meine Arbeit unterbrechen muss, kann ich mich mithilfe dieses Textes besser erinnern, was ich schon getestet habe und meine Arbeit fortsetzen
  • Falls ich Expertenrat einholen muss, kann ich zeigen, was ich schon alles versucht habe

Die erfahrenen Supporter und Sysadmins unter euch sind gerne eingeladen, in den Kommentaren zu ergänzen, wie ihr bei so einem Problem vorgeht und was ich hätte besser machen können. So lernen wir alle etwas dabei.

Die Methode

Bei einer Fehleranalyse stochert man nicht einfach im Heuhaufen herum, in der Hoffnung eine Nadel zu finden. Ich gehe während der Fehleranalyse in folgender Schleife (Pseudocode) vor:

Solange das Problem besteht:
  Sichte und bewerte die vorhandenen Informationen;
  Forumuliere eine Hypothese zur Ursache des Problems;
  Überprüfe die Hypothese;
  Hast du damit das Problem gefunden, stelle es ab und höre auf;
  Hast du das Problem damit noch nicht gefunden, nimm die gewonnenen Erkenntnisse und iteriere;

Das Problem

$ ansible -i hosts host.example.com -m ping
host.example.com | FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3.9"
    },
    "changed": false,
    "module_stderr": "Shared connection to host.example.com closed.\r\n",
    "module_stdout": "/usr/bin/python3.9: can't open file '/home/tronde/.ansible/tmp/ansible-tmp-1757269581.9965136-5304-74956742819711/AnsiballZ_ping.py': [Errno 1] Operation not permitted\r\n",
    "msg": "MODULE FAILURE: No start of json char found\nSee stdout/stderr for the exact error",
    "rc": 2
}

Der obige Code-Block zeigt das fehlgeschlagene Ansible-Ad-hoc-Kommando. Das Kommando führt das Module ansible.builtin.ping aus, welches prüft, ob eine Verbindung zum Zielsystem hergestellt werden kann und eine nutzbare Python-Umgebung gefunden wird. Wenn dies erfolgreich ist, sieht die Ausgabe wie im folgenden Code-Block aus:

$ ansible -i hosts host2.example.com -m ping
host2.example.com | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3.9"
    },
    "changed": false,
    "ping": "pong"
}

Die Ausgangslage

Bevor ich mit der Fehleranalyse beginne, schreibe ich auf, was ich über meinen Ansible Control Node und meine beiden Managed Nodes weiß.

Ansible Control Node

  • Fedora release 42 (Adams)
  • ansible [core 2.18.6]
    • config file = /etc/ansible/ansible.cfg
    • ansible python module location = /usr/lib/python3.13/site-packages/ansible
    • executable location = /usr/bin/ansible
    • python version = 3.13.7 (main, Aug 14 2025, 00:00:00) GCC 15.2.1 20250808 (Red Hat 15.2.1-1)
    • jinja version = 3.1.6
    • libyaml = True

Ansible Managed Nodes

Über host.example.com und host2.example.com ist bekannt, dass es:

  • sich um Red Hat Enterprise Linux release 9.6 (Plow) handelt
  • Ich mich mit dem User tronde und SSH-Private-Key einloggen kann
    • Bei tronde handelt es sich um einen unprivilegierten Benutzer
    • Dieser darf sudo nutzen, um seine Rechte auszuweiten; dazu muss ein Passwort eingegeben werden
  • SELinux auf Enforcing steht

Die Fehlermeldung

Und ich habe natürlich eine Fehlermeldung:

"module_stdout": "/usr/bin/python3.9: can't open file '/home/tronde/.ansible/tmp/ansible-tmp-1757269581.9965136-5304-74956742819711/AnsiballZ_ping.py': [Errno 1] Operation not permitted\r\n",

Python meldet, dass die Ausführung von AnsiballZ_ping.py nicht zugelassen ist.

Hypothese 1: Es liegt nicht an AnsiballZ_ping.py

Wenn dieses Python-Skript nicht ausgeführt werden kann, kann ein anderes Python-Skript ebenfalls nicht ausgeführt weden. Um diese Hypothese zur überprüfen, versuche ich, die UID des Benutzers mit dem Modul ansible.builtin.command abzufragen:

$ ansible -i hosts host.example.com -m command -a 'id'
host.example.com | FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3.9"
    },
    "changed": false,
    "module_stderr": "Shared connection to host.example.com closed.\r\n",
    "module_stdout": "/usr/bin/python3.9: can't open file '/home/tronde/.ansible/tmp/ansible-tmp-1757271016.543905-6189-111082369101490/AnsiballZ_command.py': [Errno 1] Operation not permitted\r\n",
    "msg": "MODULE FAILURE: No start of json char found\nSee stdout/stderr for the exact error",
    "rc": 2
}

Damit ist bewiesen, dass die Fehlerursache nicht allein im Skript AnsiballZ_ping.py liegt.

Hypothese 2: Es ist ein Problem mit Berechtigungen

Die Meldung [Errno 1] Operation not permitted deutet an, dass fehlende Berechtigungen die Ursache sein können. Also führe ich das Kommando auf dem betroffenen Managed Node einmal als root aus.

$ ansible -i hosts host.example.com -m ping -b -K
BECOME password: 
host.example.com | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3.9"
    },
    "changed": false,
    "ping": "pong"
}

Root darf also, was tronde nicht darf, denn mit erweiterten Berechtigungen kann das Kommando erfolgreich ausgeführt werden. Die Python-Skripte, die tronde nicht ausführen darf, liegen im Pfad /home/tronde/.ansible/tmp/<von-Ansible-temporär-erstelltes-Verzeichnis>/AnsiballZ_{command,ping}.py.

Hypothese 3: tronde darf keine Python-Skripte ausführen

Genauer gesagt, tronde darf keine Python-Skripte ausführen, welche unterhalb von /home/tronde/.ansible/tmp/ abgelegt sind. Auch diese These wird direkt geprüft. Dazu logge ich mich per SSH als User tronde auf dem Zielsystem ein, erstelle ein einfaches Python-Skript und versuche dieses auszuführen:

$ mkdir /home/tronde/.ansible/tmp/test
$ cat << EOF > /home/tronde/.ansible/tmp/test/hello.py
> #!/usr/bin/env python3.9
> print("Hello World")
> EOF
$ chmod u+x /home/tronde/.ansible/tmp/test/hello.py
$ /usr/bin/python3.9 /home/tronde/.ansible/tmp/test/hello.py
/usr/bin/python3.9: can't open file '/home/tronde/.ansible/tmp/test/hello.py': [Errno 1] Operation not permitted

Durch diesen Test habe die Hypothese verifiziert und zusätzlich folgendes gelernt: Meine Ansible-Konfiguration auf meinem Ansible Control Node hat nichts mit dem Problem zu tun, da das Problem auftritt, wenn Ansible gar nicht beteiligt ist.

Hypothese 4: Falsche Datei-Berechigungen verhindern die Ausführung der Datei

Ich schaue mir die Datei-Berechtigungen bis zur Datei hello.py mit dem Programm namei(1) an:

$ namei -mo /home/tronde/.ansible/tmp/test/hello.py
f: /home/tronde/.ansible/tmp/test/hello.py
 dr-xr-xr-x root      root      /
 drwxr-xr-x root      root      home
 drwxr-x--- tronde tronde tronde
 drwxrwxr-x tronde tronde .ansible
 drwx------ tronde tronde tmp
 drwxr-xr-x tronde tronde test
 -rwxr--r-- tronde tronde hello.py

Das sieht auf den ersten Blick nicht verkehrt aus. Ich wechsel in das Verzeichnis und lasse mir die Attribute der Datei mit verschiedenen Programmen anzeigen.

$ cd .ansible/tmp/test/
$ stat hello.py
  File: hello.py
  Size: 46        	Blocks: 8          IO Block: 4096   regular file
Device: fd06h/64774d	Inode: 51511298    Links: 1
Access: (0744/-rwxr--r--)  Uid: ( 1000/tronde)   Gid: ( 1000/tronde)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2025-09-07 21:21:08.201875001 +0200
Modify: 2025-09-07 21:23:04.564787755 +0200
Change: 2025-09-07 21:23:25.642771941 +0200
 Birth: 2025-09-07 21:21:08.201875001 +0200

$ getfacl hello.py
# file: hello.py
# owner: tronde
# group: tronde
user::rwx
group::r--
other::r--

$ file hello.py 
hello.py: writable, executable, regular file, no read permission

Datei-Berechtigungen und Linux-ACL bescheinigen dem User tronde Lesezugriff auf die Datei hello.py. Das file-Kommando bescheinigt jedoch no read permission.

Hypothese 5: Das chmod u+x verursacht das Problem

Nach der Erstellung des Skripts habe ich dieses mit chmod u+x ausführbar gemacht. Vielleicht verursacht erst dieser Befehl das Problem. Also schaue ich mir die Informationen zum Dateityp vor und nach dem Kommando an. Dazu erstelle ich ein neues Skript.

$ cat <<EOF >hello2.py
> #!/usr/bin/env python3.9
> print("Hello Sysadmin.")
> EOF
$ file hello2.py 
hello2.py: writable, regular file, no read permission

Damit kann ich chmod ebenfalls als Fehlerquelle ausschließen.

Hypothese 6: Shebang verursacht das Problem

Die Shebang #! sorgt dafür, dass das folgende Kommando mit dem Dateinamen als Argument ausgeführt wird. Gleichzeitig gibt die Shebang auch dem Programm file einen Hinweis darauf, um welchen Dateityp es sich handelt.

Zur Überprüfung dieser Hypothese erhebe ich zuerst die Antworten zu folgenden Fragen.

Kann das Skript ohne Shebang ausgeführt werden?

Bei der Überprüfung von Hypothese 2 habe ich verifiziert, dass root die Dateien wie gewohnt ausführen kann. Nun editiere ich die Datei hello2.py mit root-Rechten und entferne die Shebang. Anschließend versuche ich als User tronde, die Datei mit Hilfe des Python3.9-Interpreters auszuführen.

$ file hello2.py 
hello2.py: ASCII text
$ cat hello2.py 
print("Hello Sysadmin.")
$ /usr/bin/python3.9 hello2.py 
Hello Sysadmin.

Ohne Shebang kann ich das Skript ausführen. Füge ich die Shebang wieder ein, ist der Fehler zurück. Ich kann die Datei noch nicht mal mehr lesen:

$ cat hello2.py 
cat: hello2.py: Operation not permitted

$ sudo !!
sudo cat hello2.py 
#!/usr/bin/python3.9
print("Hello Sysadmin.")

Zeigen Bash-Skripte mit Shebang das gleiche Verhalten?

$ cat <<EOF >world.sh
> #!/usr/bin/env bash
> echo "Hello world."
> EOF

$ file world.sh 
world.sh: Bourne-Again shell script, ASCII text executable

$ cat world.sh 
#!/usr/bin/env bash
echo "Hello world."

$ bash world.sh 
Hello world.

$ chmod u+x world.sh

$ ./world.sh 
Hello world.

Hier ist das Verhalten wie erwartet. Damit ist zwar noch nicht sicher bewiesen, dass das Shebang-Problem mit dem Python-Interpreter zusammenhängt, es gibt aber einen ersten Hinweis.

Wie sieht die Ausgabe von file auf einem Referenzsystem aus?

Mit host2 habe ich ja ein System, das Python-Skripte ohne Fehler ausführt. Ich erstelle auch hier das hello.py-Skript inkl. Shebang und lasse mir die Ausgabe von file anzeigen:

$ cat <<EOF >hello.py
> #!/usr/bin/env python3.9
> print("Hello, world.")
> EOF

$ file hello.py 
hello.py: Python script, ASCII text executable

Hier findet sich kein Hinweis auf no read permission.

Hypothese 7: Es ist nur der User tronde betroffen

Um diese Hypothese zu prüfen, erstelle ich einen neuen Benutzer test, ein Python-Skript und prüfe, ob das Problem auftritt:

# useradd test
# su - test
$ pwd
/home/test
$ cat <<EOF >hello.py
> #!/usr/bin/env python3
> print("Hello, world.")
> EOF
$ cat hello.py 
cat: hello.py: Operation not permitted

Das Problem ist nicht auf den User tronde beschränkt. Es scheint alle nicht privilegierten User zu betreffen.

Zwischenfazit

  • Das Problem scheint Host-spezifisch zu sein, da es auf einem Referenzsystem nicht auftritt
  • Das Problem tritt nur auf, wenn nicht privilegierte User ein Python-Skript ausführen, welches eine Shebang enthält
    • Diese Skripte können jedoch mit root-Rechten ausgeführt werden
    • Ohne die Shebang können die Skripte mittels /usr/bin/python3 <scriptname> ausgeführt werden
  • Ist eine Shebang enthalten, die einen Python-Interpreter enthält, verlieren unprivilegierte User den Lesezugriff auf die Datei (cat, less, etc. sind dann ebenfalls betroffen)
  • Trage ich eine andere Shebang z.B. #!/usr/bin/bash ein, kann ich das Skript als unprivilegierter User mittels `python3 <scriptname>` korrekt ausführen

Für mich bedeutet das leider, dass ich mir nun Hilfe suchen muss, da mir die Ideen ausgehen. Also beginne ich mit einer Internetsuche nach „troubleshooting shebang in python3″… und frage anschließend eine Kollegin um Rat. Vielen lieben Dank Michi für deine Zeit und Ideen!

Die Ursache

Michi und ich haben uns in einer Videokonferenz zusammengefunden und das Problem gemeinsam untersucht. Dabei sind wir nach obigen Muster vorgegangen:

  1. Genau eine Sache überprüfen
  2. Ergebnis auswerten
  3. Eine weitere Vermutung prüfen
  4. Ergebnis auswerten usw.

Dabei haben wir uns SELinux, das Audit-Log, die Linux-ACLs, das Environment, alias, locale und die Ausgabe diverser strace-Kommandos angeschaut. Die Details spare ich an dieser Stelle ein und komme zum Wesentlichen. Michi fand diesen Foreneintrag: Non-root users unable to read perl scripts. Darin wird fapolicyd als Fehlerquelle identifiziert. Und das ist tatsächlich auch in meinem Fall der Übeltäter.

Stoppe ich fapolicyd.service, kann ich die Python-Skripte mit Shebang wieder ausführen. Starte ich den Dienst erneut, ist auch das Problem zurück. Die Ursache ist identifiziert.

Moment, was ist fapolicyd?

Das Software-Framework fapolicyd steuert die Ausführung von Anwendungen basierend auf einer benutzerdefinierten Richtlinie. Dies ist eine der effizientesten Methoden, um die Ausführung nicht vertrauenswürdiger und potenziell bösartiger Anwendungen auf dem System zu verhindern.

Übersetzung aus Introduction to fapolicyd

Die von Ansible generierten und die von mir zum Test erstellten Python-Skripte wurden in der Ausführung blockiert, da diese als nicht vertrauenswürdig eingestuft wurden.

Allerdings fällt das in diesem Fall in die Kategorie „Gut gemeint ist nicht gleich gut gemacht“. Denn während zwar der Zugriff auf Python-Skripte mit Shebang für nicht-privilegierte User blockiert wird, können Skripte ohne entsprechende Shebang weiterhin ausgeführt werden. Wirkliche Sicherheit bietet dies nicht. Ich mache mir dazu mal eine Notiz, um das beobachtete Verhalten im Nachgang mit den Entwicklern zu diskutieren. Vielleicht habe ich das Design und Konzept von fapolicyd noch nicht ganz verstanden.

Warum ich da nicht früher drauf gekommen bin

  • Keine Ausgabe gab einen Hinweis darauf, dass fapolicyd die Ausführung blockiert
  • Ich habe fapolicyd vor langer Zeit zum Test auf diesem Host installiert und vergessen, dass es läuft
  • Durch fehlende Konfiguration gab es keine Einträge im Audit-Log, die auf die Ursache hätten hinweisen können

Wie findet man die Ursache, wenn man weiß, dass fapolicyd läuft?

Erstmal muss man wissen bzw. sich in meinem Fall daran erinnern, dass fapolicyd läuft. Dann kann man für einen schnellen Test fapolicyd.service stoppen und prüfen, ob das Problem noch besteht.

Um nun herauszufinden, warum fapolicyd die Ausführung von Python-Skripten mit Shebang blockiert, folge ich der Dokumentation in Kapitel 12.6. Troubleshooting problems related to fapolicyd. Ich stoppe fapolicyd.service und starte den Dienst mit dem Befehl fapolicyd --debug-deny. Damit werden nur Einträge ausgegeben, die blockierte Zugriffe zeigen. In diesem Modus führe ich den ursprünglichen Ansible-Ad-hoc-Befehl ansible -i hosts host.example.com -m ping aus, der wie erwartet fehlschlägt. In der Ausgabe auf host.example.com sehe ich nun:

09/08/2025 20:39:07 [ DEBUG ]: Rule number API supported yes                                            
09/08/2025 20:39:08 [ DEBUG ]: rule=11 dec=deny_audit perm=open auid=1000 pid=693342 exe=/usr/bin/python3.9 : path=/home/tronde/.ansible/tmp/ansible-tmp-1757356747.8650832-23284-14960045792104/AnsiballZ_ping.py ftype=text/x-python trust=0
09/08/2025 20:39:08 [ DEBUG ]: rule=11 dec=deny_audit perm=open auid=1000 pid=693342 exe=/usr/bin/python3.9 : path=/home/tronde/.ansible/tmp/ansible-tmp-1757356747.8650832-23284-14960045792104/AnsiballZ_ping.py ftype=text/x-python trust=0

Die Lösung

Damit ich host.example.com mit Ansible verwalten kann, muss ich die Ausführung von Python-Skripten unterhalb von /home/tronde/.ansible/tmp/ erlauben. Das dazu erforderliche Vorgehen ist in der Dokumentation in Kapitel 12.4. Adding custom allow and deny rules for fapolicyd beschrieben. Für meinen konkreten Fall sehen die einzelnen Schritte wie folgt aus:

Nach obiger Ausgabe habe ich Regel 11 (rule=11) getriggert. Also schaue ich mir zuerst an, was in Regel 11 steht und anschließend, in welcher Datei unterhalb von /etc/fapolicyd/rules.d diese Regel steht:

~]# fapolicyd-cli --list | grep 11
11. deny_audit perm=any all : ftype=%languages

~]# grep 'deny_audit perm=any all : ftype=%languages' /etc/fapolicyd/rules.d/*
/etc/fapolicyd/rules.d/70-trusted-lang.rules:deny_audit perm=any all : ftype=%languages

Anschließend erstelle ich eine Allow-Regel, in einer neuen Datei. Diese muss lexikalisch vor obiger Datei mit der Deny-Regel liegen:

~]# cat <<EOF >/etc/fapolicyd/rules.d/69-trusted-ansible-scripts.rules
> allow perm=any exe=/usr/bin/python3.9 trust=1 : dir=/home/tronde/.ansible/tmp/ trust=0
> EOF

~]# fagenrules --check
/sbin/fagenrules: Rules have changed and should be updated

~]# fagenrules --load
~]#

Anschließend führe ich zum Test folgende Kommandos aus:

  1. Auf host.example.com: fapolicy --debug-deny
  2. Auf meinem Ansible Control Node: $ ansible -i inventory host.example.com -m ping

Ich bestaune das gewünschte Ergebnis:

host.example.com | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Nun beende ich den Debug-Modus und starte fapolicyd.service. Fehleranalyse und Entstörung sind damit beendet.

Für welche Anwendungsfälle diese Lösung funktioniert

Die obige Lösung sorgt dafür, dass Python-Skripte unterhalb des Verzeichnisses /home/tronde/.ansible/tmp/, welche eine Python-Shebang beinhalten, mit dem Python-Interpreter /usr/bin/python3.9 ausgeführt werden können.

Diese Lösung funktioniert nicht

  • Für andere unprivilegierte User außer tronde
  • Für andere Python-Interpreter wie z.B. /usr/bin/python3 oder /usr/bin/python3.11

Hinterher ist man immer schlauer

Jetzt, wo ich weiß, wonach ich suchen muss, finde ich auch direkt mehrere Treffer in den Red Hat Solutions:

Dokumentation findet sich neben der Manpage fapolicyd(8) z.B. auch im RHEL 9 Security Hardening Guide ab Kapitel 12. Mit RHELDOCS-20981 – Improve section „Deploying fapolicyd“ in RHEL Security Hardening Guide – habe ich zudem einen Verbesserungsvorschlag eingereicht.

Fazit

Dieser Text hat an einem konkreten Beispiel gezeigt, wie eine strukturierte Fehleranalyse durchgeführt wird. Diese führt über die Problembeschreibung sowie das Formulieren von Hypothesen und deren Falsifizierung/Verifizierung nach endlich vielen Schritten zu einer Lösung.

Die Länge des Textes zeigt, wie aufwändig eine Fehleranalyse werden kann. Wenn man keinen direkten Zugriff auf das betroffene System hat und mit jemandem ausschließlich über ein Ticket-System kommunizieren kann, wird schnell klar, dass sich ein Fall über mehrere Tage und Wochen hinziehen kann.

Ich war irgendwann geistig erschöpft und hatte keine Lust mehr allein weiterzumachen, da mir die Ideen ausgingen. In diesem Fall hilft es, sich einen frischen Geist zur Unterstützung zu holen. Gemeinsam mit meiner Kollegin Michi konnte die Ursache (fapolicyd) identifiziert werden.

Mit Hilfe der Dokumentation war ich dann auch in der Lage, das Problem zu lösen. Ich kann nun Ansible-Playbooks auf dem Zielsystem ausführen.

Der Dienst fapolicyd überzeugt mich nicht. Meine Gedanken dazu werde ich in einem Folgeartikel mit euch teilen.

In einem weiteren Folgeartikel werde ich darüber schreiben, was Hilfesuchende und Supporter tun können, damit beide Seiten eine möglichst gute Support-Erfahrung haben.

Ich freue mich nun über ein gelöstes Problem und schreibe an meinem Ansible-Playbook weiter.

Kommentare – Das Salz in der Blogsuppe

Mindestens einmal im Jahr stelle ich mir die Frage: „Soll ich die Kommentarfunktion in meinem Blog beibehalten oder deaktivieren?“

Grund für die wiederkehrende Frage ist der Kommentar-Spam, der viele Bloggerinnen und Blogger quält und der auch meinen Blog im Jahresverlauf mit unterschiedlicher Härte trifft. Die folgende Abbildung 1 gibt euch einen Eindruck von dem Verhältnis zwischen gewünschten Kommentaren und Spam.

Das Bild zeigt das Verhältnis von legitimen Kommentaren zu Spam-Kommentaren. Es gibt 1202 legitime Kommentare und 35771 Spam-Kommentare
Abb. 1: Screenshot der Kommentarstatistik 2025-09-10

Bisher habe ich mich jedes Mal dafür entschieden, die Kommentarfunktion beizubehalten. Für mich gehören die Kommentare zum Blog einfach dazu. Ich freue mich, wenn sich meine Leserinnen und Leser die Zeit nehmen, einen Kommentar zu hinterlassen. So erfahre ich u.a., was sie von meinen Artikeln halten und welche Meinung sie zu einem Thema haben. Auch habe ich schon einige gute Empfehlungen über die Kommentare erhalten. Sie stellen für mich ein wichtiges Mittel dar, um mit meinen Leserinnen und Lesern zu kommunizieren.

Ich selbst nutze auch gern die Kommentarfunktion in anderen Blogs, um mich für interessante Artikel zu bedanken, Fragen zum Thema zu stellen oder mich an einer Diskussion zu beteiligen.

Dabei bevorzuge ich es, wenn Kommentare direkt im Blog zu finden sind und nicht in anderen geschlossenen Plattformen verschwinden, in denen der Artikel geteilt wurde. Mit geschlossener Plattform meine ich jene, für die eine Registrierung und Anmeldung erforderlich ist, um die darin enthaltenen Inhalte abrufen zu können.

Der Kampf gegen den Spam…

…ist wie der Kampf eines berühmten Ritters gegen die Windmühlen. In meinem Kampf steht mir die Antispam Bee zur Seite, ohne die ich die Kommentarfunktion nicht anbieten könnte.

Da ich in diesem Blog fast ausschließlich Artikel in deutscher Sprache veröffentliche, akzeptiere ich auch nur Kommentare in Deutsch. Dies ist eine Einstellung für Antispam Bee, mit der ein Großteil des Kommentar-Spam direkt aussortiert wird.

Die als Spam markierten Kommentare schaue ich einmal die Woche grob durch. Erfreulicherweise habe ich schon lange keine False Positives mehr dabei gehabt.

Fazit

Für mich gehören Kommentare zum Blog wie der Senf zur Bratwurst. Ich freue mich über Kommentare, die ich in meinem Blog erhalte und darüber wenn Blogs eine einfach nutzbare Kommentarfunktion anbieten.

Was denkt ihr über Kommentare im Blog? Lasst es mich doch gerne in einem Kommentar wissen. ;-)

Dieser Beitrag ist Teil der #BlogWochen2025, welche von von Benedikt, Dirk und Robert zum runden Geburtstag ihrer Blogs ausgerufen wurden.

Was man aus einer Umfrage nicht lernen kann

Viele unter euch kennen bestimmt den Spruch: „Traue nie einer Statistik, die du nicht selbst gefälscht hast.“

Mit Umfrageergebnissen verhält es sich ähnlich. Häufig werden Dinge in diese hineininterpretiert, welche durch die erfassten Daten gar nicht belegt werden können. In diesem Text möchte ich anhand eines einfachen Beispiels erläutern, was man aus einer Umfrage alles nicht ableiten bzw. lernen kann.

Wir unterscheiden zwei Arten von Umfragen

Umfrage ist nicht gleich Umfrage. Dies wird offensichtlich, wenn man sich der englischen Sprache bedient, in der zwischen Poll und Survey unterschieden wird. Ich habe Gemini um eine prägnante Erklärung der Unterschiede gebeten und folgende Antwort erhalten:

Der wesentliche Unterschied zwischen einer Poll und einer Survey liegt in ihrem Umfang und ihrer Komplexität.

  • Eine Poll (Meinungsumfrage oder Abstimmung) ist in der Regel eine schnelle, auf eine einzige Frage beschränkte Erhebung. Sie dient dazu, eine sofortige Meinung oder Präferenz zu einem spezifischen Thema zu erfassen, oft mit einfachen Multiple-Choice-Antworten.
  • Eine Survey (Befragung, Erhebung oder Umfrage) ist ein umfassenderer Prozess, der aus mehreren Fragen besteht und darauf abzielt, detailliertere Daten und tiefere Einblicke zu sammeln. Sie kann verschiedene Fragetypen enthalten, darunter offene Fragen, um qualitative Informationen zu erhalten.

In diesem Text betrachte ich eine Meinungsumfrage bzw. Abstimmung. Nach obiger Definition zeichnet sich daher schon ab, dass daraus kein großer Erkenntnisgewinn zu erwarten ist.

Umfrage auf Mastodon

Stand 28. August folgen mir auf Mastodon 249 Personen Accounts. Ob es sich dabei um natürliche Personen oder Bots handelt, weiß ich nicht sicher. Dies festzustellen, bedarf einer eigenen Analyse.

Am 20. August habe ich die in Abbildung 1 dargestellte Umfrage gestartet. Die Umfrage lief für die Dauer von einer Woche und ist mittlerweile beendet.

Abbildung 1: Screenshot einer Mastodon-Umfrage zur Verwendung verschiedener Container-Werkzeuge

Gewonnene Erkenntnisse

In Abb. 1 ist zu erkennen, dass 21 Personen abgestimmt haben, die Umfrage 5-mal geteilt und 3-mal favorisiert wurde. Laut dem Ergebnis benutzen von den 21 Personen:

  • 6 Personen (29 %) die nativen Podman-Befehle podman {run,start,stop} etc.
  • 9 Personen (43 %) verwenden Quadlets
  • 6 Personen (29 %) verwenden podman-compose

Das ist alles.

Der Erkenntnisgewinn ist tatsächlich recht gering. Aber mehr gibt diese kurze Umfrage einfach nicht her.

Was kann man hingegen nicht aus der Umfrage ableiten?

Einige Menschen neigen dazu, Dinge in Umfrageergebnisse hineinzuinterpretieren, die durch die Daten nicht belegt werden können. Dies passiert oftmals eher unterbewusst und völlig ohne böse Absicht. Um dem zu begegnen, hilft es, sich bewusst zu machen, was man alles nicht ableiten kann:

  • Ich habe keine Ahnung, wer an der Umfrage teilgenommen hat, da die Beantwortung anonym möglich war und ich keinerlei demographische Daten erhoben habe.
  • Da sich in sozialen Medien in der Regel Filterblasen bilden, liegt der Schluss nahe, dass die Antworten vorwiegend aus meiner Filterblase stammen und nicht repräsentativ sind.
  • Da die Umfrage mehrfach geteilt wurde, weiß ich nicht, ob nur direkte Follower oder auch indirekte Kontakte abgestimmt haben.
  • Ob Menschen die kein Podman nutzen, stattdessen Docker oder gar keine Container nutzen, weiß ich auch nicht.
  • Darüber wie viele Menschen in der IT nun Linux-Container betreiben und wie viele davon dies mit Podman tun, weiß ich nichts.
  • Diese Umfrage war sicher nicht repräsentativ.

Ziel der Umfrage – Was interessiert mich eigentlich?

Um ehrlich zu sein, habe ich mir zum Ziel der Umfrage gar nicht viele Gedanken gemacht. Ich habe sie spontan erstellt und wollte mich vom Ergebnis überraschen lassen. Während die Umfrage lief, kam in mir die Frage auf, was Menschen versuchen können, aus diesen Umfragen abzuleiten. Das führte zu diesem Artikel.

Grundsätzlich interessieren mich Antworten auf folgende Fragen:

  • Wie verbreitet werden Linux-Container in der IT eingesetzt?
  • Gibt es signifikante Unterschiede hinsichtlich ihrer Verwendung in Abhängigkeit der Branche?
  • Wie groß ist der Anteil von Docker, HELM, Kubernetes, OpenShift, Operator, Podman, Rancher und weiterer Werkzeuge?
  • Was sind die bevorzugten Werkzeuge?
  • Welche Werkzeuge werden für welchen Zweck bevorzugt genutzt?
  • Ist im zeitlichen Verlauf ein Trend zu erkennen?
  • Mit welchem Konfigurations-Format erreiche ich eine möglichst große Zielgruppe?
  • Wie stelle ich sicher, dass diese Daten unabhängig und repräsentativ erhoben wurden?

Besonders unter Berücksichtigung des letzten Stichpunktes wird deutlich, dass die Beantwortung dieser Fragen mit einer Menge Arbeit verbunden ist. Ich bin nicht so sehr an den Antworten interessiert, als dass ich bereit bin, diese Arbeit und Zeit zu ihrer Erledigung zu investieren.

Kann Künstliche Intelligenz hierbei helfen?

Das herauszufinden, wird Gegenstand eines kommenden Wochenendprojekts sein. Ich sehe dabei grundsätzlich folgende Herausforderungen auf mich zukommen.

Die diversen KI-Chatbots werden meine Fragen grundsätzlich mit einer starken Überzeugung beantworten. Einige listen dabei sogar die Quellen auf, welche sie für die Formulierung ihrer Antwort berücksichtigt haben. Daraus lässt sich dann immerhin ein Quellenverzeichnis erstellen. Die Arbeit liegt dann in der Quellenprüfung:

  • Was sind Primärquellen und Sekundärquellen?
  • Wie erfolgte die Datenerhebung?
  • Gibt es Interessenskonflikte? (z.B. hat der Gewinner eines Vergleichstest den Test bezahlt?)
  • Kann ich die Quellen prüfen oder liegen diese hinter Bezahl- bzw. Login-Schranken?

Ich habe noch Zweifel inwieweit mich die KI bei der Quellenprüfung unterstützen kann. Doch darum wird es in einem zukünftigen Artikel gehen. Hier ist nun für heute Schluss.