Wie man den Befehl Icacls zum Verwalten von Dateiberechtigungen verwendet

Icacls ist ein Befehlszeilen-Dienstprogramm für Windows, das von IT-Administratoren verwendet werden kann, um Zugriffssteuerungslisten für Dateien und Ordner zu ändern. Eine der häufigsten Aufgaben, die ein IT-Profi oder Systemadministrator durchführt, ist die Änderung von Berechtigungen auf einem Dateiserver. Die Verwendung des icacls-Befehls ist ein sehr effizienter Weg, um dies zu erreichen, und wir werden in diesem Leitfaden erklären, wie man diesen Befehl verwendet.

Verwendung des icacls-Befehls

Basierend auf meinen eigenen Erfahrungen werden Berechtigungen für Dateien unter

Windows in der Regel mit dem Datei-Explorer geändert. Für viele IT-Profis ist es sehr intuitiv, den Datei-Explorer zu öffnen, zum Netzwerkstandort zu navigieren, der Probleme beim Zugriff für einige Benutzer verursacht, und deren Berechtigungen von „Lesen“ auf „Lesen/Ändern“ oder etwas Ähnliches zu ändern. Schön und schnell, ziemlich einfach zu bedienen.

Anzeige

Es gibt jedoch unzählige Szenarien mit unterschiedlichen Ausmaßen, in denen die grafische Benutzeroberfläche nicht so umfangreich ist, wie wir es uns wünschen. Wenn wir Berechtigungen für 22 Millionen Dateien und Ordner ändern möchten, wollen wir es richtig machen!Was ist eine Zugriffssteuerungsliste (ACL)?

In Windows und NTFS-Dateisystemen hat jedes Dateiobjekt (Datei, Ordner) eine Zugriffssteuerungsliste. Diese Liste besteht aus Zugriffssteuerungseinträgen (ACE). Die Liste enthält alle Benutzer und/oder anderen Sicherheitscontainerobjekte (Gruppen usw.), die bestimmte Berechtigungsstufen für das genannte Dateiobjekt haben.

Was ist ein Zugriffssteuerungseintrag? Einen Moment…

Was ist ein Zugriffssteuerungseintrag (ACE)?

Ein Zugriffssteuerungseintrag (ACE) ist ein einzelner Datensatz oder eine Berechtigungsregel, die die individuellen Berechtigungsstufen eines Benutzers/einer Gruppe für ein Dateiobjekt steuert. Lassen Sie mich die grundlegenden Berechtigungen auf hoher Ebene auflisten, die für eine ACL verfügbar sind:

Werbung

  • Voller Zugriff (F)
  • Zugriff ändern (M) (beinhaltet „Löschen“)
  • Lesen und Ausführen (RX)
  • Nur lesen (R)
  • Nur schreiben (W)

Es gibt etwa ein Dutzend oder mehr „erweiterte“ Berechtigungen, aber diese liegen außerhalb des Umfangs dieses Artikels.

Datei-Explorer-Beschränkungen

Nun, wenn ich der Programm Manager bei Microsoft für den Datei-Explorer wäre (kein Job, den ich besonders beneide), wären das die Funktionen, die ich hinzufügen würde. Und glauben Sie mir, ich wollte, dass sie diese seit Jahrzehnten hinzufügen!

Sagen wir, Sie führen eine Datei-Server-Migration von Server A nach Server B durch. Sie haben bereits die Daten zum Ziel (Server B) kopiert. Sie haben festgestellt, dass nicht alle Berechtigungen rekursiv richtig aussehen.

Dann gehen Sie zum Stamm Ihres Baums, navigieren zum Sicherheit Tab und nehmen einige Änderungen an der Zugriffssteuerungsliste vor. Sie aktivieren das Kontrollkästchen, um alle 22 Millionen Dateien und Ordner unter dem Stamm rekursiv zu ändern. Es beginnt Änderungen vorzunehmen und wirft dann einige Bestätigungs-Pop-ups über Änderungen an Systemdateien, schreibgeschützten Dateien usw.

Werbung

Jetzt, hier ist meine Anfrage – In dem kleinen ‚Assistenten‘, den sie erstellen könnten, möchte ich angeben können, dass automatisch auf alle Bestätigungsanfragen mit ‚Ja‘ geklickt wird. Dann würde der Prozess bei Fehlern fortgesetzt und mir nach Abschluss eine Zusammenfassung bieten, mit einem Link zum Herunterladen der Rohausgabe der Datei, damit ich zurückgehen und Fehler oder Warnungen überprüfen kann, die aufgetreten sind.

Nein, ich weiß nicht, ob Microsoft jemals ein so wunderbares, robustes, einrichten-und-vergessen-Funktionssystem wie dieses anbieten wird. Also gehen wir in der Zwischenzeit zur Energie der Befehlszeile und des Skriptings. Dort kommt der integrierte icacls Befehl ins Spiel.

