Frage Wie umgehen Sie den NTFS Move / Copy-Designfehler?


Wie jeder weiß, der sich mit Dateiserverberechtigungen beschäftigt hat, hat NTFS ein interessantes Designmerkmal / Fehler, das als Move / Copy-Problem bekannt ist.

Wie erklärt in diesem MS KB Artikel, werden die Berechtigungen für einen Ordner oder eine Datei nicht automatisch vom übergeordneten Element ü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 sich die Quelle und das Ziel auf unterschiedlichen Volumes befinden.

Hier ist ein kurzes Beispiel:

Sie haben zwei freigegebene Ordner auf demselben NTFS-Volume namens "Techniker" und "Manager". Die Technikergruppe verfügt über einen RW-Zugriff auf den Ordner "Technicians" und die Gruppe "Managers" hat RW-Zugriff auf den Ordner "Managers". Wenn jemand Zugriff auf beide hat und einen Unterordner aus dem Ordner "Manager" in den Ordner "Techniker" verschiebt, ist der verschobene Ordner immer noch nur für Benutzer in der Gruppe "Manager" zugänglich. Die Gruppe "Techniker" kann nicht auf den Unterordner zugreifen, obwohl sie sich im Ordner "Techniker" befindet und Berechtigungen von oben erben sollte.

Wie Sie sich vorstellen können, führt dies zu Supportaufrufen, Tickets und verschwendeten Zyklen bei der Lösung dieser Endbenutzerprobleme, ganz zu schweigen von der Rattenliste von Berechtigungen, die Sie erhalten können, wenn Benutzer häufig Ordner zwischen verschiedenen gesicherten Ordnern / Bereichen verschieben gleiches Volumen.

Die Fragen sind:

Was ist der beste Weg, um diesen NTFS-Konstruktionsfehler zu umgehen und wie behandeln Sie ihn in Ihrer Umgebung?

Ich weiß, dass der verlinkte KB-Artikel über einige Registrierungsschlüssel redet, um das Standardverhalten von Windows Explorer zu ändern, aber sie sind clientseitig und erfordern, dass die Benutzer Berechtigungen ändern können, von denen ich denke, dass sie in den meisten Umgebungen kein Ansporn sind möchte die Kontrolle über Ihre Dateiserver-Berechtigungen (und Ihre Gesundheit als Systemadministrator) behalten.


31
2018-06-25 16:52


Ursprung


Ich weiß, dass das Beispiel von Managern / Technikern nur den Fehler darstellt, aber in manchen Fällen ist es das Verhalten, das man haben möchte: wenn jemand zufällig verschiebt den Ordner von Managern zu Technikern, Sie möchten wahrscheinlich nicht, dass die Techniker darauf zugreifen können. - Ward♦
Das ist wirklich kein Fehler, so funktionieren Dateiberechtigungen. Es wurde seit der Veröffentlichung von NTFS dokumentiert. Ich kann nicht glauben, dass einige Leute empfehlen, keine Dateiberechtigungen zu verwenden und nur Freigabeberechtigungen zu verwenden, um den Zugriff zu kontrollieren. Dies widerspricht den Grundlagen der Sicherheit für einen Microsoft File Server. Der Grund dafür, dass das Verschieben eines Ordners / einer Datei auf demselben Volume nicht erbt, ist, dass der Ordner / die Datei nicht tatsächlich auf der Festplatte verschoben wird, sondern nur der Zeiger, den wir sehen. - Michael Brown


Antworten:


