Grundlagen der Icacls-Syntax: Automatisieren von Windows-Dateiberechtigungen

Wie wir alle wissen, folgen Windows-Berechtigungen normalerweise den Vererbungsregeln. Richtig konfiguriert, Vererbung …

Dies vereinfacht den manuellen Aufwand für die Berechtigung einer großen Dateistruktur erheblich. Wenn die Vererbung für einen Ordner aktiviert ist, “erbt” dieser Ordner die Berechtigungen des Ordners unmittelbar darüber in der Struktur. Die Vererbung ist kumulativ, wobei Ordner auf niedrigerer Ebene ihre Hinweise von den oben genannten bis ganz nach oben übernehmen.
Obwohl Vererbung bei korrekter Konfiguration viel Zeit spart, wird sie schnell zum Albtraum, wenn dies nicht der Fall ist. Das ist das Problem, das ich bei meiner Rückkehr aus dem Urlaub an einem schicksalhaften Montagmorgen entdeckt habe.
Jemand von unserem Helpdesk hatte einen Arbeitsauftrag zum Ändern einer Berechtigung in der obersten Ebene meiner Ordnerstruktur erhalten. Der unglückliche SAP ignorierte für den Moment, ob diese Berechtigungsänderung wirklich notwendig war, und aktivierte beim Abschließen der Anforderung versehentlich das Kontrollkästchen “Alle untergeordneten Objektberechtigungen durch vererbbare Berechtigungen von diesem Objekt ersetzen”. Als er auf die Schaltfläche Übernehmen klickte, verschwand meine exquisit gestaltete Berechtigungsstruktur, die mehrere Teams voreinander, reguläre Mitarbeiter vor Korrespondenz auf Führungsebene und außergewöhnlich sensible Projektdaten von Auftragnehmern vor Ort schützte.
Jeder konnte jetzt alles sehen.
Es ist ein Anfängerfehler, aber einer mit schmerzhaften Konsequenzen. Während ich weg war, versuchte der Rookie-Fehlerhersteller, das Problem zu beheben, indem er die Berechtigungen schnell (und fälschlicherweise) direkt in der Ordnerstruktur zurücksetzte. Menschen haben den Zugriff auf ihre Daten verloren. Andere Leute fanden Zugang zu Daten, die sie niemals sehen sollten. Es kam zu einer Katastrophe.

Dokumentation spart den Tag

Zum Glück war nicht unbedingt alles verloren. Unbekannt für den Rest des IT-Teams habe ich ein persönliches Dokument der komplexen Struktur des Ordnerbaums in einem separaten Word-Dokument aufbewahrt. In diesem Dokument befanden sich die Schlüssel zur Behebung des Problems und zur Wiederherstellung der Reihenfolge (und damit Einhaltung gesetzlicher Vorschriften) zurück zu dieser halben Terabyte großen Struktur von Office-Dokumenten.
Wie ich bald herausfand, bestand der noch schmerzhaftere Prozess darin, die Konfiguration meines Word-Dokuments in tatsächliche Berechtigungen auf dem Dateiserver zu übertragen.
Ich bin sicher, dass Sie diesen Schmerz auch kennen; Es ist der Schmerz im Handgelenk, den Sie bekommen, wenn Sie mit der rechten Maustaste auf Ordner klicken, mehrmals durch Windows GUI-basierte Berechtigungskonfigurationsbildschirme klicken und letztendlich warten, bis sie zutreffen. Seien wir ehrlich: Das GUI-basierte Tool von Microsoft funktioniert für diese Aufgabe, funktioniert aber nicht genau.
Es war nicht sehr weit in der Entschließung meiner Geschichte, dass ich eine der klassischen Realisierungen unserer Branche “Es muss einen besseren Weg geben” erlebte. Ich habe diesen besseren Weg mit einem kleinen Tool gefunden, das auf jeder modernen Version von Microsoft Windows installiert ist: Icacls.exe.
Mit Icacls.exe konnte ich die Einschränkungen der Windows-GUI-Tools umgehen. Über die Befehlszeile konnte ich problemlos einen Fix für Berechtigungen zusammenstellen und ihn selbst ausführen lassen, ohne schmerzhaft durch jeden Ordner in der GUI zu klicken.
Ich fand heraus, dass ich mit Icacls ein selbstdokumentierendes System erstellen konnte, das Berechtigungen auf überprüfbare und automatisierte Weise behandelt. Sie können eine solche Lösung heute mit einer einfachen Batchdatei und einer von Windows geplanten Aufgabe erstellen, und Sie werden froh sein zu wissen, dass ich diese Lösung in meinem nächsten Artikel freigeben werde. Zunächst ist es jedoch wichtig, die Grundlagen der Icacls-Syntax und deren Funktionsweise zu verstehen

