Umgehung des NTFS Move / Copy-Konstruktionsfehlers

31

Wie jedem bekannt ist, der sich mit Dateiserverberechtigungen befasst hat, weist NTFS ein interessantes Konstruktionsmerkmal / einen interessanten Fehler auf, das als Verschieben / Kopieren-Problem bezeichnet wird.

Wie in diesem MS KB-Artikel erläutert , werden die Berechtigungen für einen Ordner oder eine Datei nicht automatisch vom übergeordneten Ordner übernommen, wenn der Ordner verschoben wird und sich Quelle und Ziel auf demselben NTFS-Volume befinden. Die Berechtigungen werden vererbt, wenn der Ordner kopiert wird oder wenn sich Quelle und Ziel auf unterschiedlichen Volumes befinden.

Hier ist ein kurzes Beispiel:

Sie haben zwei freigegebene Ordner auf demselben NTFS-Volume, die als "Techniker" und "Manager" bezeichnet werden. Die Gruppe "Techniker" hat RW-Zugriff auf den Ordner "Techniker" und die Gruppe "Manager" hat RW-Zugriff auf den Ordner "Manager". Wenn jemand auf beide zugreifen kann und einen Unterordner aus dem Ordner "Manager" in den Ordner "Techniker" verschiebt, ist der verschobene Ordner weiterhin nur für Benutzer in der Gruppe "Manager" zugänglich. Die Gruppe "Techniker" kann nicht auf den Unterordner zugreifen, obwohl er sich im Ordner "Techniker" befindet und Berechtigungen von oben erben sollte.

Wie Sie sich vorstellen können, führt dies zu Supportanrufen, Tickets und unnötigen Zyklen bei der Behebung dieser Endbenutzerprobleme, ganz zu schweigen von den zahlreichen Berechtigungen, die Sie erhalten, wenn Benutzer häufig Ordner zwischen verschiedenen gesicherten Ordnern / Bereichen auf dem Computer verschieben gleiche Lautstärke.

Die Fragen sind:

Was ist der beste Weg, um diesen NTFS-Designfehler zu umgehen, und wie gehen Sie damit in Ihrer Umgebung um?

Ich weiß, dass der verlinkte KB-Artikel über einige Registrierungsschlüssel spricht, um das Standardverhalten von Windows Explorer zu ändern, aber sie sind clientseitig und erfordern, dass die Benutzer die Möglichkeit haben, Berechtigungen zu ändern, die ich in den meisten Umgebungen für einen Nichtstarter halte, wenn Sie Sie möchten die Kontrolle über Ihre Dateiserverberechtigungen (und Ihre Vernunft als Systemadministrator) behalten.

David Archer
quelle
2
Ich weiß, das Beispiel Manager / Techniker soll nur den Fehler veranschaulichen, aber in einigen Fällen ist dies das gewünschte Verhalten: Wenn jemand versehentlich den Ordner von Manager zu Techniker verschiebt, möchten Sie wahrscheinlich nicht, dass die Techniker darauf zugreifen können es.
Ward - Reinstate Monica
2
Das ist wirklich kein Fehler, das ist die Art und Weise, wie Dateiberechtigungen funktionieren. Es wurde seit der Veröffentlichung von NTFS dokumentiert. Ich kann nicht glauben, dass einige Leute empfehlen, keine Dateiberechtigungen und nur Freigabeberechtigungen zu verwenden, um den Zugriff zu kontrollieren. Dies widerspricht den grundlegenden Sicherheitsanforderungen für einen Microsoft-Dateiserver. Der Grund, warum das Verschieben eines Ordners / einer Datei auf demselben Volume nicht übernommen wird, ist, dass der Ordner / die Datei nicht auf der Festplatte verschoben wird, sondern nur der Zeiger, den wir sehen.
Michael Brown

Antworten:

12

