====== Sernet Samba Pakete ersetzen ======
//**Warnung:** Wir haben dieses Upgrade bereits mehrere Male erfolgreich durchgeführt. In einem der Fälle ist das Upgrade fehlgeschlagen. Die genaue Ursache konnten wir noch nicht ermitteln. Was nicht mehr funktionierte war das IDMapping zwischen UNIX UIDs/GIDs und den Windows SIDs. Der Fehler war so schwer, dass wir (da der Server virtualisiert war) auf einen vor dem Upgrade angelegten Snapshot der VM zurück springen mussten. \\
Der wesentliche Unterschied dieses Falles zu allen anderen Fällen war die Tatsache, dass das betroffene AD mittels "classic-upgrade" aus einer klassischen Samba-Domäne aufgebaut wurde. Vermutlich ist dies auch die Ursache für den Fehlschlag. **Sichern Sie Sich vor dem Upgrade also auf jeden Fall einen Weg zurück!**//
//**Hinweis:** Die nachfolgend beschriebene Migration macht nur Sinn, wenn Ihr invis-Server mindestens unter openSUSE Leap 42.1 betrieben wird. Für ältere Installationen unter openSUSE 13.1, lesen Sie bitte die Upgrade-Beschreibung **[[https://wiki.invis-server.org/doku.php/invis_server_wiki:upgrade:10.x-to-12.x|hier]]**.//
//**Hinweis:** Das offizielle Samba-Wiki widmet dem Thema Samba Upgrade umfangreiche Anleitungen, die Sie **[[https://wiki.samba.org/index.php/Updating_Samba|hier]]** finden.//
Mit der Entscheidung seitens der Sernet GmbH für deren Samba Pakete nur noch kostenpflichtige Maintenance anzubieten wurde es für uns als Open-Source-Projekt unmöglich dem zu folgen. Da die von openSUSE gelieferten Samba Pakete noch immer ohne Active-Directory geliefert werden, mussten wir eigene Pakete bauen. Es stehen zwei Repositories zur Verfügung:
- [[https://build.opensuse.org/project/show/spins:invis:unstable:samba|spins:invis:unstable:samba]]
- [[https://build.opensuse.org/project/show/spins:invis:stable:samba|spins:invis:stable:samba]]
Die im Stable-Repository vorgehaltenen Pakete sind bereits im produktiven Einsatz.
Entfernen Sie zunächst das Sernet-Repository. Ermitteln Sie die Nummer des Sernet-Repositories wie folgt:
invis:~ # zypper repos
...
Suchen Sie in der Ausgabe des Befehls die Zeile die das Sernet-Repository (sernet-samba-4.2) enthält und verwenden Sie deren Nummer im nachfolgenden Kommando:
invis:~ # zypper rr nummer
Fügen Sie jetzt das gewünschte Repository Ihrem System hinzu:
invis:~ # zypper ar http://download.opensuse.org/repositories/spins:/invis:/stable:/samba/openSUSE_Leap_42.2/spins:invis:stable:samba.repo
Die entsprechende Repository-Datei finden Sie im Download-Bereich des Repositories.
Während des gesamten Upgrade-Vorgangs sollten alle Client-PCs im Netzwerk herunter gefahren sein. Starten Sie die Clients frühestens nach Abschluss der Tests wieder.
===== Sichern des Active-Directories =====
invis-Server verfügen über ein kleines Script um das gesamte Active-Direktory zu sichern. Führen Sie dies zunächst vorsichtshalber aus:
invis:~ # adbackup
Die Sicherung in Form eine tar.gz Archivs finden Sie unter: /srv/shares/archiv/sicherungen/vollsicherungen/ad
Es kann auch nicht schaden die Keytab des Systems, sowie die Samba-Konfiguration zu sichern. Zwingend für das Upgrade ist dies jedoch nicht.
Legen sie sich einfach Sicherungskopien von /etc/krb5.keytab und /etc/samba an.
===== Entfernen der Sernet-Pakete =====
Bevor Sie starten, sollten Sie sich im Klaren sein, dass es keinen Weg zurück gibt. Die "noch" auf Ihrem Server installierten Pakete sind nicht mehr erhältlich, einmal deinstalliert muss das Upgrade erfolgen!
Stoppen Sie zunächst den Samba-Dienst und den SSSD:
invis:~ # rcsernet-samba-ad stop
invis:~ # systemctl stop sssd stop
Öffnen Sie YaST und suchen Sie in der Software-Verwaltung nach Paketen die den Begriff "sernet" im Namen tragen und markieren Sie diese mit der Minus-Taste zum Löschen. YaST wird daraufhin eine Reihe von Samba-Paketen aus der openSUSE Distribution automatisch zur Installation auswählen. Dies können Sie zunächst akzeptieren.
Hier die Liste der zu entfernenden Pakete:
* sernet-samba
* sernet-samba-client
* sernet-samba-common
* sernet-samba-libs
* sernet-samba-libsmbclient0
* sernet-samba-ad
===== Installation der neuen Pakete =====
Die Installation der invis-Samba-Pakete erfordert den Anbieterwechsel einiger jetzt auf dem System präsenter Pakete. Um alles zu installieren und aufzulösen sind zwei Schritte notwendig.
Zunächst muss die Installation der Samba-AD Pakete erfolgen.
Hier die erforderlichen Pakete:
* samba
* samba-ad
* samba-client
* samba-winbind
* samba-doc
* samba-libs
Die Installation mit zypper sieht dann so aus:
inivs:~ # zypper -n install --force-resolution samba samba-ad samba-client samba-winbind samba-doc samba-libs
Diese Installation hinterlässt leider einen Mix aus Samba-Paketen, die teils aus der openSUSE Distribution stammen und teils aus unserem Repository. Um dies zu bereinigen muss ein Distribution-Upgrade aus unserem Samba-Repository heraus erfolgen:
invis:~ # zypper -n dup --from spins_invis_stable_samba --allow-vendor-change
Damit ist der Austausch der Pakete abgeschlossen. Es muss noch dafür gesorgt werden, dass der Samba-Dienst zukünftig beim Reboot des Servers automatisch gestartet wird:
invis:~ # systemctl enable samba.service
===== Reparatur der AD-Strukturen und Funktionstest =====
Innherhalb des Active Directory hat sich durch die Aktualisierung der Version strukturell einiges geändert. Diese Teile werden jetzt von Samba als fehlerhaft angesehen und müssen repariert werden:
invis:~ # samba-tool dbcheck --fix --yes
Sollte der obige Reparaturlauf Probleme offen lassen und ggf. auch die Logon-Scripts nicht mehr korrekt funktionieren, gehen Sie nach folgender Anleitung im Samba-Wiki vor:
**[[https://wiki.samba.org/index.php/Updating_Samba#Fixing_Incorrect_Sysvol_and_Directory_ACLs | Sysvol und AD ACLs zurücksetzen]]**
Starten Sie jetzt Samba und den SSSD neu:
invis:~ # systemctl start samba.service
invis:~ # systemctl start sssd.service
Prüfen Sie jetzt, ob Ihr System alle Benutzer und Gruppen korrekt anzeigt:
invis:~ # getent passwd
invis:~ # getent group
Ist dies nicht der Fall, kann es hilfreich sein den Cache des sssd zu löschen. Hierfür hat der invis-Server ein eigenes Script im Gepäck:
invis:~ # delssscache
Überprüfen Sie die Benutzer und Gruppen erneut wie oben gezeigt. Bleiben die Listen leer, kann das daran liegen, dass der SSSD seinen Cache noch nicht wieder aufgebaut hat. Versuchen sie testweise die Identität eines Benutzers anzunehmen:
invis:~ # su - benutzername
Gelingt dies nicht, wird es Zeit die Logfiles des Samba Dienstes zu kontrollieren. Sie finden sie unter: /var/log/samba
Sollte alles wie erwartet funktionieren, ist es jetzt Zeit einen ersten Client wieder zu starten und die Domänenanmeldung zu testen.
===== Upgrade von Samba 4.5.x auf 4.6.x =====
Parallel zu den Paketen der Samba Version 4.5. pflegen wir auch Pakete der Version 4.6.x. Ein Upgrade darauf ist denkbar einfach.
Ändern Sie in der Repository-Datei /etc/zypp/repos.d/spins_invis_stable_samba.repo des Samba-Repositories den Repository-Pfad wie folgt ab:
[spins_invis_stable_samba46]
name=Samba AD 4.6.x (openSUSE_Leap_42.3)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/spins:/invis:/stable:/samba46/openSUSE_Leap_42.3/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/spins:/invis:/stable:/samba46/openSUSE_Leap_42.3/repodata/repomd.xml.key
enabled=1
Dabei können Sie aus kosmetischen Gründen den Namen des Repos anpassen, erforderlich ist auf jeden Fall in den Zeilen "baseurl" und "gpgkey" das Wort "samba" durch "samba46" zu ersetzen.
Danach frischen Sie die Repository-Datenbank auf:
invis:~ # zypper ref
Aktualisiseren Sie jetzt die Samba-Pakete:
invis:~ # zypper up samba-ad
Starten Sie abschließend noch die davon abhängigen Dienste neu:
invis:~ # systemctl restart samba.service
invis:~ # systemctl restart named.service
invis:~ # systemctl restart sssd.service
Damit ist auch dieser Schritt erledigt.
Ein Upgrade auf die bereits erhältlichen Samba 4.7.x Pakete erfolgt mit dem Umstieg auf openSUSE Leap 15 und wird zum entsprechenden Zeitpunkt hier beschrieben.