Beta Test linuxmuster.net 7.4

Hallo,

ich hab gerade meinen server upgedatet: wie immer mittels

apt update

apt dist-upgrade

Seltsamerweise meinte er


Aktualisiere nicht:
linuxmuster-base7


Auch ein weiterer Lauf danach meldete das gleiche.

Dann hab ich mit

apt-mark showhold

geschaut, ob ich das Paket auf hold habe: hab ich nciht.

Jetzt hab ich also weiterhin linuxmuzster-base7 in der Version 7.4.7

obwohl es doch schon 7.4.10 gibt.

Hat Jemand eine Idee?

LG
Holger

Hallo Holger,

apt verhält sich in 26.04 restriktiver bei Abhängigkeiten. In dem Fall kommt für linuxmuster-base7 dracut neu dazu. Du musst das Paket explizit mit apt-get install linuxmuster-base7 upgraden. Steht auch irgendwo weiter oben.

VG, Thomas

Hallo Thomas,

.. sowas hatte ich mir gedacht und hatte auch schon 10 Meldungen gelesen: es aber nicht gefunden.

Danke :slight_smile:

Jetzt tuts ..

LG
Holger

Hallo @juergen und @thomas

Kurzes Feedback zum DNSStubListener=no-Fix: Wir haben ihn heute als zweiten Produktivtest auf unserem LMN7.4-Server nachvollzogen, den ich zuvor ebenfalls mit der pauschalen Maskierung „beglückt“ hatte.

Ablauf bei uns (wie von Jürgen vorgeschlagen):

  • Vorzustand: systemd-resolved.service und systemd-networkd-wait-online.service waren masked/inactive.
  • systemctl unmask + enable für beide Units.
  • /etc/systemd/resolved.conf.d/no-stub.conf mit
    [Resolve]
    DNSStubListener=no
  • Neustart in der Reihenfolge systemd-resolved → systemd-networkd-wait-online → samba-ad-dc.

Verifikation: alle drei Units aktiv, systemctl --failed leer, Port 53 bleibt exklusiv bei Sambas eigenem DNS (kein Konflikt mit dem Stub-Listener mehr), interne und externe DNS-Auflösung funktionieren, LDAPS/636 unverändert erreichbar, Journal sauber.

Kann den Fix also aus einem zweiten unabhängigen Produktivsystem bestätigen — deutlich sauberer als das komplette Maskieren. Danke für die Analyse und die Lösung!

LG Jesko

Ok, dann setze ich das jetzt so um.

Hallo zusammen,

Anfang der Ferien haben wir unseren LMN7-Server auf Version 7.4 upgegraded. Das hat auch wunderbar funktioniert und ich konnte keine Fehler beobachten. Bis auf einen:

Seit dem Upgrade landen sämtliche PCs nach dem Sync in einer Rescue Shell. Sämtliche Ansätze haben bislang leider nicht zum Erfolg geführt.

Hatte von euch jemand dieses Problem ebenfalls und gibt es eine Lösung dafür? Im Forum konnte ich leider keine finden.

Viele Grüße
Christoph

Moin!

Release Notes linuxmuster-base v7.4.20 (linuxmuster.net 7.4)

Automatischer systemd-resolved-Fix für laufende Server

Das Paket-Update auf 7.4.20 prüft jetzt automatisch ob systemd-resolved bzw. systemd-networkd-wait-online.service noch maskiert sind und korrigiert sie bei Bedarf. War alles bereits in Ordnung, passiert nichts. Samba selbst wird dabei nicht neu gestartet, es gibt also keinen zusätzlichen Ausfall.

Betrifft: alle, die schon auf 7.4 sind – die Reparatur läuft automatisch mit dem nächsten apt upgrade.

(Assisted by Claude)

S.a. LMN 7.3 Updates - #92 von thomas

VG, Thomas

Hi @Christoph

Das war bei mir nach dem Upgrade auch so, weil aus mir nicht erfindlichen Gründen (und auch dann irgendwie wieder vergessen und nicht weiter recherchiert) das System im Image seine Root-Partition nicht mehr gefunden hat.