Mein Ansatz ist es, keine Dateiberechtigungen auf Datei- / Verzeichnisebene zu verwenden. Verwenden Sie Berechtigungen auf Dateifreigabeebene, und setzen Sie das gesamte Dateisystem-Datenlaufwerk des Servers auf "Jeder Vollzugriff" (was nicht mehr möglich ist).

Im Laufe der Jahre (10+) habe ich festgestellt, dass NTFS-Berechtigungen komplexer sind und zu mehr Fehlern führen. Wenn die Berechtigungen falsch eingestellt sind oder die Vererbung beschädigt wird, legen Sie Daten offen und es ist schwierig, sie zu finden und zu sehen. Außerdem sind Sie, wie Sie sagen, dem Problem des Verschiebens / Kopierens ausgesetzt.

Orte, an denen Sie ACLs auf Verzeichnis- / Dateiebene verwenden müssen; Ich kenne keine andere Lösung als die regelmäßige Überprüfung des Gesundheitszustands.

James Risto
quelle
10

Nun, es ist nicht wirklich ein Fehler. Diese Regel für den Umgang mit Berechtigungen beim Verschieben von Dateien gilt seit mindestens Beta 2 von NT3.1 (obwohl dies offensichtlich keine Vererbung ist, da dies nur mit Windows 2000 hinzugefügt wurde). Es ist so gut bekannt, wie jedes Feature von Windows es sein kann. Ich habe großes Mitgefühl für Ihre Ansicht, da es einige von uns geben kann, die dadurch nicht auf einmal verbrannt wurden. Aber das lernt der Sysadmin schnell.

JR

John Rennie
quelle
6
Ich hatte einen Streit mit Raymond Chen in seinem Blog darüber. Microsoft "verkauft" NTFS mit der Berechtigung "Vererbung" und tritt dann in den Hintergrund, wenn dieser spezielle Riss in der Rüstung auftritt. NTFS verfügt zum Zeitpunkt der Dateierstellung über eine Berechtigungsvererbung, indem explizite ACEs in die Dateien eingefügt werden, wenn diese erstellt werden. Ich würde das argumentieren, solange die Dokumentation und die Marketingliteratur über ihr Vererbungssystem sprechen, als ob es in Echtzeit entweder die Dokumentation oder der Code fehlerhaft ist. Sie sollten sich einen aussuchen und ihn reparieren.
Evan Anderson
1
Nun, es ist ein Kompromiss. Wenn die Vererbung in Echtzeit erfolgt, muss das Betriebssystem jedes Mal, wenn Sie eine Datei am Ende eines tiefen Baums öffnen, den Baum hochfahren, um die effektiven Berechtigungen zu ermitteln. Natürlich müssen Sie lange warten, wenn Sie die Berechtigungen an der Spitze eines tiefen Baums ändern! Verwendet Active Directory nicht dasselbe Modell?
John Rennie
AD-Objekte erben die Berechtigungen des neuen übergeordneten Elements beim Verschieben zwischen Containern ordnungsgemäß, und ich würde argumentieren, dass dies das erwartete "richtige" Verhalten beim Verschieben von Dateien / Ordnern in NTFS ist.
David Archer
3
@ Renniej: AD verwendet echte Echtzeit-Vererbung. Das Netware-Dateisystem hat es schon vor langer Zeit getan. NTFS hätte es auch tun können, wenn Microsoft es implementiert hätte. Es ist die "Straße nicht genommen". Was mich ärgert, ist, dass Microsoft-Dokumentation zu: NTFS und Explorer "spielt", als ob die Vererbung in Echtzeit erfolgt (dh lügt). Sagen Sie es uns, wie es ist, oder korrigieren Sie das Verhalten, um mit der Dokumentation übereinzustimmen!
Evan Anderson
@renniej Wie Evan Anderson sagte, tat Netware dies 1990, als sie König waren. Das Problem kann behoben werden, indem ein weiterer Dateisystemindex erstellt wird, der die 'Sichtbarkeitsliste' verfolgt. Microsoft hat sich entschieden, dies nicht zu tun, könnte sich aber möglicherweise für eine zukünftige Windows Server-Version entscheiden.
sysadmin1138
6

