Mit Windows 10 einer SAMBA-Domain beitreten
Windows 10 einer SAMBA-Domaine hinzufügen, ist gar nicht so einfach … Obwohl Microsoft seit einiger Zeit auch an SAMBA mitarbeitet, scheinen sie es mit der Kompatibilität nicht so genau zu nehmen. Damit ist für den reibungslosen Betrieb eine Reihe von Anpassungen am Windows sowie am SAMBA nötig.
Diese Anleitung datiert auf 2016-05-10 und den zu der Zeit aktuellen Versionen, z.B.: Samba.4.2.4
win10 installieren
- Am besten Windows komplett ohne alle Extras neu installieren.
- Nach der ersten Anmeldung die Frage: „Soll dieser Rechner im Netzwerk gefunden werden?“ mit NEIN beantworten.
- Unter START/EINSTELLUNGEN/UPDATE_UND_SICHERHEIT nach Updates suchen und alles aktualisieren, ggf. mehrmals nach einem Neustart wiederholen.
win10 patchen
- Warten bis alle vorhandenen Programme und Tasks vollständig gestartet sind
- Explorer öffnen und auf Netzwerk auswählen, dann oben in Adressleiste \\<SMB-SERVERNAME> eingeben und zu dem Platz navigieren wo das REG-File (Siehe unten) abgelegt ist. Diese dann auf den Desktop kopieren.
- Durch RECHTSKLICK/BEARBEITEN in die Datei schauen und sicherstellen das diese auch die richtige ist. (siehe unten)
- Durch DOPPELKLICK die REG ausführen um sie der Registry hinzuzufügen, anhängende Fragen ERLAUBEN.
- Wenn alles funktioniert hat, sollten die Dialoge mit „erfolgreich … eingetragen“ enden.
Der Domaine beitreten
Funktioniert auf unterschiedlichen Wegen. Einmal unter EINSTELLUNGEN/SYSTEM/INFO/DOMAINE_BEITRETEN sowie klassisch unter SYSTEMSTEUERUNG/SYSTEM/ERWEITERTE_SYSTEMEINSTALLUNGEN (Auswählen und Admin erlauben). Wir empfehlen die Klassische Methode.
- Klassisch (Systemeigenschaften-Dialog/Computername/Ändern)
- Mitglied von Domäne: Domainnamen eingeben / OK
- ROOT (Administrator) und Password eingeben
- Rechner Neustarten
- NEU
- Domainnamen eingeben
- ROOT (Administrator) und Password eingeben
- (!) Das anschliessende „Konto hinzufügen“ ÜBERSPRINGEN.
- Rechner Neustarten
Erste Domainen Anmeldung
Nach dem Neustart erscheint hinter dem Sperrbildschirm neben USER die Auswahl ANDERER_BENUTZER. Durch Auswahl kann dann der Benutzername und das Passwort eingegeben werden. An welcher Domaine die Anmeldung erfolgt ist darunter zu sehen. Die erste Anmeldung dauert etwas und ist u.U. mit einer überflüssigen Text-Show - welche sich nicht abbrechen lässt - überdeckt. Auch kann die Anmeldung länger dauern wenn es sich um ein vorhandenes Profil handelt, welches erst vom Server geladen werden muss.
Je nach Paranoia darf man dann die ständig wiederkehrende Cortana erneut abschalten.
Explorer öffnen und Netzwerk auswählen, dann oben unterhalb der Adressleiste auf NETZWERKERKENNUNG/DATEIFREIGABE klicken und NETZWE…GABE_AKTIVIEREN auswählen. Ggf. mit einem Administrationskonto bestätigen.
TIPP: Anstatt der Domain kann ein simpler Punkt die lokalen Konten adressieren, z.B.:
.\<lokaler_administrator_konto_name>
Die Auswahl DAS NETZWERK … ZU EINEM PRIVATEN MACHEN ist zu bevorzugen. Anschließend solle der eigene Rechner sowie der Server zu sehen sein.
Ein Neustart zum speichern aller Einstellungen und anschließendem Überprüfen schließt den ganzen Vorgang ab.
Unter EXPLORER/DIESER_PC sollten ebenfalls die vom Server Logon-Script gesetzten Netzlaufwerke erscheinen.
Aus der Domaine entfernen
Hierfür gibt es nur den klassischen Weg unter SYSTEMSTEUERUNG/SYSTEM/ERWEITERTE_SYSTEMEINSTALLUNGEN (Auswählen und Admin erlauben).
- Klassisch (Systemeigenschaften-Dialog/Computername/Ändern)
- Mitglied von Arbeitsgruppe: TEST eingeben / OK
- ROOT (Administrator) und Password eingeben
- Rechner Neustarten
Stolperstellen
Profilfehler / Fehler beim Handling des Roaming-Profils
- SYSTEMSTEUERUNG/SYSTEM/ERWEITERTE_SYSTEMEINSTALLUNGEN (Auswählen und Admin erlauben)
- Systemeigenschaften-Dialog/Erweitert/Benutzerprofile EINSTELLUNGEN
- im passenden Profil unter TYP/STATUS: Lokal vs. Roaming abwechselnd setzen und speichern (Kein Neustart) Also einmal LOKAL und speichern, und ROAMING und speichern. Und nach dem OK Herunterfahren und schauen od die Profildaten geschrieben werden. (Siehe unten (Logfile))
U.U. reicht das nicht dann kann man versuchen:
- User anmelden und wenn sein Profil vollständig geladen ist, das komplette Profil-Verzeichnis auf dem Server (.msprofile.V5) umbenennen in (.msprofile.V5.OLD). Ggf. vorhandene Mülleimer (trashcanuser/) ebenfalls umbenennen.
- Windows herunterfahren - das zwwingt Windows auf jeden Fall das Profil zu schreiben.
- Und neustarten / User anmelden
- Eventuell wird dabei erst mal nur ein neues leeres Profilverzeichnis angelegt, aber spätestens nach dem zweiten Neustart, und folgender Abmeldung, sollten die Profildaten geschrieben werden.
- Wenn alles wieder läuft können die alten Bakup Daten gelöscht werden.
Anmeldung des Gruppenrichtlienienservices (GPSVC) fehlgeschlagen
Wenn nach der Anmeldung diese Meldung erscheint, hat das unglaublich viele mögliche Ursachen. Einige Möglichkeiten zur Fehlerbehebung werden im folgenden beschrieben:
- GPSVC Registery Keys auf Standartwerte zurückschreiben. Das klappt leider nicht immer da offenbar auch dem Administator keine ausreichenden Rechte eingeräumt sind.
- Windows neu installieren 8-(
- Änderung des Domainnamens rückgängig machen sofern dieser geändert wurde. Man sieht es nicht aber eine Änderung des (/etc/samba/smb.conf_GLOBAL_workgroup=DOMAIN_NAMENS) führt zu einer neuen SID und diese passt dann nicht mehr zu den Domain-Gruppen etc.
- Domain Struktur neu aufbauen ⇒ samba beenden und in /var/lib/samba alles löschen. Anschließend alle Rechner lokal aus der Domain nehmen, Samba mit neuer Config starten und alle Rechner neu Einchecken.
- … Weitere? Bitte Melden.
Netzwerk nicht vollständig initialisiert
Es kann vorkommen das Windows den Start/Sperrbildschirm zeigt aber selber noch nicht vollständig geladen ist. Dies führt manchmal dazu das auch die Netzwerkverbindung noch nicht bereit ist, zu erkennen ist dies am Netzwerksymbol. Abhilfe schafft etwas warten, oder es handelt sich um einen richtigen Fehler der entsprechend behoben werden muss.
Kann nicht Anmelden
Bei Problemen mit der Anmeldung (Dubiose Fehlermeldungen) kann es helfen vor dem Bestätigen des Passwortes kurz das Netzwerkkabel abzuziehen und es danach gleich wieder aufzustecken. Dies umgeht die Domainanmeldesequenz und man kommt zumindest an das lokale Domain-Profil um weiter nach dem Fehler zu forschen.
Wenn das auch nicht funktioniert, kann man den Rechner auch mit einem Lokalen Konto anmelden um ggf. Einstellungen zu ändern.
Benötigte Dateien und Anpassungen
Zum herabladen der jeweiligen Datei einfach auf den Dateinamenlink klicken.
(!) Die Windowsdateien müssen auch im Windowsformat vorliegen, daher am besten mit Copy&Paste in einen dortigen Editor einfügen und abspeichern.
Für Windows 10 + 7:
Müssen zusätzlich einige weitere Parameter gesetzt/geändert werden, speziell die letzten ermöglichen erst den Zugriff auf das benötigte Netlogon und Sysvol.
- win10_add_samba_domain_set.reg
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] "DisableDHCPMediaSense"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] "EnableSecuritySignature"=dword:00000001 "RequireSecuritySignature"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters] "AllowInsecureGuestAuth"=dword:00000001 "DomainCompatibilityMode"=dword:00000001 "DNSNameResolutionRequired"=dword:00000000 "EnableSecuritySignature"=dword:00000001 "RequireSecuritySignature"=dword:00000000 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\NetworkProvider\HardenedPaths] "\\\\*\\netlogon"="RequireMutualAuthentication=0,RequireIntegrity=0,RequirePrivacy=0" "\\\\*\\sysvol"="RequireMutualAuthentication=0,RequireIntegrity=0,RequirePrivacy=0"
Logonscript Vorlage
- \\SERVER\netlogon\login.cmd
@echo off if %LOGONSERVER%0 == 0 set LOGONSERVER=\\<PDC_NAME|domain_server_name> if %USERDOMAIN%0 == 0 set USERDOMAIN=<DOMAIN_NAME> ::::::::::::::::::::::::::::::::::: title Login-Script ::::::::::::::::::::::::::::::::::: C: cd \ cls title System-Login-Script echo System-Login-Script echo ------------------- echo "%LOGONSERVER%\%USERNAME% \%USERDOMAIN%" :: set time from server, a MUST for Domains! net time "%LOGONSERVER%" /set /yes ::::::::::::::::::::::::::::::::::: title Laufwerke trennen echo Laufwerke trennen echo ------------------- net use * /Delete /Yes echo . ::::::::::::::::::::::::::::::::::: title Laufwerke verbinden echo Laufwerke verbinden echo ------------------- echo Verbinde Laufwerk "H:" ::net use H: "%LOGONSERVER%\USERS$\%USERNAME%" /PERSISTENT:NO net use H: "%LOGONSERVER%\%USERNAME%" /PERSISTENT:NO echo . ::::::::::::::::::::::::::::::::::: echo some other adds ... ::::::::::::::::::::::::::::::::::: ::pause timeout /T 5 :: END
Samba Konfigurations Vorlage
- /etc/samba/smb.conf
# smb.conf is the main Samba configuration file. # Date: 2016-05-13 [global] workgroup = DOMAIN_NAME # ja das NT1 wird gebraucht um das Profilproblem abzuschalten server max protocol = NT1 # optional only if need #encrypt passwords = true passdb backend = tdbsam printing = cups printcap name = cups printcap cache time = 750 cups options = raw map to guest = Bad User #include = /etc/samba/dhcp.conf # for older win like win98/NT logon path = \\%L\profiles\.msprofile logon home = \\%L\%U\.9xprofile # /for older win like win98/NT logon drive = h: logon script = login.cmd usershare allow guests = No add machine script = /usr/sbin/useradd -c Machine -d /var/lib/nobody -s /bin/false %m$ domain logons = Yes domain master = Yes local master = Yes os level = 255 preferred master = Yes admin users = root @ntadmin security = user # your server IP wins server = 192.168.x.y wins support = Yes # This server names MUST be UPPERCASE for compability netbios name = DER-SERVERNAME server string = DER-SERVERNAME (%h) time server = Yes # your server-interface IP/MASK interfaces = 192.168.x.y/255.255.255.0 bind interfaces only = yes # only log to file not to syslog too syslog = 0 # log level, increase only for testing. 1 = minimal ... 5 = fulllog log level = 1 #log level = 2 #log level = 4 #log level = 5 ## TRASHCAN ######## # vfs modul 'Papierkorb' einbinden vfs objects = recycle # Verzeichnis fuer PK #recycle: repository = __trashcan__ # Verzeichnis fuer PK (by groupshares set to user trash) recycle: repository = __trashcan__%u # Verzeichnisstruktur im PK mitsichern recycle: keeptree = Yes # PK Dateien last access time setzen (for cleanup) recycle: touch = Yes # PK Dateien versionieren recycle:versions = No #recycle:versions = Yes # 20080318# hmm, no dir del while off ??? # sofort zu loeschende Dateitypen recycle: exclude = *.tmp, *.temp, *.log # sofort zu loeschende Verzeichnisse ## recycle: exclude_dir = tmp # Ausnahmen fuer Versionierung ## recycle: noversions = *.doc, *.xls, *.mdb, *.pdf # PK Maxsize ??????????ß #recycle: maxsize = 0 ??????????? ## /TRASHCAN ######## [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes create mask = 0770 force create mode = 0770 force directory mode = 0770 #create mask = 0666 #force create mode = 0664 #force directory mode = 0775 #valid users = @users @ntadmin #write list = @users @ntadmin [profiles] comment = Network Profiles Service path = %H read only = No store dos attributes = Yes create mask = 0600 directory mask = 0700 valid users = @users @ntadmin browseable = No profile acls = Yes #[users] # comment = All users # path = /home # read only = No # inherit acls = Yes # veto files = /aquota.user/groups/shares/ #[groups] # comment = All groups # path = /home/groups # read only = No # inherit acls = Yes [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @ntadmin root force group = ntadmin create mask = 0664 directory mask = 0775 [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon write list = root @ntadmin valid users = @users @ntadmin browseable = No # bis hierher sind alle Einträge verpflichtend und müssen vorhanden sein. ################################### # ab hier die eigentlichen: ### NET DRIVES ########## #[prog$] # comment = Programme # path = /dir....programs # valid users = @users @ntadmin # write list = @ntadmin # read only = yes # browseable = yes #[swap] # comment = Algemeines Austauschverzeichnis # path = /dir....swap # valid users = @users @ntadmin # read only = no # create mask = 0666 # force create mode = 0666 # force directory mode = 0777 #[doc] # comment = Anleitungen # path = /dir....doc # valid users = @users @ntadmin [system] comment = Noch ein Beispiel als Rootfreigabe path = / valid users = @ntadmin write list = @ntadmin read only = no browseable = yes create mask = 0770 force create mode = 0770 force directory mode = 0770
Befehlsbeispiele
Sammlung nützlicher Befehle zur Fehlersuche und Einrichten.
Die folgenden Domaingruppen müssen existieren, anzulegen mit:
net groupmap add ntgroup="Domain Admins" unixgroup=ntadmin rid=512 type=d net groupmap add ntgroup="Domain Users" unixgroup=users rid=513 type=d net groupmap add ntgroup="Domain Guests" unixgroup=nobody rid=514 type=d
Achtung! Die Unixgruppen müssen natürlich auch existieren:
cat /etc/group
In der Unixgruppe ntadmin werden die Domain-Administratoren festgelegt z.B.:
# cat /etc/group ntadmin:x:1234:root,other_admins
Überprüfen mit:
net groupmap list
Sie sollten die folgende SID enthalten, ansonsten sind die Gruppen zu löschen und neu anzulegen, bzw. einmal das komplette /var/lib/samba Verzeichnis bereinigen.
net getlocalsid
Mit diesem Befehl kann man die User (und Maschinen-User) überprüfen:
pdbedit -Lv |less pdbedit -L -w pdbedit -L -g
Zum testen bei Problemen ist es sinnvoll den Log_Level in der smb.conf hoch zu setzten und das Logfile zu beobachten:
tail -100f /var/log/samba/log.smbd
20191011: WIN10.1903: Domainbeitritt schlägt hartnäckig fehl:
Die folgenden Einstellung haben nichts gebracht und sollten NICHT angewandt werden:
cmd.exe sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
Aber in der /etc/samba/smb.conf hat dies geholfen:
[global]
#- muss evtl. ab WIN10.1903 auskommentiert werden. (!) und testen, ob noch weiter benötigt.
# server max protocol = NT1
Wurde nach erfolgreichem Beitritt wieder aktiviert, um bestehenden Betrieb nicht zu stören. Test Obsolesenz steht noch aus.
(Mglw. Problem, kein bestehendes Maschinen-Konto/Fehlerhafte Erzeugung desselben ⇒ passwd vs. samba.user.DB)
20200709: WIN10.1904: Domainbeitritt schlägt hartnäckig fehl:
Bei der Domain-Anmeldung gibt es einen Fehler beim anlegen des Maschinenkontos im /etc/passwd (Siehe Log:
tail -10n /var/log/log.smb
). Obwohl das Kommando zum Anlegen eines Maschinenkontos korrekt ist, wirft es den Returncode: (130 [Hex:83]). In der Folge wird der Vorgang abgebrochen und der Domainbeitritt verweigert. Wenn man das Kommando hingegen als root auf der Server-Konsole ausführt, klappt anschließend auch die Domainanmeldung. (Ggf. nach freischalten Network und SMB1, sowie einspielen der Reg-Erweiterungen für ältere Samba Versionen.)
Das Maschinenkonto im /etc/passwd (ohne Anmeldungsoption) ist erforderlich um die nötigen Credentials im Linux-Filesystem abzubilden. Vermutlich liegt zur Zeit ein Fehler im Kommando adduser vor, welches zu den falschen Rückgabewert führt, oder der Wert wird falsch vom Samba interpretiert.
Der Fehler scheint daher Versionsabhängig und sollte in zukünftigen Versionen behoben sein.