Schlagwort: Dateifreigabe

Windows XP Clients können keine Netzwerkfreigaben auf einem Windows Server 2008 erreichen – Vista-Clients schon

Ein recht interessantes Phänomen: seit gestern können in einem Netzwerk die Windows XP-Clients die Netzwerkfreigaben auf einem Windows Server 2008 (Domänencontroller) nicht mehr aufrufen, die Vista-Clients sind aber in dazu in der Lage.

Die XP-Rechner sind in der Lage, den FQDN sauber aufzulösen, Ping funktioniert ebenfalls tadellos. Die Windows-Firewall ist ausgeschaltet und die Symantec-Endpoint Protection MR4 läuft (sowohl auf den XP- als auch auf den Vista-Maschinen). Zu Testzwecken habe ich diese auf einem der XP-Rechner ebenfalls deaktiviert.

Ich habe die Vorschläge von einem englischen Blog, der am 07.11.2004 gestartet wurde und der Kommentare bis 24.06.2009 enthält, der Reihe nach ausprobiert, doch führte das nicht zum Erfolg. Hier sind die Vorschläge des Posts:

Vorschlag

Ergebnis

sfc /scannow Konnte ich (noch) nicht durchführen, da mir die SP3 XP-CD fehlt
ping server funktioniert
„Datei- und Druckerfreigabe für Microsoft-Netzwerke“ in der Netzwerkkarte beim Client aktivieren war aktiviert
„Datei- und Druckerfreigabe für Microsoft-Netzwerke“ in der Netzwerkkarte deinstallieren und wieder installieren hat keinen Erfolg gebracht
In den „erweiterten Eigenschaften“ der Netzwerkkarte in der „Windows-Firewall“ die Ausnahme „Datei- und Druckerfreigabe“ aktivieren war zwar nicht aktiviert, aber Windows-Firewall ist ausgeschaltet
Sicherstellen, dass der „Client für Microsoft-Netzwerke“ in der Netzwerkkarte beim Client vorhanden und aktiviert ist vorhanden und aktiviert
In der Netzwerkkarte „Client für Microsoft-Netzwerke“ deinstallieren, Computer neu starten und wieder installieren hat keinen Erfolg gebracht
Netzwerkkarte auf Dienst „Teefer2“ von Symantec überprüfen und wenn vorhanden, dann deaktivieren nicht vorhanden
In der Netzwerkkarte in den „TCP/IP“-Eigenschaften auf dem Reiter „WINS“ überprüfen, dass der Punkt „NetBIOS über TCP/IP deaktivieren“ nicht markiert ist war er nicht, es war der Standard-Punkt aktiviert
In der Netzwerkkarte in den „TCP/IP“-Eingenschaften auf dem Reiter „DNS“ folgende Dinge überprüfen/durchführen:

  • „DNS-Serveradressen in Verwendungsreihenfolge“ leeren
  • „Primäre und verbindungsspezifische DNS-Suffixe anhängen“ markieren
  • „Übergeordnete Suffixe des primären DNS-Suffixes anhängen“ markieren
  • „Diese DNS-Suffixe anhängen (in Reihenfolge)“ leeren
  • „DNS-Suffix für diese Verbindung“ leeren
  • „Adressen dieser Verbindung in DNS registrieren“ markieren
  • „DNS-Suffix dieser Verbindung in DNS-Registrierung verwenden“ demarkieren

Danach den Computer neu starten