Wir verwenden NTFS seit NT 3.51 und obwohl wir dieses "Problem" gesehen haben (wie fast alle), hat es uns nicht viel Ärger bereitet:

  • Wir weisen die Benutzer immer an, Dateien zu kopieren, wenn sie von einem freigegebenen Verzeichnis in ein anderes verschoben werden müssen. "Halten Sie beim Ziehen die STRG-Taste gedrückt und vergewissern Sie sich, dass das kleine + angezeigt wird", ist eine gebräuchliche Phrase.
  • Unsere freigegebenen Ordner haben eine relativ einfache Struktur, und die von uns erstellten freigegebenen Ordner wechseln nicht allzu oft zwischen Gruppen, sodass Benutzer mit größerer Wahrscheinlichkeit Dateien kopieren möchten.
  • Wir sehen das Problem meistens in unseren "gemeinsamen" Ordnern, in denen jeder lesen / schreiben kann, aber diese Verzeichnisse sind meistens kurzlebig, so dass das Problem verschwindet, wenn sie gelöscht werden.
Ward - Wiedereinsetzung von Monica
quelle
4

Problemumgehungen, an die ich denken kann:

  • Finden Sie eine Möglichkeit, Ordner mit unterschiedlichen Berechtigungen auf unterschiedlichen NTFS-Volumes zu erstellen
  • Erstellen Sie eine geplante Aufgabe (einmal pro Stunde oder einmal pro Tag, abhängig von der Häufigkeit der Supportanfragen), die die Ordner durchläuft und alle Berechtigungen auf die gleichen wie auf der obersten Ebene zurücksetzt. Dies ist alles andere als ideal, insbesondere, wenn die Ordner viele Dateien enthalten, das Problem jedoch weiterhin besteht, wenn es keine gute Lösung gibt, z. B. eine serverseitige Korrektur der Registrierung. Der Befehl, den Sie sich ansehen möchten, heißt 'cacls' und kann dann zu einer Batch-Datei hinzugefügt werden.

Haftungsausschluss - Ich komme aus einem Unix-Hintergrund (und habe den letzten implementiert, um verschiedene Berechtigungsfehler zu beheben - es fühlt sich ickelig an, erledigt aber den Job), daher kann es eine viel bessere Lösung geben.

Kennzeichen
quelle
+1 - Die erste Antwort, die Mark gibt, ist die beste Wahl. Es ist ein Schmerz, aber es ist Ihr bester Weg, um diese dumme Designentscheidung in NTFS 5 zu umgehen.
Evan Anderson
Zum Erweitern: Dies ist ein Ort, an dem meine SharePoint-verwendenden Freunde "SharePoint verwenden" sagen würden! Ebenso würden meine Freunde für die Versionskontrolle und das Dokumentenkontrollsystem auf Subversion, Documentum usw. verweisen und "benutze das" sagen. Diese Design-Wahl in NTFS ist eine große, riesige Warze, und Sie wundern sich fast, ob Microsoft tatsächlich seine eigene Software verwendet, wenn Sie in Ihrem eigenen Netzwerk damit kämpfen müssen. (Es schreit für mich, dass Microsoft ihre Software nicht auf die gleiche Weise einsetzt, wie wir es mit unseren Benutzern tun. Muss nett sein, wenn ein Unternehmen mit "Wissensarbeitern" gefüllt ist.)
Evan Anderson,
1
Ich stimme zu, dass wir im Idealfall alle freigegebenen Ordner auf ihre eigenen Volumes aufteilen könnten. In der Praxis ist dies für eine große Umgebung (Tausende freigegebener Ordner) nicht praktikabel. Ohne einen funky Junction Point oder Symlink Voodoo bedeutet dies auch den Verlust der Fähigkeit, verschachtelte Unterordner mit unterschiedlichen Berechtigungen zu haben.
David Archer
1
@David: Das Verschieben der Daten über Freigaben führt zum Kopieren und Löschen. Das Verschieben von Daten innerhalb einer Freigabe führt zu einer Verschiebung. Wenn Sie jeden freigegebenen Ordner zum Stamm einer Berechtigungshierarchie machen, in der keine Unterordner mit eingeschränkteren Berechtigungen vorhanden sind, wird das Problem behoben. Immer noch hässlich. (Ich habe einen W2K3-Server mit mehr als 2200 freigegebenen Ordnern und sehe keine Leistungsprobleme ...)
Evan Anderson
3

