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

  • 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.
  • 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.

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.

  1. Klassisch (Systemeigenschaften-Dialog/Computername/Ändern)
    • Mitglied von Domäne: Domainnamen eingeben / OK
    • ROOT (Administrator) und Password eingeben
    • Rechner Neustarten
  2. NEU
    • Domainnamen eingeben
    • ROOT (Administrator) und Password eingeben
    • (!) Das anschliessende „Konto hinzufügen“ ÜBERSPRINGEN.
    • Rechner Neustarten

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.

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
  • 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.

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.

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.

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.

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.

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"
\\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
/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

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

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)


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.

  • Zuletzt geändert: 2020-07-12 18:50
  • von Admin