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
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
Zusätzliches Setup
Damit Domainnamen und Gruppen unter Linux angezeigt werden, müssen Sie /etc/nsswitch.conf anstelle von Zahlen korrigierenZeichenfolgen 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 verweisenKonfigurieren 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
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_AttributesUnd 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änencontrollerEinrichten einer Freigabe mithilfe von Windows-ACLsBenutzer-Home-OrdnerToller 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: 631Ein Artikel eines unbekannten englischen Autors, der beschreibt, wie ein Upgrade auf Debian 9 durchgeführt wird