Das Verständnis der icacls Syntax

Die Syntax von icacls ist eigentlich ziemlich unkompliziert und relativ einfach zu erlernen. Im Grunde verwendest du den Befehl, fügst dann die Datei oder den Ordner hinzu, den du überprüfen oder manipulieren möchtest, und dann die Berechtigung(en), die du hinzufügen/ändern/löschen möchtest.

Es gibt natürlich auch Befehlszeilenoptionen. Wir werden das bald alles durchgehen. Hier ist ein Beispiel dafür, was passiert, wenn du einfach den folgenden Befehl ausführst und dann einen Dateinamen.

icacls Excellent.txt
Using icacls to view current permissions

Es wird eine ACE pro Zeile ausgeben, also unter Verwendung des obigen Beispiels:

  • Das integrierte ‚SYSTEM‘-Konto hat vererbte (I) und volle (F) Zugriffsberechtigungen.
  • Die integrierte Administratorengruppe hat die gleichen Berechtigungen.
  • Die integrierte Benutzergruppe hat vererbte (I), Lese- (R) und Ausführungsrechte (X).

Kannst du icacls in PowerShell verwenden?

Nun, wie du an meinem obigen Beispiel und Screenshot sehen kannst, kannst du sicherlich PowerShell verwenden, um den icacls-Befehl auszuführen. Du musst nur beachten, dass einige Umgebungsvariablen etwas anders referenziert werden müssen.

Die entsprechenden PowerShell-Cmdlets zum Anzeigen und Verwalten von ACLs für Dateiobjekte sind Get-Acl und Set-Acl. Klingt nach einer zukünftigen Idee für einen Beitrag! ?

Verwendung von icacls zum Einrichten von Berechtigungen für eine Datei oder einen Ordner

Da der icacls-Befehl in Windows integriert ist, können Sie sofort mit der Verwendung des Befehls beginnen, sobald Sie hier die Grundlagen verstanden haben. Sie können auch einfach ‚icacls‘ allein auf der Befehlszeile eingeben, um die verfügbaren Hilfsinformationen anzuzeigen. Sie können auch ähnliche Microsoft-Dokumentationen für den icacls-Befehl auf dieser Seite durchsuchen.

Wie man die aktuellen ACL für ein Objekt anzeigt

In Ordnung, ich denke, das ist genug Erläuterung… lassen Sie uns damit beginnen, den Befehl zu verwenden. Um die aktuellen ACL für eine Datei oder ein Verzeichnis anzuzeigen, verwenden Sie einfach die folgenden Befehle:

icacls file or directory
icacls Download
Using icacls to view permissions on a folder

Hier ist ‚Download‘ ein Ordner mit Dateien und Unterordnern. Wie Sie sehen werden, ist die Ausgabe für Verzeichnisobjekte etwas anders. Sie sehen (OI) und (CI), da dies spezielle Container-Vererbungsberechtigungen sind, die nur für Verzeichnisse gelten.

Für die integrierte Administratorengruppe sehen Sie, dass sie volle Rechte und vererbte Berechtigungen hat. Das ‚(OI)‘ zeigt an, dass die anderen Objekte in diesem Verzeichnis dieses ACE erben werden. Das ‚(CI)‘ zeigt an, dass andere Ordner in diesem Verzeichnis dieses ACE wiederum erben werden. (Dieses Verzeichnis hat zufällig keine, aber wenn es welche hätte, würde es automatisch dieselben ACEs erben).

Berechtigungen für eine Datei oder einen Ordner gewähren

Nun fängt es an, spannend zu werden. Lassen Sie uns Berechtigungen festlegen und anderen Benutzern in unserer Active Directory-Domäne mit dem /grant-Schalter hinzufügen. Mit dem folgenden Befehl geben wir Billy Reinders (breinders) Lesezugriff (R) auf die Datei Excellent.txt.

icacls Excellent.txt /grant reinders\breinders:R /t /c
Granting permissions to a file for a user

Der vorherige Befehl wurde erfolgreich abgeschlossen; dann habe ich meine Änderungen validiert, indem ich die Berechtigungen überprüfte – wir sehen jetzt, dass „REINDERS\breinders“ Lesezugriff (R) hat. Und, weil wir kein „I“ sehen, wissen wir, dass es nicht vererbt, sondern explizit ist.

Nur zur Erinnerung, der Schalter „/t“ wird verwendet, um die Berechtigungen rekursiv auf den gesamten Ordnerbaum anzuwenden. Der Schalter „/c“ sagt dem Befehl, dass er im Falle von Fehlern weitermachen soll.

Entfernen von Berechtigungen für eine Datei oder einen Ordner

