SAMBA classicupgrade Erfahrung auf Debian 8

Hintergrund


Es gibt ein kleines lokales Netzwerk des Unternehmens, in dem vor ungefähr 10 Jahren eine Domain auf 3rd Samba + LDAP + BIND (auf dem Gateway) auf Debian 5 erstellt wurde. Tatsächlich benötigte sie nur eine Benutzerauthentifizierung und Dateibälle. Im Laufe der Jahre hat der Server problemlos auf neue Versionen von Debian aktualisiert. Im Moment hat es Debian 8 und Samba 4.2 aus Paketen.

Seit Windows 7 funktionierte die Einführung von Computern in die Domäne ohne die bekannte Krücke beim Bearbeiten der Registrierung nicht mehr. Dieselbe Krücke funktionierte in Win 8 und Win 10 bis zur Version 1803. Zusätzlich zur Unfähigkeit, Computer in die Domäne einzugeben, häuften sich andere Probleme, und als Ergebnis wurde beschlossen, ein klassisches Upgrade durchzuführen. Aufgrund der Einfachheit der LAN-Struktur wurde beschlossen, das interne Samba-DNS zu verwenden.

Ich möchte gleich sagen, dass der Artikel keine exakte Anleitung ist, sondern die Erfahrung bei der Durchführung dieser Operation. Die Vorprüfungsphase wird dringend empfohlen. In meinem Fall wurden Server-Images zum Testen erstellt und auf virtuellen VirtualBox-Maschinen bereitgestellt. Um das Verhalten vorhandener Domänenclients zu testen, wurden Win XP SP3- und Win 10 1709- und 1803-Client-Computer erstellt.

Ich möchte auch darauf hinweisen, dass wiederholt Fehler durch alltägliche Tippfehler verursacht wurden. Seien Sie aufmerksam.

Umgebungsbeschreibung


Betriebssystem: Debian 8
Domain: samdom.local
Servername: pdc
Server-IP: 10.10.1.220

Übergangsprozess


Aktualisieren von Paketen auf die neuesten Versionen + Installieren der fehlenden.


In meinem Fall musste nach dem Update nur krb5-user ausgeliefert werden.

apt-get update apt-get upgrade apt-get install samba smbclient krb5-user winbind 

Bei der Installation von krb5-user stellt das System einige Fragen zum Servernamen und zum Domänennamen. Wir geben die Daten unseres Servers ein.

Samba halt an


 service samba-ad-dc stop service smbd stop service nmbd stop service winbind stop 

Übertragung alter Basen und Samba-Konfiguration


 mv /var/lib/samba /var/lib/samba.NT mv /etc/samba/smb.conf /etc/samba/smb.conf.NT 

Ich habe die alten Datenbanken nach /var/lib/samba.NT verschoben, sodass Sie das Verzeichnis / var / lib / samba neu erstellen müssen

 mkdir /var/lib/samba 

In der Dokumentation wird empfohlen, alle Datenbanken in einen separaten Ordner zu verschieben. In meinem Fall lag nur gencache_notrans.tdb separat, sodass ich es nur übertragen musste.

 cp -p /run/samba/gencache_notrans.tdb /var/lib/samba.NT 

Die Dokumentation besagt auch, dass nur sechs Datenbanken benötigt werden:

Geheimnisse.tdb
schannel_store.tdb
passdb.tdb
gencache_notrans.tdb
group_mapping.tdb
account_policy.tdb

Das Vorhandensein anderer Dateien im Ordner hat den Übergangsprozess jedoch nicht verhindert.

Starten des klassischen Upgrade-Prozesses


 samba-tool domain classicupgrade —dbdir=/var/lib/samba.NT --realm=samdom.local --dns-backend=SAMBA_INTERNAL /etc/samba/smb.conf.NT 

Ich stelle fest, dass in der Dokumentation die Verwendung der lokalen Domäne der obersten Ebene nicht empfohlen wird. In meinem Fall ist dies jedoch historisch geschehen.

In dem Blatt, das auf dem Bildschirm angezeigt wird, blinkt das Administratorkennwort, das Sie auf Wunsch notieren können.