Mein Ansatz besteht darin, keine Datei- / Verzeichnisebene-Dateiberechtigungen zu verwenden; Verwenden Sie Berechtigungen auf Dateifreigabeebene, und legen Sie das Datenlaufwerk des gesamten Server-Dateisystems auf "Jeder Vollzugriff" fest (was nicht 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 festgelegt sind oder die Vererbung beschädigt wird, legen Sie Daten offen und es ist schwer, sie zu finden und zu sehen. Außerdem sind Sie dem Verschieben / Kopieren-Problem ausgesetzt, wie Sie sagen.

Orte, an denen Sie ACLs auf Verzeichnis- / Dateiebene verwenden müssen; Ich kenne keine andere Lösung als die Gesundheit, die das Ding regelmäßig überprüft.


13
2017-07-06 12:58





Nun, es ist nicht wirklich ein Fehler. Diese Regel zum Verarbeiten von Berechtigungen beim Verschieben von Dateien ist seit mindestens Beta 2 von NT3.1 vorhanden (obwohl offensichtlich keine Vererbung, da diese nur mit Windows 2000 hinzugefügt wurde). Es ist ungefähr so ​​bekannt wie jede Funktion von Windows sein kann. Ich habe viel Sympathie für Ihre Ansicht, da es wenige von uns geben kann, die nicht auf einmal verbrannt sind. Aber es ist etwas, das der Systemadministrator schnell lernt.

JR


10
2018-06-25 17:11



Ich hatte einen Streit mit Raymond Chen in seinem Blog darüber. Microsoft "verkauft" NTFS mit der Berechtigung "Vererbung", dann rückt er zurück, wenn dieser bestimmte Spalt in der Rüstung ausgelöst wird. NTFS verfügt zum Zeitpunkt der Dateierstellung über eine Vererbung der Berechtigungen, indem bei der Erstellung explizite ACEs in die Dateien eingefügt werden. Ich würde argumentieren, dass, solange die Dokumentation und Marketing-Literatur über ihr Vererbungssystem spricht, als wäre es in Echtzeit, entweder die Dokumentation oder der Code fehlerhaft ist. Sie sollten eins auswählen und es reparieren. - Evan Anderson
Nun, es ist ein Kompromiss. Wenn die Vererbung in Echtzeit stattfände, müsste das Betriebssystem bei jedem Öffnen einer Datei am Ende eines tiefen Baums die Baumstruktur aufrufen, um herauszufinden, welche effektiven Berechtigungen vorhanden sind. Natürlich ist der Kompromiss, wenn Sie die Berechtigungen an der Spitze eines tiefen Baumes ändern, müssen Sie lange warten! Verwendet Active Directory nicht dasselbe Modell? - John Rennie
AD-Objekte erben die Berechtigungen des neuen Parents korrekt, wenn sie zwischen Containern verschoben werden, und ich würde argumentieren, dass dies das erwartete "richtige" Verhalten beim Verschieben von Dateien / Ordnern in NTFS ist. - David Archer
@renniej: AD verwendet echte Echtzeitvererbung. Das Netware-Dateisystem hat es vor langer Zeit getan. NTFS könnte es auch getan haben, wenn Microsoft es implementiert hätte. Es ist die "Straße nicht genommen". Was mich irritiert ist, dass Microsoft Dokumentation re: NTFS und Explorer "spielt" wie die Vererbung in Echtzeit ist (d. H. Lügen). Sagen Sie es uns wie es ist, oder beheben Sie das Verhalten, um mit der Dokumentation zu halsen! - Evan Anderson
@renniej Wie Evan Anderson sagte, hat Netware das 1990 gemacht, als sie König waren. Das Problem kann behoben werden, indem ein anderer Dateisystemindex erstellt wird, der die Sichtbarkeitsliste verfolgt. Microsoft entschied sich, dies nicht zu tun, könnte sich aber möglicherweise für eine zukünftige Windows Server-Version entscheiden. - sysadmin1138♦


Wir benutzen NTFS seit NT 3.51 und obwohl wir dieses "Problem" (wie fast jeder) gesehen haben, hat es uns nicht viel Probleme bereitet:

  • Wir sagen den Leuten immer, dass sie Dateien kopieren müssen, wenn sie sie von einem freigegebenen Verzeichnis zu einem anderen verschieben müssen. "Halten Sie die STRG-Taste beim Ziehen gedrückt und stellen Sie sicher, dass das kleine + angezeigt wird", ist eine gängige Formulierung.
  • Unsere freigegebenen Ordner haben eine recht einfache Struktur, und die von uns erstellten freigegebenen Ordner wechseln nicht zu oft zwischen den Gruppen, sodass die Leute eher Dateien kopieren möchten.
  • Wir sehen das Problem hauptsächlich in unserem "gemeinsamen" Raum - Ordner, in denen jeder lesen / schreiben kann, aber diese Verzeichnisse sind meistens kurzlebig, so dass das Problem verschwindet, wenn sie gelöscht werden.

6
2018-06-25 18:21





Workarounds, die ich mir vorstellen kann:

  • finden Sie eine Möglichkeit, die Ordner mit unterschiedlichen Berechtigungen auf verschiedenen 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 durch die Ordner ausgeführt wird, und setzen Sie alle Berechtigungen auf die gleichen wie auf der obersten Ebene zurück. Dies ist weniger als ideal, vor allem, wenn die Ordner viele Dateien enthalten, das Problem jedoch behoben wird, wenn es keine gute Lösung wie eine serverseitige Registrierungskorrektur gibt. Der Befehl, den Sie betrachten möchten, heißt "cacls", den Sie dann zu einer Batch-Datei hinzufügen können.

Disclaimer - Ich komme von einem Unix-Hintergrund (und habe den letzten implementiert, um verschiedene Berechtigungsfehler zu beheben - es fühlt sich eklig an, aber macht den Job), also kann es eine viel bessere Lösung geben.


4
2018-06-25 17:12



+1 - Die erste Antwort, die Mark gibt, ist die beste Wahl. Es ist ein Schmerz, aber es ist der beste Weg, um diese dumme Design-Entscheidung in NTFS 5 zu umgehen. - Evan Anderson
Erweitern: Dies ist ein Ort, an dem SharePoint-nutzende Buddies "SharePoint verwenden" verwenden würden! Ebenso würden meine Versionsverwaltungskontakte und Dokumentenverwaltungssystembenutzungskontakte auf Subversion, Documentum usw. verweisen und sagen "benutze das". Diese Designauswahl in NTFS ist eine große, riesige Warze, und es lässt Sie fast fragen, ob Microsoft tatsächlich ihre eigene Software verwendet, wenn Sie in Ihrem eigenen Netzwerk damit kämpfen müssen. (Es schreit zu mir, dass Microsoft ihre Software nicht in der gleichen Weise benutzt, wie wir es mit unseren Benutzern tun. Eigentlich muss es nett sein, eine Firma mit "Wissensarbeitern" zu haben.) - Evan Anderson
Ich würde zustimmen, dass wir im Idealfall alle freigegebenen Ordner auf ihre eigenen Volumes trennen könnten, in der Praxis ist dies für eine große Umgebung (Tausende von freigegebenen Ordnern) nicht durchführbar. Ohne einen funky junction point oder symlink voodoo bedeutet dies auch, die Möglichkeit zu verlieren, geschachtelte Unterordner mit unterschiedlichen Berechtigungen für sie zu haben. - David Archer
@David: Wenn Sie die Daten über die Freigaben verschieben, werden sie kopiert und gelöscht. Das Verschieben von Daten innerhalb einer Freigabe führt zu einer Verschiebung. Wenn Sie jeden freigegebenen Ordner zum Stamm einer Berechtigungshierarchie machen, ohne dass Unterordner einschränkendere Berechtigungen haben, mindern Sie das Problem. Immer noch hässlich. (Ich habe einen W2K3-Server mit 2200 + einzelnen freigegebenen Ordnern darauf, und ich sehe keine Leistungsprobleme ...) - Evan Anderson


Wenn ich mich als Administrator bewege, benutze ich xcopy / s / e / c / h / r / k / y - alles außer Dateieigentum und ACL, was bedeutet, dass die ACL-Vererbung automatisch einsetzt. Nie wirklich mit einer Situation konfrontiert, in der ein Benutzer bewegte Sachen obwohl.


3
2018-06-25 23:43



Sind Ihre Benutzer am Leben? - Evan Anderson
Manchmal frage ich mich... - Maximus Minimus
@Even: Vielleicht ist keiner von ihnen in zwei Gruppen! - SamB
+1 für führende Personen zu dem Tool, das dieses Problem bei der Verwaltung von Dateien löst (zusammen mit vielen anderen); XCOPY wurde jedoch abgeschrieben: ROBOCOPY.EXE ist sein sehr fähiger Nachfolger. - jnaab
Sorry für die Nitpicking, aber nicht xcopy _copy_ die Dateien (anstatt _moving_ die Dateien?) - Es sieht aus wie der Autor hat keine Probleme mit dem Kopieren, er hat nur Probleme mit _moving_. Ich kann mich irren, weil ich keine Erfahrung habe. Bitte korrigieren Sie mich, wenn ich falsch liege (dh benutzen Sie den 'del' Befehl nach der Verwendung von 'xcopy', so werden die Dateien tatsächlich 'kopiert und gelöscht'! = bewegt?) - colemik


Ich verwende Gruppenrichtlinie / Sicherheitsrichtlinien / Dateisystem, um komplizierte Berechtigungen zu verfolgen. (Verwenden Sie NIEMALS die "Ersetze Berechtigungen" in der Richtlinie).

Planen Sie ein CACLS, um alle Berechtigungen während der Nacht zurückzusetzen, gefolgt von gpupdate / force, um die Berechtigung erneut von der Richtlinie zu übernehmen. Klappt wunderbar.


3
2018-05-21 11:37





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


1
2018-04-03 17:26





Eine einfache Lösung besteht darin, die Dateien einfach zu komprimieren und sie im Zielverzeichnis zu dekomprimieren.


0
2018-06-25 17:19