Icacls-Syntax: Der Primer

Um die Icacls-Syntax zu verstehen, müssen Sie zunächst verstehen, warum Windows-Dateien und -Ordner so berechtigt sind, wie sie sind. Die Struktur ist außerordentlich kompliziert, aber Sie müssen wirklich nur einen kleinen Teil davon lernen, um die überwiegende Mehrheit Ihrer täglichen Genehmigungsaufgaben zu erledigen. Ich werde Ihnen diesen kleinen Teil hier zeigen.
Beginnen wir mit den einfachen Sachen. In einer Ordnerstruktur wissen Sie bereits, dass die drei primären Berechtigungen, die Sie normalerweise festlegen, Lesen, Ändern und Vollzugriff sind. Es stehen andere Optionen zur Verfügung, bei denen es sich jedoch normalerweise um Randfälle handelt, die Sie nicht sehr oft festlegen. Der Einfachheit halber konzentriert sich dieses Beispiel nur auf diese drei Berechtigungen.
Zunächst scheint es relativ einfach zu sein, Berechtigungen für eine Datei oder einen Ordner mithilfe der Icacls-Syntax festzulegen. Sie benötigen den Speicherort dieser Datei oder dieses Ordners, die Berechtigung, die Sie festlegen möchten, und den Benutzer oder die Gruppe, auf die Sie sie festlegen möchten. Sie könnten also denken, wenn Sie dem eloise-Benutzer die volle Kontrolle über den Ordner C: Private gewähren möchten, würden Sie Folgendes verwenden:
icacls C: Private / grant eloise: F.
Scheint einfach, aber es gibt ein paar merkwürdige Verhaltensweisen mit dieser scheinbar einfachen Syntax. Erstens ganz von selbst die /gewähren Schalter fügt hinzu der eloise benutzer zum Zugriffssteuerungsliste (ACL) anstatt die ACL durch eloise zu ersetzen. Wenn Sie die ACL ersetzen möchten, die nur die eloise-Benutzerberechtigung erteilt, müssen Sie “: r” hinzufügen /gewähren, so was:
icacls C: Private / grant: r eloise: F.
Hier wird es kompliziert. Wenn Sie zu Hause mitspielen – was Sie auch sein sollten -, haben Sie dies möglicherweise versucht und festgestellt, dass die Berechtigungen für Ihren Ordner C: Private nicht Ihren Vorstellungen entsprechen. Zunächst sehen Sie den eloise-Benutzer in der Liste der Gruppen- oder Benutzernamen. Anstatt jedoch eine der grundlegenden Berechtigungen anzuzeigen (z. B. Vollzugriff in diesem Fall), wird neben den Sonderberechtigungen ein Kontrollkästchen angezeigt.
Huh? Ich dachte, wir gewähren eloise die volle Kontrolle über diesen Ordner? Nun, wir sind es. Diese “volle Kontrolle” ist jedoch nicht die gleiche wie die, die die GUI als die betrachtet Real volle Kontrolle.
Was fehlt, ist die Vererbung, und um diesen Teil der Konversation vollständig zu verstehen, ist etwas mehr Hintergrund erforderlich. Stellen Sie zunächst fest, dass jedes Element auf einer Windows-Festplatte von Icacls entweder als Objekt oder als Container betrachtet wird. Dateien sind Objekte, Ordner sind Container, Dateien jedoch noch nie Behälter.
Sie müssen auch wissen, dass die Vererbung von Containern eine Komponente der “Grundberechtigungen” ist, die wir als “Ändern” oder “Vollzugriff” betrachten. Das nette Kontrollkästchen neben Ändern in der GUI kann nur angezeigt werden, wenn Sie auch die Vererbung dieses Ordners festgelegt haben. Alles andere (wie “keine Vererbung”) gilt als Sondergenehmigung.
Nun zurück zum Beispiel. Die Windows-Benutzeroberfläche betrachtet eine Ordnerberechtigung nicht als “echte” oder “grundlegende” Vollzugriff, es sei denn, dies ist der Fall volle Kontrolle plus Vererbung sowohl für Objekte als auch für Container. Diese Syntax sieht folgendermaßen aus:
icacls C: Privat / Zuschuss: r eloise: (OI) (CI) F.
Im obigen Beispiel (HALLO) steht für Objekt erben. Rahmen (HALLO) bedeutet, dass Objekte wie Dateien, die sich in diesem Ordner befinden, ihre Berechtigungen erben. Wie für (CI), das steht für Container erben. Rahmen (CI) Ordner in diesem Ordner erben ihre Berechtigung. Diese Syntax legt vollständig fest, was die Windows-GUI als “Grundberechtigung” für die vollständige Kontrolle betrachtet.
Versuchen Sie es jetzt. Sie werden sehen, dass die gewünschten Kontrollkästchen in der GUI aktiviert sind.

