lmn7 linbo-grub-kerberos
Angelegt Donnerstag 29 Dezember 2022
Ich will keine neue Installationsanleitung für einen Linuxclient schreiben, da es ja schon eine Ausgezeichnete gibt.
Es geht vielmehr um die Darstellung der Verbindungen zwischen den einzelnen Komponenten und der sich daraus ergebenden Möglichkeiten und Fallstricke. Dabei sind die Anwendungsfälle der Merian-Schule die Richtschnur:
- PCs mit Debian und Win10, starten mit Linbo in Dualboot
- Notebooks mit Debian, starten mit grub ohne linbo
- angepasster Lernstick mit Benutzeranmeldung
PC mit kerberos verbinden
linuxadmin@r001-pc01:~$ sudo linuxmuster-linuxclient7 setup
stellt die Verbindung zum Dömanencontroller her und legt einen Maschinenaccount an. Dabei wird ein Passwort für den PC r001-pc01 erzeugt und im ActiveDirectory des Domänencontrollers abgelegt. Zu dem Passwort bzw. dem Key wurde auf dem Domänenkontroller eine Versionsnummer (KVNO) erstellt. Der Dömanencontroller hat also von dem PC diese Informationen:
- PC-Name
- Domänennamen
- Passwort bzw. Key
- KVNO
Diese vier Eckdaten müssen stimmen, damit diesem PC vom Domänenkontroller vertraut wird. Es können sich dann alle in Linuxmuster hinterlegten Benutzer anmelden.
Diese Informationen werden vom Setup in der Datei /etc/krb5.keytab auf dem PC gespeichert.
PC neustarten
Jetzt hängt das weitere Verhalten des Systems von den verschiedenen Startvarianten ab.
Grub
alles funktioniert auf diesem PC, da sich auf diesem PC nichts ändert. Die vier Eckdaten stimmen.
Linbo
Beim Erzeugen eines Image von einem in die Domäne aufgenommen PCs wird im Image-Verzeichnis auf dem Server eine macct-Datei angelegt. In dieser Datei liegt das Maschinenpasswort desjenigen PCs. Beim Hochladen des Images wird diese Datei auf dem Server abgelegt.
Wenn Linbo auf einem PC startet wird es versuchen, diese macct-Datei vom Server herunterzuladen und das enthaltene Password ins ActiveDirectory (AD) auf dem Server zu schreiben und zwar in den Maschinenaccount des aktuellen PCs. Nun müssen wir unterscheiden:
Die macct- Datei existiert noch nicht
Dies ist der Fall, wenn noch nie ein Image von einem in die Domäne aufgenommen PCs gemacht worden ist. Linbo kann die Datei also nicht herunterladen und Linbo ändert dann auch nichts an der Konfiguration des ADs auf dem Server. Beim obigen PC r001-pc01 wird also alles funktionieren, Benutzer können sich anmelden, etc. .
Die macct-Datei existiert
Linbo lädt die Datei und überschreibt im Domänencontroller/AD das oben für r001-pc01 erzeugte Passwort. Das Passwort in /etc/krb5.keytab auf dem PC stimmt nun nicht mehr mit dem Passwort im Domänencontroller überein, es gibt kein Vertrauensverhältnis mehr zwischen Domänencontroller und r001-pc01 und die Anmeldungen der Benutzer schlagen fehl.
PCs vervielfachen
Prinzipiell könnte man jeden PC einzeln in die Domäne aufnehmen und startet die PCs immer mit grub, nie mit Linbo. Dann hätte jeder PC ein eigenes Maschinenpasswort. Dafür ist Kerberos eigentlich gedacht, aber es ist für unsere Zwecke unpraktisch.
Klonen
Ein anderer Weg ist die Festplatte von r011-pc01 zu klonen und auf die anderen PCs aufzuspielen ohne dabei etwas zu ändern. Auch hier muss grub und nicht Linbo verwendet werden. Im Netz starten dann lauter identische PCs, die intern alle den Hostname r001-pc01 haben. Nur vom Netz aus gesehen haben die PCs die über die MAC-Adresse zugeteilten Namen. Damit hat man dann lauter identische, funktionsfähige PCs. Dies verwenden wir für die Lernsticks.
Imagen mit Linbo
Von r001-pc01 wird ein Image erzeugt und das Maschinenpasswort in der macct-Datei gespeichert. Mit diesem Image wird der PC r001-pc02 gesynct und Linbo gestartet. Nun klickt man in Linbo auf den Button für den Start des Betriebssystems. Bevor Linbo sich beendet und in das Betriebssystem bootet, legt Linbo das Maschinenpasspwort für diesen PC r001-pc02 in der Domäne an. Beim Startvorgang von Linux patched linuxmuster-linxclient7 die Datei /etc/krb5.keytab
mit dem Namen r001-pc02 . Die Datei /etc/hostname
muss auch den Namen r001-pc02 enthalten - dies kann z.B. über den Postsync erfolgen. Nun stimmen die vier Eckdaten, der PC r001-pc02 ist funktionsfähig und kann über Linbo oder grub gestartet werden.
Notebooks oder PCs, die auch mit WLAN verwendet werden, sollten in der /etc/hostname immer den LAN-Namen haben.
Fallstricke
Bei einem neuen Image
Man hatte schon ein Image mit Domänenanmeldung erzeugt und ausgerollt. Wenn man nun auf r001-pc01 linuxmuster-linuxclient7 setup
ausführt und wieder ein Image erzeugt, hängt das weitere Verhalten von den Startvarianten ab:
Grub
Die noch ungesyncten PCs werden weiterfunktionieren, da Grub nichts am PC ändert und im ActivDirectory für die einzelnen PCs noch das alte PC-Passwort steht.
Linbo
Man wird sich an keinem PC im Netzwerk anmelden können, da Linbo beim Betriebsystemstart jeweils das neue Passwort im ActivDirectory hinterlegt und im ungesyncten Linux noch das alte steht. D.h. nach dem Erzeugen eines Image müssen alle PCs gleich synchronisiert werden.
Beim Image ausrollen
Auch beim Image ausrollen muss man die Startvarianten berücksichtigen. Machen wir einen PC neu mit dem Befehl linbo-remote -i r001-pc02 -c partition,format,sync:1,halt
. Der PC wird also gleich nach dem Sync runtergefahren.
Grub
Die Anmeldung wird nicht gehen. Dafür müsste erst das Maschinenpasswort von r001-pc02 ins ActiveDirectory geschrieben werden. Das macht aber Linbo und Linbo wurde nach dem Sync nicht gestartet.
Linbo
Alles funktioniert, da beim Start von Linbo alles so angepasst wird, dass die vier Eckdaten stimmen.
Wenn man also grub verwenden möchte, muss man den obigen Befehl mit start:1 statt mit halt abschliessen. Dann wird das Betriebssystem das erste Mal von Linbo gestartet. Danach kann weiter grub verwendet werden.
Bei späterem, wiederholtem Ausrollen eines Image reicht dann für beide Startmethoden auch linbo-remote -i r001-pc02 -c sync:1,halt . Wird aber nochmal partition,format verwendet, sollte wieder start:1 genommen werden, da die Informationen von der cache-Partition gelöscht wurden.
Dualboot
Für die Images von Linux und Windows werden zwei verschiedene Maschinenpasswörter angelegt. Wenn über Linbo eines der beiden Betriebssysteme gestartet wird, wird das entsprechende Passwort ins ActiveDirectory geschrieben. Daher: Dualboot schließt die Verwendung von Grub aus!
Notebooks mit Grub
Wir starten unsere Nootbooks über das Grubmenu direkt zu Linux ohne über Linbo zu gehen. Das Einzurichten ist mit dem neuen linuxmuster-linuxclient7 schwierig geworden.
Damit das Grubmenu verwendet wird, muss dies auf dem Server in der entsprechenden Datei unter linbo/boot/grub/....cfg
eingetragen sein. Wird der PC mit angeschlossenen Netzwerkkabel gestartet, wird automatisch diese Grub-Konfiguration geladen und verwendet. Also für Stand-PCs funktioniert das direkt.
Wird der PC bzw. das Notebook ohne Netzwerkkabel gestartet, wird aus der cache-Partition die Datei boot/custom.cfg
verwendet. Diese Datei wird nur dann in der cache-Partition angelegt bzw. aktualisiert, wenn auf dem PC Linbo bei angeschlossenen Netzwerkkabel gestartet wird - was hier aber gerade nicht passiert.
Wir haben das so gelöst, dass vor dem neu syncen der Notebooks set default=0
in linbo/boot/grub/....cfg
geschrieben wird, also Linbo gestartet wird. Wenn dann die Notebooks bespielt wurden und linux über Linbo gestartet wurde (s.o.), wird über ssh in der boot/custom.cfg
auf der cache-Partition und auf dem Server wieder set default=1
gesetzt. Ab nun startet das Notebook nur noch mit grub.