Lösung war bei mir:

in der Start.conf der jeweiligen Gruppe unterhalb von Kernel und Initrd in der Append-Zeile die Root-Partition noch mit anzugeben:

[OS]
...
Boot = /dev/nvme0n1p2
Root = /dev/nvme0n1p2
Kernel = /boot/vmlinuz
Initrd = /boot/initrd.img
Append = ro splash net.ifnames=0 biosdevname=0 root=/dev/nvme0n1p2
...
HIER -------------------------------------------^

Das müsste man vielleicht nochmal debuggen, warum das bei uns beiden passiert und bei anderen keine Rolle spielt. @thomas hast du ne Idee?

LG Jesko

Hallo Arnaud,

ich habe noch einen Bug in der Web-UI gefunden. Beim Einschreiben von Benutzern und Gruppen für Drucker kann man mehrere angeben. Die werden zunächst auch korrekt angezeigt. Das Übernehmen klappt aber nur dann, wenn genau ein Element (ein Benutzer oder eine Gruppe) hinzugefügt wurde.

Viele Grüße
Matthias

Im Moment leider nicht. Ich habe hier nur Append = ro stehen, bei einem Debian. Läuft.

VG, Thomas

Hallo Jesko,

danke, das hat geholfen! Sonderbar ist es trotzdem…

Viele Grüße
Christoph

Hallo,

ich hab debian 12 Clients.

Ich mußte, beim Umstieg von ubuntu auf debian die beiden folgenden Zeilen in der start.conf von:

Kernel = /boot/vmlinuz
Initrd = /boot/initrd.img

zu

Kernel = vmlinuz
Initrd = initrd.img

ändern, damit das debian bootet.

Allerdings steht auch in meiner Append Zeile das Device mit drin:
Append = ro splash root=/dev/sda1

LG
Holger

Das Verhalten, dass der Client in der Rescueshell landet, ist, glaube ich, aber ein Zeichen, dass Kernel und initrd erfolgreich geladen wurden und dann die Root-Partition nicht gefunden wurde.
Deshalb hilft da der fix mit dem Append „root-=…“

LG Jesko

Hallo zusammen,

Kleiner Lebenszeichen von mir: ich habe (hoffentlich) alle Meldungen notiert, euch alle vielen Dank dafür, und ich habe schon angefangen drauf zu arbeiten. Ich bin gerade extrem belastet, aber die Fixs werden die nächsten Tage kommen.

Gruß

Arnaud

Hallo Arnaud,

du bist ein Schatz :slight_smile:

Aber bitte: keine Eile. Ich sehe da jetzt nichts total dringendes…

LG
Holger

Neue Pakete für 7.4: linuxmuster-tools7 7.4.15, linuxmuster-api7 7.4.12, linuxmuster-cli7 7.4.8, linuxmuster-webui7 7.4.11 und sophomorix4 7.4.4

Hallo zusammen,

soeben sind fünf Pakete für die 7.4 veröffentlicht worden. Diese Runde enthält zwei Sicherheitskorrekturen und eine Reihe von Fehlerbehebungen, die fast alle aus euren Rückmeldungen stammen.

Sicherheit

Schuladministratoren konnten auf fremde Schulen zugreifen (linuxmuster-api7)
GET /v1/roles/{role} lieferte einem Schuladministrator die vollständigen Benutzerobjekte jeder beliebigen Schule — einschließlich des Erstpassworts im Klartext. GET und POST /v1/listmanagement/{school}/{mgmtlist} erlaubten es, die Verwaltungsliste einer fremden Schule zu lesen und vor allem zu überschreiben; beim nächsten sophomorix-kill hätte das dort Konten gelöscht. Beide Routen sind jetzt an die Schule des aufrufenden Kontos gebunden, und ein leerer school-Parameter weitet die Abfrage nicht mehr auf alle Schulen aus. Gemeldet vom edulution-ui-Team über den privaten Kontakt aus SECURITY.md — danke für den sehr genauen Bericht.