Anstelle des /grant-Schalters zum Hinzufügen von Berechtigungen verwenden wir den /remove-Schalter, um Berechtigungen von einem ACE zu entfernen. Lassen Sie uns jetzt Billys eher kurzlebigen Zugriff auf die Datei Excellent.txt entfernen.

icacls Excellent.txt /remove:g reinders\breinders /t /c
Using the /remove switch to remove permissions to a file for a user

Hier verwenden wir den Schalter „/remove:g“, um die zuvor an Billy Reinders erteilte Berechtigung zu entfernen. Ich habe den Befehl erneut ausgeführt, um zu überprüfen, und Sie werden sehen, dass die ACL für Billy verschwunden ist. Ausgezeichnet! ?

Verweigern von Berechtigungen für eine Datei oder einen Ordner

Im Allgemeinen sollten Sie versuchen, explizite „Verweigern“-Berechtigungen aufgrund der Komplexität vermeiden, die sie in Ihre gesamte Berechtigungsinfrastruktur einbringen. In den meisten Situationen können Sie sich auf ein implizites Verweigern, das Standardmäßige, verlassen, um mit diesen Umständen umzugehen.

Wenn ein Benutzer nicht in einer ACL aufgeführt ist und der Benutzer kein Mitglied von in der ACL aufgeführten Gruppe(n) ist, wird davon ausgegangen (richtigerweise), dass dieser Benutzer KEINE Berechtigungen für dieses Objekt hat. Das folgende Beispiel veranschaulicht jedoch, wie außer Kontrolle dies geraten kann – wenn ein Benutzer Mitglied von zwei Gruppen ist und einer Gruppe Zugriff gewährt wird, während der anderen Gruppe der Zugriff verweigert wird, wird dem Benutzer der Zugriff verweigert. Das ergibt an und für sich Sinn, aber es kann sehr kompliziert werden, dies zu beheben.

Wenn Sie jedoch eine Verweigerungsberechtigung explizit hinzufügen möchten, können Sie den allgemeinen „/deny“-Schalter verwenden, um dies zu erreichen.

icacls Download /deny reinders\breinders:(OI)(CI)F /t /c
Using the /deny switch to put explicit deny permissions on a file or folder structure

Hier sehen Sie den Befehl, den ich ausgeführt habe; er wurde erfolgreich abgeschlossen. Anschließend habe ich den Sicherheits-Tab für den Download-Ordner überprüft – Sie können sehen, dass Billy Verweigerungsberechtigungen für das Objekt und alle seine Inhalte hat.

Wie Sie die ACL für ein Objekt zurücksetzen

I can’t tell you how many file server migrations or movements of large amounts of file projects I’ve been involved in where I just needed to start from scratch. This invaluable step includes resetting the ACLs on an object in case things get too far gone, or you succumb to a bad idea after being up all night. Maybe a malware attack crippled an entire HR directory that NEEDS to get resolved ASAP. Thankfully, you can use the ‘/reset’ flag to reset the permissions to the default.

icacls Download /reset /t /c

[Bild]

Direkt nachdem ich Billy erneut „RW“-Rechte für den Download-Ordner und dessen Inhalte gewährt habe, habe ich den Zurücksetzungsbefehl ausgeführt. Wie Sie sehen können, ist sein Name erneut nicht in der ACL auf dem Sicherheits-Tab enthalten. Schön und einfach.

Wie Sie ACLs speichern und wiederherstellen

A wonderfully powerful feature included with icacls is the ability to backup and restore the ACL of an object to a file for safekeeping. Before you start a large script that changes or resets permissions on millions of files, you can first save the current state of those millions of files’ ACLs to a single file.

Wenn du in deinem Skript halbwegs entdeckt, dass du einen Syntaxfehler vielleicht gemacht hast, kannst du es abbrechen und dann den Status der Zugriffssteuerungslisten (ACLs) für den gesamten Baum mit einem einzigen Befehl mit dem Parameter ‘/restore’ wiederherstellen! Lass uns das versuchen!

icacls Download /save Download_ACL_Backup /t
What the backed-up text file looks like with all the ACLs – wowzers!

Dadurch wird der gesamte ACL-Baum des Download-Ordners in eine einzige Datei mit dem Namen ‚Download_ACL_Backup‘ gespeichert. Jetzt empfehle ich dir sehr, mit dieser Textdatei nicht zu spielen. Ja, es sieht aus wie irgendetwas Crazy wie Linux oder so. ? Es war nur ein Scherz.

Hier ist der aktuelle Status des Download-Ordners.

The ‘Download’ folder before Junior performs his ill-advised permissions changes…

Nun nehme uns an, ein Junioradministrator gewährt Billy Reinders vollen Zugriff auf den Ort. Nehmen wir auch an, er enthält Personalien, die Billy keinen Zugriff auf haben sollte.