war bereits alles so eingestellt, wie erforderlich
WLAN-Karte deaktivieren, um die Verbindung über Ethernet herzustellen keine WLAN-Karte vorhanden
Microsoft Firewall ausschalten war ausgeschaltet
Firewall-Ausnahmen für 4 Ports: TCP 139,445, und UDP 137,138 Firewall war ausgeschaltet
„Netzwerkbedrohungsschutz“ der Symantec Endpoint Protection ausschalten Ausschalten brachte keinen Erfolg, außerdem funktioniert diese Einstellung auf den Vista-Rechnern (64 und 32 Bit)
„TCP/IP-NetBIOS-Hilfsprogramm“-Dienst starten und auf „Automatisch“ setzen war gestartet und stand schon auf „Automatisch“
„Arbeitsstationsdienst“-Dienst starten und auf „Automatisch“ setzen war gestartet und stand schon auf „Automatisch“
„Server“-Dienst starten und auf „Automatisch“ setzen war gestartet und stand schon auf „Automatisch“
„Computerbrowser“-Dienst starten und auf „Automatisch“ setzen war gestartet und stand schon auf „Automatisch“
„Remoteprozeduraufruf (RPC)“-Dienst starten und auf „Automatisch“ setzen war gestartet und stand schon auf „Automatisch“
„RPC-Locator“-Dienst starten und auf „Automatisch“ setzen starten des Dienstes hat keinen Erfolg gebracht, also habe ich ihn auch auf „Manuell“ gelassen
„Arbeitsstationsdienst“ beenden und neu starten Konnte nicht beendet werden, blieb in den Diensten mit dem Status „Wird beendet“ hängen; ich habe dann den Rechner neu gestartet.
„NT-LM-Sicherheitsdienst“-Dienst aktivieren und auf „Automatisch“ setzen starten des Dienstes hat keinen Erfolg gebracht, also habe ich ihn auch auf „Manuell“ gelassen
„Webclient“-Dienst starten und auf „Automatisch“ setzen war gestartet und stand schon auf „Automatisch“
Winsock XP Fix 1.2 hat keinen Erfolg gebracht
„Systemeigenschaften“->“Erweitert“->“Systemleistung“->“Datenausführungsverhinderung“ den Punkt „Datenausführungsverhinderung nur für erforderliche Windows-Programme und -Dienste aktivieren“ aktivieren war so eingestellt
In der lokalen Sicherheitsrichtlinie die „Netzwerksicherheit: LAN Manager-Authentifizierungsebene auf „LM- & NTLM-Antworten senden“ setzen war gesetzt
Aus der Domäne nehmen und nochmals einhängen Alle XP-Rechner? Unwahrscheinlich.
Den Computer in die host-Datei eintragen noch nicht versucht
Auf dem Domänencontroller den DNS-Eintrag des Clients entfernen und warten, bis er sich neu erstellt hat hat keinen Erfolg gebracht

Die Vorschläge dieses Posts kommen von hier. Den Post habe ich gefunden über folgenden Forumseintrag: http://forums.techguy.org/windows-server-2003-2008/842532-windows-xp-server-2008-network.html. Dieser ist vom 12.07.2009, also noch recht neu.

Hat noch jemand dieses Problem? Oder vielleicht sogar eine Lösung? Ich werde die noch nicht ausprobierten Lösungsvorschläge ausprobieren und die Ergebnisse posten. Vielleicht hat jemand ein ähnliches Problem und kann es mit einem der oben stehenden Vorschlägen lösen.

Hat dieses Problem schon jemand gehabt?

Update (15.07.2009):
Ich habe festgestellt, dass die XP-Maschine sich mit einem anderen Server 2008 verbinden kann, der nicht Teil der Domäne ist. Hier kann ich ganz normal auf die Shares zugreifen. Also muss die Blockade auf dem 2008er Server liegen.

Weiteres Update (15.07.2009 21:11):
Problem gelöst! Da der Fehler beim Server 2008 liegen musste, habe ich diese Maschine neu gestartet. Als ich mich wieder angemeldet habe, kam eine Sprechblase hoch, dass Updates installiert und der Computer neu gestartet wurde. Scheinbar hatte er ein Update nicht richtig/fertig installiert und brauchte nochmals einen Neustart – den er mir übrigens nicht angezeigt hatte (in der Regel meckert der Computer ja, wenn er neu gestartet werden muss). Nach dem Neustart lief mit dem Zugriff auf die Netzwerkfreigaben wieder alles glatt.

Scripting von Dateifreigaben

Das Skripten von Dateifreigaben hat mehrere Vorteile:

  1. Dokumentation
  2. Automatisation

1. Dokumentation

Ein Netzwerk sollte und muss (je nach Unternehmensgröße, jedoch ab 10 Mitarbeitern Pficht) sorgfältig dokumentiert werden. Durch die Dokumentation ist man in der Lage, auch noch 3 Monate nachdem man eine Konfiguration durchgeführt hat, zu verstehen, was man dort getan hat. Werden jetzt verschiedene Tasks auch noch geskriptet, dann kann dieses Skript für sich schon als Dokumentation dienen und mehr Aufschluss geben als so manche nachher erstellten Dokumente.

2. Automatisation