Wenn Sie Probleme haben, müssen Sie vor neuen Versuchen eines klassischen Upgrades daran denken, die dabei erstellten Datenbankdateien und die smb.conf zu löschen.

 rm -f /etc/samba/smb.conf rm -rf /var/lib/samba/* 

Wenn alles gut gegangen ist, können Sie mit dem nächsten Schritt fortfahren.

Überprüfen und Bearbeiten von Serverkonfigurationen


In /etc/resolv.conf sollte sein (wenn es nicht automatisch für Sie erstellt wird)

 domain samdom.local nameserver 10.10.1.220 

In / etc / hosts

 127.0.0.1 localhost localhost.localdomain 10.10.1.220 pdc.samdom.local pdc 

Die Datei / etc / hostname muss einen abgekürzten Hostnamen haben

 pdc 

In / etc / network / interfases

 dns-nameservers 10.10.1.220 dns-search samdom.local 

DNS-Anfragen umleiten


Wenn Ihr Server DNS-Abfragen ins Internet umleitet (und INTERNAL_DNS Samba verwendet wird), müssen Sie im Abschnitt [global] in smb.conf eine Zeile von Ihrer ISP-IP hinzufügen:

 dns forwarder = ip 

In "Samba" 4.2 können Sie nur eine IP angeben. Im Folgenden - einige mit einem Leerzeichen.
Wenn der ausgehende Datenverkehr an Ihrem Gateway gesteuert wird, vergessen Sie nicht, den Durchgang von udp-Paketen vom Server zum Port 53 zu öffnen.

Konfigurieren Sie Kerberos


Wir bringen /etc/krb5.conf in eine ähnliche Form:

 [libdefaults] default_realm = SAMDOM.LOCAL dns_lookup_realm = false dns_lookup_kdc = true krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] SAMDOM.LOCAL = { kdc = pdc admin_server = pdc default_domain = SAMDOM.LOCAL } [domain_realm] .samdom.local = SAMDOM.LOCAL samdom.local = SAMDOM.LOCAL 

Zeitsynchronisation


Wenn sich das NTP-Paket nicht lohnt, setzen Sie:

 apt-get install ntp 

In meinem Fall gab es kein Verzeichnis / var / lib / samba / ntp_signd /. Manuell erstellt.

Als nächstes müssen Sie ihm Rechte geben:

 chown root:ntp /var/lib/samba/ntp_signd/ chmod 750 /var/lib/samba/ntp_signd/ 

Als Nächstes müssen Sie die Datei /etc/ntp.conf in eine ähnliche Form bringen:

 # Local clock (Note: This is not the localhost address!) server 127.127.1.0 fudge 127.127.1.0 stratum 10 # The source, where we are receiving the time from server 0.pool.ntp.org iburst prefer driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp ntpsigndsocket /var/lib/samba/ntp_signd/ # Access control # Default restriction: Only allow querying time (incl. ms-sntp) from this machine restrict default kod nomodify notrap nopeer mssntp # Allow everything from localhost restrict 127.0.0.1 # Allow that our time source can only provide time and do nothing else restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery 

Slapd entfernen und neu starten


 apt-get remove slapd reboot 

Testen


In der Dokumentation wird der Test über das Administratorkonto durchgeführt. Wir haben in der Vergangenheit entwickelt, dass administrative Aktionen von domain_admin stammen. Als nächstes werden Befehle und ihre korrekte Ausgabe angezeigt.

Samba testen:

 root@debian:/root# smbclient -L localhost -U% Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.17-Debian] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.1.17-Debian) Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.17-Debian] Server Comment --------- ------- Workgroup Master --------- ------- 

Wenn Sie hier eine Fehlermeldung erhalten:
Verbindung zu loclhost fehlgeschlagen (Fehler NT_STATUS_UNSUCCESSFUL)

Überprüfen Sie, ob Samba startet. In einem Test habe ich vergessen, slapd zu entfernen (auszuschalten) und habe auch diesen Fehler gesehen.

Noch ein Scheck:

 $ smbclient //localhost/netlogon -Udomain_admin -c 'ls' Enter Administrator's password: Domain=[SAMDOM] OS=[Unix] Server=[Samba xyz] . D 0 Tue Nov 1 08:40:00 2016 .. D 0 Tue Nov 1 08:40:00 2016 49386 blocks of size 524288. 42093 blocks available 

DNS testen

 root@debian:/root# nslookup samdom.local Server: 10.10.1.220 Address: 10.10.1.220#53 Name: samdom.local Address: 10.10.1.220 

 $ host -t SRV _ldap._tcp.samdom.local. _ldap._tcp.samdom.example.com has SRV record 0 100 389 pdc.samdom.example.com. 

 $ host -t SRV _kerberos._udp.samdom.local. _kerberos._udp.samdom.example.com has SRV record 0 100 88 pdc.samdom.example.com. 

 $ host -t A pdc.samdom.local. dc1.samdom.example.com has address 10.10.1.220 

Kerberos testen

 root@debian:/root# kinit domain_admin@SAMDOM.LOCAL Password for domain_admin@SAMDOM.LOCAL: Warning: Your password will expire in 41 days on  27  2015 14:34:46 

 root@debian:/root# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: domain_admin@SAMDOM.LOCAL Valid starting Expires Service principal 16.10.2015 15:07:12 17.10.2015 01:07:12 krbtgt/SAMDOM.LOCAL@SAMDOM.LOCAL renew until 17.10.2015 15:07:07 

Zusätzliches Setup


Damit Domainnamen und Gruppen unter Linux angezeigt werden, müssen Sie /etc/nsswitch.conf anstelle von Zahlen korrigieren

Zeichenfolgen sollten auf die folgende Form reduziert werden:
passwd: Dateien winbind
Gruppe: Dateien winbind

Bitte beachten Sie, dass winbind nur zu diesen Zeilen hinzugefügt wird. Einzelheiten finden Sie in der Dokumentation.
In meinem Fall habe ich auch die Erwähnung von ldap aus dieser Datei entfernt.

 reboot 

Wenn Sie, wie ich, vor dem klassischen Upgrade von DNS den Server auf einem anderen Computer gefunden haben und einen DHCP-Server verwenden, vergessen Sie nicht, die DHCP-Servereinstellungen zu ändern, die auf den DNS-Server verweisen

Konfigurieren Sie Netzwerkordner


Entwicklern wird nicht empfohlen, den AD-Domänencontroller als Dateiserver zu verwenden. In meinem Fall gab es jedoch keine anderen Server.

Die Einstellung ist in der Dokumentation zu "Samba" sehr gut beschrieben und Sie müssen dort suchen. Kurz gesagt:

Es ist notwendig, die ACL-Unterstützung von Samba zu überprüfen.

 smbd -b | grep HAVE_LIBACL HAVE_LIBACL 

Vergessen Sie nicht, dass der Abschnitt mit den Optionen user_xattr und acl bereitgestellt werden muss.

Nur Benutzer und Gruppen mit SeDiskOperatorPrivilege können die Rechte an den Bällen konfigurieren:

Um beispielsweise der Gruppe "Domänenadministratoren" solche Rechte zu gewähren, müssen Sie den folgenden Befehl ausführen:
 net rpc rights grant "Samdom\Domain Admins" SeDiskOperatorPrivilege -U "Samdom\domain_admin" 

Direkt zum Hinzufügen von Bällen benötigen Sie:

Erstellen Sie ein Verzeichnis und weisen Sie die erforderlichen Rechte zu:

 # mkdir -p /srv/samba/Demo/ # chown root:"Domain Admins" /srv/samba/Demo/ # chmod 0770 /srv/samba/Demo/ 

zur smb.conf hinzufügen

 [Demo] path = /srv/samba/Demo/ read only = no 

Laden Sie danach die Samba-Konfigurationen mit dem folgenden Befehl neu:

 smbcontrol all reload-config 

Nach wie vor können die Kugeln ausgeblendet werden, indem der Beschreibung Folgendes hinzugefügt wird:

 browseable = no 

Als Nächstes werden die Rechte aus den Fenstern des Computers über ein Konto bei SeDiskOperatorPrivilege verteilt . Gehen Sie dazu zu "Computerverwaltung".
Halten Sie sich an einen Remotecomputer (in unserem Fall einen pdc-Domänencontroller). Verteilen Sie Rechte über: "Freigegebene Ordner" -> "Freigegebene Ressourcen".

Wenn Sie zum Element "Freigegebene Ordner" wechseln, wird wahrscheinlich die Fehlermeldung "Die Prozedurnummer liegt außerhalb der zulässigen Grenzen (1745)" angezeigt. Ich ignoriere es, weil ich im Internet nichts Verständliches gefunden habe und es beim Testen und Betrieb keine Probleme verursacht.

Probleme können auftreten, wenn Sie die alten Netzwerkordner auf diese Weise freigeben. Vor dem klassischen Upgrade wurden die Rechte an Bällen über smb.conf, Linux-Benutzer, group, other und setfacl festgelegt. Nach der klassischen Aufwertung tauchten nach und nach Schulen mit dem Recht auf Änderung, Umbenennung usw. auf. Das rekursive Setfacl half nicht, da Pfosten mit Vererbung von Rechten auftauchten.

Es ist anzumerken, dass in der Dokumentation empfohlen wird, Rechte aus den Fenstern des Computers über Remotezugriff zu verteilen.

Aufgrund des nicht sehr großen Dateivolumens wurde daher beschlossen, Daten außerhalb der Arbeitszeit auf einen Windows-Computer zu übertragen, Netzwerkordner gemäß den Empfehlungen der Samba-Entwickler neu zu erstellen und Dateien erneut hochzuladen.

Benutzer-Home-Ordner auf dem Server


Die Verwaltung der Benutzerordner wurde ebenfalls geändert.
Es ist erwähnenswert, dass der Prozess aus der Konfiguration auch in der Dokumentation sehr gut beschrieben ist.
Ich werde nur die Hauptmerkmale für meinen Fall beschreiben.

Zuvor hatte jeder Benutzer seinen eigenen Ball. Jetzt wird nur der freigegebene Ordner freigegeben, und Benutzer haben nur Zugriff auf ihr Verzeichnis.

Die Einrichtung erfolgt mit den Microsoft Remote Server Administration Tools (RSAT) . RSAT hat eine unangenehme Funktion. Wenn Sie Win 10 auf eine neue Version aktualisieren, muss es neu installiert werden.

Heimbälle können manuell über Benutzereigenschaften im Snap-In Benutzer und Computer aufgenommen werden. Registerkarte Profil. U-Festplatte: \\ pdc \ user-shared \ username

Es ist jedoch bequemer, dies über eine Domänenrichtlinie zu tun, die in der obigen Dokumentation im Abschnitt „Verwenden einer Gruppenrichtlinieneinstellung“ sehr klar beschrieben wird.

Vergessen Sie nicht, dass der gemeinsame Ball versteckt werden kann, indem Sie ihn zu seiner Beschreibung hinzufügen:

 browseable = no 

Domain Level Up


Die Domain wurde ohne Probleme mit dem folgenden Befehl auf das Level 2008_R2 aktualisiert:

 samba-tool domain level raise --domain=2008_R2 --forest=2008_R2 

Sie können die Ebene mit dem folgenden Befehl anzeigen:

 samba-tool domain level show 

Wenn smbd.log mit CUPS-Fehlern bombardiert wird


In meinem Fall zeigte sich dieses Problem:

Es kann keine Verbindung zum lokalen Host des CUPS-Servers hergestellt werden: 631

Korrigiert durch diesen kurzen Artikel.

Nachfolgendes Upgrade auf Debian 9 Problem und Lösung


Bei

 apt-get dist-upgrade 

Es gab ein Problem, nämlich Samba und Winbind wollten nicht aktualisiert werden. Ging in einen Abhängigkeitskonflikt.

Die Methode aus dem Artikel half dem Link, auf den ich leider nicht gespeichert habe.
Hier ist ein direktes Zitat daraus:

Wenn sich Samba im AD-DC-Modus befindet, schlagen dies und die WinBind fehl.
Führen Sie diese Befehle aus und versuchen Sie dann erneut, das Upgrade auszuführen

systemctl stop smbd nmbd winbind
systemctl deaktiviere smbd nmbd winbind
systemctl entlarvt samba-ad-dc
systemctl starte samba-ad-dc
systemctl enable samba-ad-dc


Nach dem Aktualisieren der SAMBA-Version wird Folgendes empfohlen: "Samba AD DC-Datenbankprüfung".



# samba-tool dbcheck --cross-ncs

Seit Deb 9 SAMBA Version 4.5 habe ich eine Reihe von Fehlern "replPropertyMetaData" erhalten.
Der Fehlerbehebungsprozess wird in der Dokumentation beschrieben:

wiki.samba.org/index.php/Updating_Samba#Fixing_replPropertyMetaData_Attributes

Und es kommt auf die Ausführung des Befehls an:

samba-tool dbcheck --cross-ncs --fix --yes

Liste der verwendeten Quellen


SAMBA-Dokumentation:

Migrieren einer Samba NT4-Domäne zu Samba AD (klassisches Upgrade)
Einrichten von Samba als Active Directory-Domänencontroller
Einrichten einer Freigabe mithilfe von Windows-ACLs
Benutzer-Home-Ordner
Toller Artikel:
Debian 8 Domain Controller (... der bereits einen eingebauten Samba4 hat)
Samba-Fehler: Es kann keine Verbindung zum lokalen Host des CUPS-Servers hergestellt werden: 631
Ein Artikel eines unbekannten englischen Autors, der beschreibt, wie ein Upgrade auf Debian 9 durchgeführt wird

Source: https://habr.com/ru/post/de418499/


All Articles