Icacls: Der nächste Schritt

Mit der obigen Syntax können Sie jetzt direkt jede grundlegende Berechtigung – R für Lesen, M für Ändern, F für Vollzugriff – für einen Ordner an einer beliebigen Stelle auf Ihrem Dateiserver festlegen.
Das ist großartig, aber wie gehen Sie mit der Situation um, wenn Sie nicht Vererbung wollen? Vielleicht haben Sie einen Ordner C: Public der obersten Ebene, der für alle zugänglich sein sollte. Jede Person in Ihrem Unternehmen sollte über Änderungszugriff auf diesen Ordner verfügen. Unter diesem Ordner befindet sich jedoch ein Unterordner C: Public Private, auf den nur eloise Zugriff haben sollte. Was tust du jetzt?
Eine Lösung beinhaltet Erbschaft brechen.
Um etwas genauer zu werden, möchten Sie jetzt der Gruppe Domänenbenutzer unter C: Public den Änderungszugriff gewähren. Sie möchten, dass nur eloise Zugriff auf C: Public Private hat. Lassen Sie uns diesen Prozess in seine unterschiedlichen Schritte aufteilen, während wir uns einen anderen wichtigen Icacls-Schalter ansehen, der aufgerufen wird /Erbe.
Verwenden Sie die folgende Syntax, um der Domänenbenutzergruppe die Änderungsberechtigung für C: Public zu erteilen:
icacls C: Public / grant: r "Domänenbenutzer" 🙁 OI) (CI) M.
Dies ist nicht anders als im vorherigen Abschnitt. Während der Ausführung dieses Befehls das erste Problem löst, wird gleichzeitig ein zweites erstellt. Die Gruppe “Domänenbenutzer” hat jetzt Zugriff auf C: Public, aber auch auf C: Public Private. Das ist, weil (OI) (CI) hat die Vererbung für alle Objekte und Container unter C: Public aktiviert. Sie müssen diese Vererbung brechen, mit der Sie tun können / Vererbung: r auf der Ebene von C: Public Private.
Das / Vererbung: r switch weist Icacls an, die Vererbung aus dem obigen Ordner zu trennen. Das “: r” in / Vererbung: r Gleichzeitig werden alle Berechtigungen entfernt, die der Ordner von oben erhalten hat. Im Wesentlichen mit / Vererbung: rSie erhalten eine vollständig leere ACL.
Dies ist außergewöhnlich leistungsfähig, aber mit einer außergewöhnlich wichtigen Einschränkung: Verwenden Sie diese Syntax nicht::
icacls C: Public Private / Vererbung: r
Wenn Sie es verwenden, wird zwar die Vererbung des Ordners C: Public Private von C: Public unterbrochen, aber Sie erhalten einen Ordner, der überhaupt keine Berechtigungen hat. Das ist schlecht. Eine bessere Lösung besteht darin, die Vererbung zu unterbrechen und mit demselben Befehl die Berechtigungen auf die gewünschten Werte zurückzusetzen. Verwenden Sie stattdessen diese Syntax:
icacls C: Public Private / Vererbung: r / grant: r eloise: (OI) (CI) M.
Durch Ausführen dieses Befehls werden drei Dinge ausgeführt, die alle innerhalb desselben Befehls liegen. Zunächst wird die Vererbung von C: Public Private aus dem obigen Ordner aufgehoben. Dann wird die ACL vollständig gelöscht. Schließlich wird der leeren ACL eloise mit der Änderungsberechtigung hinzugefügt.
Wie Sie sehen können, ist dieser Befehl mächtig. Mit diesem und dem anderen Befehl, den wir uns im obigen Abschnitt angesehen haben, können Sie die überwiegende Mehrheit der Berechtigungsaktivitäten ausführen, die üblicherweise auf Ihren Dateiservern ausgeführt werden. Icacls hat eine lächerlich große Anzahl anderer Schalter, die es verwenden kann, und Sie können herausfinden, was sie sind, indem Sie Icacls selbst über die Befehlszeile eingeben.
Zu diesem Zeitpunkt haben Sie fast alles, was Sie zum Erstellen einer überprüfbaren und automatisierten Lösung für das Berechtigungsmanagement mit Icacls benötigen. Alles, was übrig bleibt, ist, diese einzelnen Befehle in eine vollständige Lösung umzuwandeln. Dies ist das Thema für meinen nächsten Artikel. Bleiben Sie dran.

ÜBER DEN AUTOR
Greg ShieldsMicrosoft MVP ist Partner bei Concentrated Technology. Erfahren Sie mehr über Gregs Alleskönner-Tipps und Tricks unter www.ConcentratedTech.com.

Similar Posts

Leave a Reply