Ajenti 2.2.17 ist ab linuxmuster-webui7 7.4.11 Voraussetzung
Diese Ajenti-Version behebt drei Probleme, die ohne Anmeldung erreichbar waren.

Behobene Fehler

Drucker: mehrere Benutzer oder Gruppen gleichzeitig eintragen blieb wirkungslos
Die Mitglieder wurden zwar eingetragen, aber die Oberfläche meldete nichts zurück und zeigte weiter den alten Stand — nur mit genau einem Element funktionierte es sichtbar. Die Druckermitgliedschaft läuft jetzt über linuxmuster-api7: ein einziger Aufruf statt eines sophomorix-group-Aufrufs pro Person. Dabei ist ein zweiter Fehler aufgefallen: wurden Benutzer und Gruppen zusammen übernommen, ging eine der beiden Änderungen verloren. Danke @ebert für den Bericht: Beta Test linuxmuster.net 7.4 - #231 von ebert

Prüfungskonten wurden bei der Mitgliedersuche angeboten
Die Suche nach einem Mitglied lieferte auch die -exam-Konten, deren Bezeichnung sich kaum vom echten Konto unterscheidet. Da ein Prüfungskonto am Ende der Prüfung gelöscht wird, werden sie nicht mehr angeboten.

Kontingent-Reiter blieb leer
Ein Kontingent von -1 (unbegrenzt) wurde als Text statt als Zahl gelesen; der Reiter blieb leer und die Oberfläche meldete Fehler. Danke @juergen: Beta Test linuxmuster.net 7.4 - #222 von juergen

Gruppe ohne Mitglieder ließ sich nicht speichern
Wurde das letzte Mitglied einer Gruppe entfernt, brach der Vorgang mit einem Fehler ab. Eine leere Mitgliederliste ist ein gültiger Zustand und wird jetzt auch so behandelt. Danke @juergen: Beta Test linuxmuster.net 7.4 - #211 von juergen

*_image.status-Dateien wurden je nach Schreibweise nicht gefunden
Der Dateiname wurde unter Beachtung der Groß- und Kleinschreibung gesucht, der Rechnername aber nicht immer in derselben Schreibweise geliefert. Danke @TomS, der die Ursache selbst gefunden hat: Anzeige "Letzte Synchronisierung" geht nicht mehr

Klassen-Untergruppen blieben nach dem Löschen einer Klasse zurück
<Klasse>-teachers, -students und -parents gehören zu linuxmuster-tools7, nicht zu sophomorix: sophomorix-class --kill löschte nur die Klassengruppe selbst und ließ sie samt der OU stehen. sophomorix-class räumt jetzt auf, linuxmuster-cli7 hat einen Befehl für die verwaisten Untergruppen, und die Lehrkräfte einer Klasse stehen zusätzlich in sophomorixAdmins — dort, wo sophomorix und die Weboberfläche sie lesen. Siehe Klassenspezifische Gruppen für Lehrer und Schüler