Beim Umzug als Administrator verwende ich xcopy / s / e / c / h / r / k / y - alles außer Dateibesitz und Zugriffssteuerungsliste, was bedeutet, dass die Zugriffssteuerungslistenvererbung automatisch aktiviert wird bewegte Sachen aber.

Maximus Minimus
quelle
2
Sind Ihre Benutzer am Leben?
Evan Anderson
4
Manchmal frage ich mich ...
Maximus Minimus
@Even: Vielleicht ist keiner von ihnen in zwei Gruppen!
SamB
+1 für das Führen von Leuten zu dem Tool, das dieses Problem beim Verwalten von Dateien löst (zusammen mit vielen anderen); XCOPY wurde jedoch abgeschrieben: ROBOCOPY.EXE ist sein sehr fähiger Nachfolger.
Jnaab
2
Entschuldigung für das Nitpicken, aber kopiert _copy_ die Dateien nicht (anstatt _moving_ die Dateien?) - es sieht so aus, als hätte der Autor keine Probleme mit dem Kopieren, er hat nur Probleme mit _moving_. Aufgrund meiner mangelnden Erfahrung kann es sein, dass ich mich irre. Bitte korrigieren Sie mich, wenn ich mich irre (dh verwenden Sie den Befehl 'del', nachdem Sie 'xcopy' verwendet haben, damit die Dateien tatsächlich 'kopiert und gelöscht' werden! = umgezogen?)
colemik
3

Ich verwende Gruppenrichtlinien / Sicherheitsrichtlinien / Dateisystem, um komplizierte Berechtigungen im Auge zu behalten. (Verwenden Sie NIEMALS die "Berechtigungen ersetzen" in der Richtlinie).

Planen Sie eine CACLS, um alle Berechtigungen während der Nacht zurückzusetzen, gefolgt von einem gpupdate / force, um die Berechtigungen aus der Richtlinie erneut anzuwenden. Klappt wunderbar.

Alexandru Nica
quelle
Vermutlich ist das nur für Windows Server? Da Gruppenrichtlinien auf Domänenobjekte angewendet werden müssen, kann dies meiner Meinung nach nicht auf Nicht-Windows-Speicherfreigaben angewendet werden.
Rich M
2

Seit Windows 7 (oder möglicherweise Windows Vista) erben die Berechtigungen für einen Ordner oder eine Datei vom übergeordneten Ordner, wenn der Ordner verschoben wird und sich Quelle und Ziel auf demselben NTFS-Volume befinden - wenn eine Datei oder ein Ordner über den Explorer kopiert wird. In einem früheren Betriebssystem können Sie Far Manager verwenden. Hiermit können Sie die Vererbung von Berechtigungen vom Ziel aktivieren (zusammen mit vielen anderen Funktionen). Obwohl Far für einen allgemeinen Benutzer nicht freundlich erscheint.

GCRaistlin
quelle
0

Eine sehr einfache Problemumgehung besteht darin, die Dateien einfach zu komprimieren und im Zielverzeichnis zu dekomprimieren.

Bob
quelle
Ich habe es gerade ausprobiert und leider hat es nicht funktioniert. Die Berechtigungen für das Zip-Archiv sind unterschiedlich, bevor ich überhaupt etwas damit gemacht habe. Geerbte Berechtigungen bleiben erhalten, es werden jedoch keine expliziten Berechtigungen erstellt.
Rich M