icacls Download /grant reinders\breinders:F /t /c
Our Junior Admin has granted Billy Reinders Full access to the location

Nach dem Befehl überprüfe ich erneut und sehe, dass Billy vollen, expliziten Zugriff auf diesen Ordner hat. Mit einemmal kann davon ausgegangen werden, dass die Berechtigungen auf die Standardeinstellungen zurückgesetzt werden werden, indem dieser Befehl einmal ausgeführt wird.

icacls Download /reset /t /c
After running the /reset switch, we see Billy no longer has explicit access!

Nach der Ausführung des Zurücksetzbefehls kann man sehen, dass sich sein Name AGAIN aus der ACL entfernt hat. Er hat keinen vollen Zugriff mehr auf den Ordner. Erinnerung – dies wird die gesamte Ordnerhierarchie durchsuchen.

Tipp: Im Verlauf dieses Szenarios hast du vielleicht erkannt, dass Billy tatsächlich nur lesen-only-Zugriff hat, weil die integrierte Benutzergruppe (der Billy angehört) standardmäßig Lese- und Ausführerechte hat. Bloß ein Hinweis.

Wie man Windows- Integritätsstufen mit icacls verwalten kann

Es gibt eine weniger bekannte Funktion in Windows namens mandatory access control (MAC). Es existiert schon seit geraumer Zeit. Microsoft führte jedoch das mandatory integrity control (MIC) in Windows Vista/Windows Server 2008 ein.

Die Berechtigungen werden durch Richtlinien-basierte feste Regeln definiert und können im Allgemeinen nicht von Benutzern außer Kraft gesetzt werden. Es wird im Allgemeinen als Windows integrity control (WIC) bezeichnet. Der Integritätspegel wird verwendet, um das Schutzniveau eines Objekts in Windows zu bestimmen. Im Wesentlichen möchten Sie immer sicherstellen, dass Sie die richtigen Berechtigungen für Ihre Benutzer haben.

I won’t go into great detail here, but I can show you a few examples of how to use the icacls command with it. If we create a new folder, Test, in the Download directory, we can adjust its integrity level to ‘h’igh.

icacls Test /setintegritylevel h

Um es kurz zu machen, das hohe Niveau ist synonym mit den Berechtigungen, die zum Ausführen einer Aufgabe oder eines Prozesses als Administrator (Admin-Rechte) erforderlich sind. Selbst wenn Billy Reinders Vollzugriff auf diesen Ordner hätte, könnte er diesen Ordner und dessen Inhalt NICHT öffnen, es sei denn, ihm würden irgendwie magische Administratorberechtigungen gewährt, UND er könnte den Datei-Explorer als Admin ausführen (was er nicht kann…).

Im Wesentlichen handelt es sich also um eine weitere Sicherheitsebene, die Sie zum Schutz hochsensibler Daten verwenden könnten.

Wie man die Vererbung von Berechtigungen mit icacls verwaltet

Wir können auch den Befehl icacls verwenden, um die Vererbungsberechtigung von Dateien und Ordnern anzuzeigen und zu ändern. Dies ermöglicht es uns, explizite Berechtigungen für einen Ordner festzulegen, während die übrigen Ordner so eingestellt sind, dass sie die ACLs des übergeordneten Containers automatisch akzeptieren.

Vererbung von Berechtigungen für Dateien und Ordner deaktivieren

Wir können die Vererbung für eine Datei oder einen Ordner deaktivieren, indem wir den Parameter „/inheritance:d“ verwenden. In meinem Beispiel haben wir einen Installationsordner im Download-Ordner. Hier können Sie sehen, dass der Ordner alle Berechtigungen von oben erbt.

icacls Download
Disabling inheritance on the Install folder leaving only explicit ACEs

Lassen Sie uns die Vererbung für den Installationsordner entfernen.

icacls Install /inheritance:d /t /c
We can see that inheritance has been disabled as the ‘Enable inheritance’ button/toggle is available

Da sind Sie. Sie werden feststellen, dass alle „(I)“-Einträge verschwunden sind. Diese sind jetzt alle explizite Berechtigungen. Und Sie können unten in der GUI-Überprüfung sehen, dass die Schaltfläche „Vererbung aktivieren“ verfügbar ist, weil wir sie deaktiviert haben.

Schlussfolgerung

Der für mich faszinierendste Aspekt von icacls ist die Robustheit, mit diesem Befehl auch komplexe Projekte zu skripten. Und wieder muss man sich keine Sorgen um die Zuverlässigkeit des Datei-Explorers machen, falls es auf einen Fehler stößt, abstürzt, Dinge dieser Art.

I hope you learned more about using the command line to modify permissions. Please leave a comment or question below. Thank you!

Verwandter Artikel:

Source:
https://petri.com/icacls-command/