LINBO: die letzte Gruppe der start.conf fehlte
Beim Einlesen einer start.conf wurde der letzte Abschnitt nicht übernommen. Danke @TomlDev für den Bericht (linuxmuster-tools7 #29).

Eltern-Gruppe bei Benutzernamen mit einem Punkt
Die Gruppe der Eltern wurde für Anmeldenamen mit einem Punkt nicht gefunden. Danke @Maddi02 für den Pull Request (linuxmuster-tools7 #31).

cn fehlte in der Benutzerliste der API
Danke @JanHolger für den Pull Request (linuxmuster-api7 #40).

Versionen

Paket Version
linuxmuster-tools7 7.4.15
linuxmuster-api7 7.4.12
linuxmuster-cli7 7.4.8
linuxmuster-webui7 7.4.11
sophomorix4 7.4.4

Wie immer gilt: meldet euch, wenn etwas nicht stimmt — die Fehler dieser Runde kommen fast alle aus euren Berichten, euch vielen Dank :wink:

Gruß

Arnaud

Moin!

linuxmuster-linbo v7.4.14 bringt einen linbo-remote-Rewrite in Python, eine neue Option --dry-run, Fixes und neue Testskripte. Das Verhalten von linbo-remote bleibt für alle Aufrufer (linuxmuster-tools, linuxmuster-api) unverändert.

  • Neue Option --dry-run: zeigt für jeden mit -c/-p übergebenen Befehl was der Client tun würde, ohne es wirklich auszuführen.
  • Zwei reale Bugs beim Portieren gefunden und behoben: aus mehreren Worten bestehende Image-Kommentare (create_image:<#>:"...") wurden bisher am ersten Leerzeichen abgeschnitten; `-h` beendete sich fälschlich mit Exit-Code 1.
  • linbo-mkgrubimg (vormals mkgrubhostimg.py) repariert: war durch veraltete Imports gegen aktuelles linuxmuster-base7 nicht mehr lauffähig.
  • Umfangreiche neue Testabdeckung: pytest-Unit-Tests, Shell-Tests (dash + busybox ash) sowie ein Live-Smoke-Test (linbo-remote_dry_run_test.py), der alle unterstützten Befehle per --dry-run gegen einen echten Client durchspielt.

(Erstellt mit Hilfe von Claude)

Details siehe Changelog.

VG, Thomas

Moin!

Release Notes linuxmuster-base v7.4.21

Fehlendes SAN in Zertifikaten, kaputte CA-Erneuerung, Code-Aufräumung

@ebert hat darauf hingewiesen (Props gehen raus!), dass die beim Setup erzeugten selbstsignierten Zertifikate kein Subject Alternative Name (SAN) enthalten – moderne Browser und Clients lehnen solche Zertifikate zunehmend ab oder zeigen Warnungen an.

Bei der Prüfung zeigte sich, dass gleich zwei Stellen betroffen waren:

  • Server- und Firewall-Zertifikate: Beim Signieren wurde die Erweiterungs-Konfiguration mit den SAN-Angaben nie tatsächlich angewendet – ein fehlendes OpenSSL-Flag sorgte dafür, dass die entsprechende Sektion der Vorlage stillschweigend ignoriert wurde.
  • CA-Zertifikat: Hier wurde versucht, das SAN direkt in den Zertifikats-Betreff (Subject) einzuschleusen – das erzeugt aber gar kein echtes SAN, sondern nur einen bedeutungslosen Zusatzeintrag im Subject-Feld.

Bei der Untersuchung von linuxmuster-renew-certs kam noch ein deutlich schwerwiegenderer Fund hinzu: Die Erneuerung des CA-Zertifikats (-c ca bzw. -c all) funktionierte auf 7.4 überhaupt nicht – der Befehl brach mit einem OpenSSL-Fehler ab, da ein Kommandozeilenparameter falsch zusammengesetzt war.

Alle drei Probleme sind jetzt behoben. Dabei wurde der Code für die CA-Zertifikatserstellung/-erneuerung, der bisher an zwei Stellen mit leichten Abweichungen dupliziert war, in einer gemeinsamen Funktion zusammengefasst. Das brachte noch einen weiteren, bisher unbemerkten Fehler ans Licht: Beim Erneuern des CA-Zertifikats wurde das neue Zertifikat nie in den System-Vertrauensspeicher (Trust Store) eingetragen – dieser blieb also auf dem alten Stand. Auch das läuft jetzt korrekt.

Betrifft: alle 7.4-Server. Zertifikate können per linuxmuster-renew-certs -c all mit SAN erneuert werden. Danach müssen allerdings Firewall und Server neu gestartet werden.

(Erstellt mit Hilfe von Claude)

VG, Thomas

Hallo Thomas,

phänomenal - vielen Dank für den schnellen Fix! Werde ich später am Abend noch testen.

Eine Frage noch: Wie kommt das neue Zertifikat auf sauberem Weg in den Debian-13-Client? Einfach linuxmuster-linuxclient7 setup nochmal ausführen? Oder manuell in /usr/local/share/ca-certificates/ kopieren und sudo update-ca-certificates aufrufen? Muss das alte vorher gelöscht werden, oder wird es einfach überschrieben?

Viele Grüße
Matthias

Neue Pakete für 7.4: linuxmuster-tools7 7.4.16, linuxmuster-api7 7.4.13, linuxmuster-webui7 7.4.12 und linuxmuster-cli7 7.4.9

Hallo zusammen,

soeben sind vier Pakete für die 7.4 veröffentlicht worden. Schwerpunkt ist diesmal die API: Host-Keys lassen sich auf einzelne Endpunkte einschränken, das Rate-Limit der Anmeldung ist konfigurierbar, und die LINBO-Verwaltung ist an mehreren Stellen erweitert worden.

Neue Funktionen

API-Schlüssel lassen sich auf einzelne Endpunkte einschränken
Bisher erreichte ein Host-Key immer die gesamte API mit den Rechten des hinterlegten Benutzers. In linuxmuster-webui7 (Einstellungen → Api Keys) kann jetzt pro Schlüssel ein Scope hinterlegt werden, also eine Liste von Endpunkten in der Form GET /linbo/hosts/*/status. * steht für genau ein Pfadsegment, ** für den Rest des Pfades, und die Methode darf ebenfalls * sein. Ohne Scope bleibt alles wie bisher. Ein Scope schränkt nur ein — die Rolle des hinterlegten Benutzers wird weiterhin geprüft. Einträge, die auf keine Route passen, werden beim Start von linuxmuster-api7 als Warnung protokolliert; dabei auf den abschließenden Schrägstrich achten, /users und /users/ sind nicht derselbe Pfad.

Kleiner persönnlicher Beispiel: in meinem AG IT-Sanitäter möchte ich dass die Helfer Zugang auf die letzte Synchronisation eines Computers haben (dafür habe ich angefangen eine kleine Django App zu bauen). Aber die Rechte von einem Host_Key als Admin will ich nicht geben, das wäre zu breit und zu gefährlich. Mit diesem „scoping“ ist es nun möglich (die Django App wird nur den Endpunkt /linbo/hosts/{hostname}/status erreichen können).

Die Schlüssel werden nur beim Start der API gelesen. linuxmuster-webui7 startet den Dienst nach jeder Änderung neu und meldet jetzt auch, wenn das nicht geklappt hat — bis dahin ist die gerade gespeicherte Änderung nicht aktiv.

Rate-Limit der Anmeldung konfigurierbar
GET /v1/auth/ war fest auf 5 Anfragen pro 60 Sekunden begrenzt, gezählt pro Client-Adresse. Eine Oberfläche, die alle ihre Benutzer von einer einzigen Adresse aus anmeldet, hatte dieses Kontingent nach fünf Anmeldungen aufgebraucht: alle weiteren bekamen 429 und wurden wieder abgemeldet. Über den neuen Abschnitt rate_limit in der config.yml lassen sich jetzt Anzahl, Zeitfenster und eine Whitelist von Adressen setzen, requests: 0 schaltet die Begrenzung ganz ab. Aufrufe vom Server selbst werden weiterhin nicht gezählt. Danke an @Pasemesan für die genaue Beschreibung (Issue #41).

LINBO: VDI-Konfiguration, start.conf-Sicherungen, ISO und Beispiele über die API
Die API kann jetzt auch das, was der Server ohnehin schon vorhält:

  • die VDI-Konfiguration einer Gruppe (start.conf.<gruppe>.vdi) lesen, schreiben und löschen (Issue #38)
  • die vorhandenen start.conf-Sicherungen auflisten, zurückspielen und löschen; vor dem Zurückspielen wird die aktuelle Datei gesichert, ein Restore lässt sich also selbst wieder rückgängig machen
  • linbo.iso herunterladen sowie die mitgelieferten Beispielkonfigurationen aus /srv/linbo/examples auflisten und lesen (Issue #39)

Danke an @TomlDev für die Vorschläge.

LINBO-Routen für Schuladministratoren
Die LINBO-Routen waren global-admin-only, obwohl die Schulkonsole Schuladministratoren seit jeher dieselben Möglichkeiten gibt. Sie stehen jetzt auch Schuladministratoren offen. Routen, die auf Geräte wirken (WOL, Boot-Logs), werden dabei über die devices.csv auf die eigene Schule gefiltert. Die Dateien unter /srv/linbo kennen dagegen keine Schule — dort gilt weiterhin ein serverweiter Bestand, und jeder kritische Endpunkt sagt das in seiner Beschreibung auch. Eine echte schulweise Trennung der LINBO-Dateien ist separat geplant. Nur /server-info bleibt global-admin-only. Danke an @TomlDev (Issue #37).

lmncli linbo lastsync filtert nach Status
lmncli linbo lastsync kennt jetzt -w/--warning und -d/--danger und zeigt dann nur die Geräte im jeweiligen Zustand an (gelb: seit mehr als 7 Tagen nicht synchronisiert, rot: nie oder seit mehr als 30 Tagen). Ein Gerät bleibt in der Liste, sobald eines seiner Images passt; die übrigen Images werden zum Vergleich weiterhin mit angezeigt.

Behobene Fehler

Nach dem Umbenennen oder Duplizieren eines Images fehlte der Torrent
Ein Torrent enthält den Dateinamen, den er ausliefert, und die .hash-Datei beschreibt diesen Torrent: beide überstehen eine Umbenennung nicht. Bisher wurden sie gelöscht und nicht wieder erzeugt, sodass für das umbenannte Image kein Torrent mehr zur Verfügung stand. Jetzt werden beide nach dem Umbenennen oder Duplizieren im Hintergrund über linbo-torrent create neu gebaut — im Hintergrund, weil der Aufbau bei einem großen Image Minuten dauert. Die Image-Liste zeigt zusätzlich an, ob die Torrent-Datei vorhanden ist. Danke an @TomlDev (Issue #30).

configobj fehlte nach Installation oder Upgrade
Die Python-Abhängigkeiten von linuxmuster-tools7 standen in einer requirements.txt, die per pip in das venv unter /opt/linuxmuster installiert wurde. In einem venv mit --system-site-packages installiert pip aber nichts, was das System schon erfüllt — die Datei hat also nie garantiert, dass ein Paket wirklich vorhanden ist. configobj, jinja2, python-ldap, magic, pexpect und pyyaml sind jetzt reguläre apt-Abhängigkeiten des Pakets. Danke an @HappyBasher (Issue #32).

Nach einem Python-Upgrade importierte das venv nichts mehr
Ein venv schreibt seine Python-Version einmal in die pyvenv.cfg und aktualisiert sie nie, während bin/python3 dem System zur nächsten Version folgt. Nach einem Ubuntu-Upgrade liegt damit alles, was pip je installiert hat, in einem verwaisten site-packages außerhalb des Suchpfads: das venv sieht gesund aus und importiert nichts. linuxmuster-tools7 erkennt das jetzt und baut das venv neu auf; über einen neuen dpkg-Trigger installieren linuxmuster-api7, linuxmuster-cli7 und linuxmuster-webui7 anschließend ihre eigenen Anforderungen nach.

Systemweit installiertes Ajenti verdeckte die Kopie im venv
pip überspringt in einem venv mit --system-site-packages jede Anforderung, die das System schon erfüllt, auch eine mit fester Version. Eine systemweit installierte Ajenti-Kopie sorgte deshalb dafür, dass das venv nie eine eigene bekam und kein Update sie je erreicht hätte. linuxmuster-webui7 entfernt sie bei Installation und Upgrade.

Änderung an der API

Die Routen /v1/linbo/startconfs* und /v1/linbo/configs nehmen keinen Parameter school mehr entgegen: group_id adressiert einen serverweiten Bestand, der Parameter wurde nur geprüft und nie verwendet. Wer ihn weiterhin mitschickt, muss nichts ändern — er wird ignoriert.

Versionen

Paket Version
linuxmuster-tools7 7.4.16
linuxmuster-api7 7.4.13
linuxmuster-webui7 7.4.12
linuxmuster-cli7 7.4.9

Rückmeldungen wie immer gerne hier im Forum oder als Issue auf GitHub.

Gruß

Arnaud