1 Netzwerkfreigabe anzulegen, deren Berechtigungen auf Netzwerk- und auf Dateiebene einzustellen ist kein Problem. Doch was ist, wenn es 10, 20, 50 oder 100 Netzwerkfreigaben sind? Und was ist, wenn diese nach ca. 1 Monat oder 1 Jahr wieder geändert werden sollen? Z.B. von einem Laufwerk auf ein anderes, oder von einem Server auf den anderen? Dann stößt die GUI sehr schnell an die Grenzen der Praktikabilität. Ein Skript kann hier schnell angepasst werden und den Änderungsaufwand drastisch reduzieren.

Die Befehle

Für das Skripting braucht man eigentlich nur 2 Befehle:

  • net share
  • cacls (für Windows XP/Server 2003)
  • icacls (für Windows Server 2003 SP2/Vista/Server 2008)

Zunächst müssen die möglicherweise bestehenden Netzwerkfreigaben (Shares oder Shared Folders) gelöscht werden:

  • net share freigabename /delete

Danach werden die Freigaben inkl. der Berechtigungen auf Netzwerkebene neu angelegt:

  • net share freigabename=Laufwerk:Pfad /grant:“benutzername„,accesslevel /unlimited

Die kursiv-gedruckten Wörter müssen durch Ihre Werte ersetzt werden. accesslevel kann die folgenden Ausprägungen haben:

  • FULL (Vollzugriff)
  • READ (Lesen)
  • CHANGE (Ändern)

Sollten mehrere Berechtigungen gesetzt werden, wird der /grant Parameter einfach so oft wiederholt, wie Berechtigungen vergeben werden müssen:

  • net share freigabename=Laufwerk:Pfad /grant:“benutzername„,accesslevel /grant:“gruppenname„,accesslevel /grant:“benutzername2„,accesslevel /unlimited

Die Berechtigungen können nachträglich nicht mehr verändert werden. Die Freigabe muss hiefür gelöscht und wieder neu erstellt werden.

Der nächste Schritt besteht darin, die Berechtigungen auf Datei-Ebene zu setzen. Für jeden Benutzer oder jede Gruppe wird, anders als bei net share mit dem /grant-Parameter, jeweils ein cacls-Befehl benötigt. Hier die Syntax:

  • cacls dateiname /t /e /g benutzer:berechtigung
  • icacls dateiname /grant benutzer:[(Vererbung1)][(Vererbung2)](Berechtigung1,Berechtigung2,…)

Auch hier müssen Sie die kursiv-gedruckten Wörter durch Ihre Daten ersetzen. Werte in eckigen Klammern sind optional. Bei icacls müssen die Vererbungs- und Berechtigungswerte in Klammern geschrieben werden.

berechtigung kann die folgenden Werte haben:

  • n (keine)
  • r (lesen)
  • c (ändern)
  • f (Vollzugriff)

Vererbung kann die folgenden Werte haben (icacls):

  • oi (an Objekte/Dateien)
  • ci (an Container/Verzeichnisse)
  • io (nur vererben, nur auf das Verzeichnis selbst anwenden)
  • np (nicht vererben, nur auf das Verzeichnis selbst anwenden)

berechtigung kann die folgenden Werte haben (icacls):

  • f (Vollzugriff)
  • m (Ändern)
  • rx (Lesen und Ausführen)
  • r (Lesen)
  • w (Schreiben)
  • die Berechtigungen können noch feiner gesteuert werden, doch würde diese Betrachtung hier den Rahmen sprengen. Microsoft hat hier eine ausführlichere Betrachtung.

Die Befehle werden dann der Reihenfolge nach in eine Batch-Datei geschrieben, die dann ausgeführt werden kann.

Hier noch 2 Anmerkungen:

  1. Sollen in den Werten, die in die Befehle eingearbeitet werden, Leerzeichen verwendet werden, so muss der Wert in Anführungszeichen stehen, da die Konsole das nächste Wort nach dem Leerzeichen als neuen Parameter oder Befehl interpretieren möchte.
  2. Sollen deutsche Umlaute oder Sonderzeichen verwendet werden, so muss das Skript mit „chcp 1252 > NUL“ beginnen und mit „chcp 850 > NUL“ enden, da die zu benutzende Codepage für die Ausführung des Skriptes geändert werden muss. Natürlich sollte sie danach wieder auf den Standardwert zurückgesetzt werden. Die Befehle sind natürlich ohne die Anführungszeichen in die Batch-Datei einzutragen.