powershell:system:acls
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| powershell:system:acls [2020/07/30 09:42] – angelegt henning | powershell:system:acls [2024/05/27 08:36] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== ACLs ====== | + | ====== |
| ===== NTFS-Berechtigungen ===== | ===== NTFS-Berechtigungen ===== | ||
| Bei NTFS-Berechtigungen gibt einfache und erweiterte Berechtigungen. Man kann jede Berechtigung auf " | Bei NTFS-Berechtigungen gibt einfache und erweiterte Berechtigungen. Man kann jede Berechtigung auf " | ||
| - | ^ Berechtigungsart | + | Der folgende Powershell-Befehl listet alle Berechtigungen auf: |
| - | |Einfach | + | <code powershell> |
| - | |Einfach | + | |
| - | |Einfach | + | ==== Einfache Berechtigungen ==== |
| - | |Einfach | + | ^ Berechtigung ^ Auswirkung ^ |
| - | |Einfach | + | |Full Controll | Objekte können hinzugefügt, |
| - | |Erweitert | + | |Modify |Objekte können hinzugefügt, |
| - | |Erweitert | + | |Read & Execute |
| - | |Erweitert | + | |Read | Objekte und ihre Einstellungen sind sichtbar | |
| - | |Erweitert | + | |Write | Objekte können angelegt und geändert werden. | |
| - | |Erweitert | + | ==== Erweiterte Berechtigungen ==== |
| - | |Erweitert | + | ^ Berechtigung ^ Auswirkung ^ |
| - | |Erweitert | + | | Traverse Folder/ |
| - | |Erweitert | + | |List Folder / Read Data| Der Verzeichnisinhalt ist sichtbar und Dateiinhalte können gelesen werden| |
| - | |Erweitert | + | |Read Attributes|Objekt-Attribute können angesehen werden (read-only, hidden, |
| - | |Erweitert | + | |Write Attributes|Objekt-Attribute können geändert werden | |
| - | |Erweitert | + | |Read Extended Attributes| Erweiterte Objektattribute können eingesehen werden (Berechtigungen, |
| + | |Write Extended Attributes| Erweiterte Objektattribute können bearbeitet werden | | ||
| + | |Create Files / Write Data| (nur an Verzeichnissen) Dateien können in diesem Verzeichnis angelegt, geändert und überschrieben werden. | ||
| + | |Create Folders / Append Data| (nur an Verzeichnissen) Verzeichnisse können angelegt werden. Dateien können geändert werden, vorhandene Inhalte aber nicht entfernt oder überschrieben | ||
| + | |Delete|Objekte können gelöscht werden. Auch ohne diese explizite Berechtigung können Objekte gelöscht werden, wenn am übergeordneten Verzeichnis die Berechtigung " | ||
| + | |Read Permissions| Objektberechtigungen können gelesen werden| | ||
| + | |Change Permission|Objektberechtigungen können geändert werden| | ||
| + | |Take Ownership| Der Objektbesitz kann übernommen werden. :!: Der Besitzer an eines Objekts kann kann die Objektberechtigungen auch ändern, wenn er nicht über diese Berechtigung verfügt | | ||
| + | |Synchronize|Das Objekt kann synchronisiert werden. Dadurch wird ein Prozess initialisiert, | ||
| + | |||
| + | ===== Vererbung ===== | ||
| + | NTFS-Berechtigungen können entweder an dem Objekt selbst gesetzt (explicit) oder vom übergeordneten Objekt geerbt (inherited) worden sein.\\ | ||
| + | Die Hirarchie der gesetzten Berechtigungen ist dabei wie folgt: | ||
| + | * Explizit am Objekt verboten | ||
| + | * Explizit am Objekt erlaubt | ||
| + | * geerbtes verboten | ||
| + | * geerbtes erlaubt | ||
| + | |||
| + | Ein explizites " | ||
| + | |||
| + | ====== ACLs ====== | ||
| + | ===== ACLs lesen ===== | ||
| + | Das erste Powershell-Commandlet zur verwaltung von Berechtigungen ist '' | ||
| + | <code powershell> | ||
| + | {{: | ||
| + | |||
| + | Um alle Berechtigungen innerhalb einer Verzeichnisstruktur in eine CSV-Datei zu exportieren, | ||
| + | <file powershell Export-PermissionsToCsv.ps1> | ||
| + | # Zu untersuchender Pfad | ||
| + | $path = " | ||
| + | |||
| + | # Pfad zur CSV-Datei | ||
| + | $reportpath =" | ||
| + | |||
| + | #Nach Verzeichnissen unterhalb des angegebenen suchen und für alle Fundstellen acl(permissions) auslesen | ||
| + | Get-ChildItem -Recurse $path | Where-Object { $_.PsIsContainer } ` | ||
| + | | ForEach-Object { $path1 = $_.fullname; | ||
| + | | ForEach-Object { $_.access | Add-Member -MemberType NoteProperty ' | ||
| + | | Export-Csv $reportpath | ||
| + | </ | ||
| + | |||
| + | ===== ACLs übertragen ===== | ||
| + | Besitz an Quelle und Ziel ist Voraussetzung. | ||
| + | <code powershell> | ||
| + | |||
| + | ===== NTFS-Berechtigungen setzen ===== | ||
| + | Das Powershell-Commandlet '' | ||
| + | :!: **__Die Berechtigung wird nicht hinzugefügt, | ||
| + | <code powershell> | ||
| + | $acl = Get-Acl \\path\to\target | ||
| + | $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(" | ||
| + | $acl.SetAccessRule($AccessRule) | ||
| + | $acl | Set-Acl \\path\to\target | ||
| + | </ | ||
| + | |||
| + | Andere Berechtigungen können der Tabelle entnommen werden: | ||
| + | ^Berechtigung^Bezeichnung in Powershell^ | ||
| + | |FullControl|FullControl| | ||
| + | |Traverse Folder / Execute File| ExecuteFile| | ||
| + | |List Folder / Read Data| ReadData| | ||
| + | |Read Attributes|ReadAttributes| | ||
| + | |Read Extended Attributes|ReadExtendedAttributes| | ||
| + | |Create Files / Change Data|CreateFiles| | ||
| + | |Create Folders / Append Data| AppendData| | ||
| + | |Write Attributes|Write Attributes| | ||
| + | |Write Extended Attributes|WriteExtendedAttributes| | ||
| + | |Delete Subfolders and Files|DeleteSubfoldersandFiles| | ||
| + | |Delete|Delete| | ||
| + | |Read Permissions|ReadPermissions| | ||
| + | |||
| + | Darüber können die essentiellen Berechtigungen auch über Berechtigungs-Sätze vergeben werden: | ||
| + | ^Berechtigungs-Satz^umfasst folgende Berechtigungen^Bezeichnung in Powershell^ | ||
| + | |Read|List Folders / Read Data|Read| | ||
| + | |:::|Read Atributes|:::| | ||
| + | |:::|Read Extended Attributes|:::| | ||
| + | |:::|Read Permissions|:::| | ||
| + | |Write|Create Files / Write data|Write| | ||
| + | |:::|Create Folders / Append Data|:::| | ||
| + | |:::|Write Attributes|::: | ||
| + | |:::|Write Extended Attributes|::: | ||
| + | |Read and Execute|Traverse Folder / Execute File|ReadAndExecute| | ||
| + | |:::|List Folders / Read Data|:::| | ||
| + | |:::|Read Attributes|::: | ||
| + | |:::|Read Extended Attributes|::: | ||
| + | |:::|Read Permissions|::: | ||
| + | |Modify|Traverse Folder / Execute File|Modify| | ||
| + | |:::|List Folders / Read Data|:::| | ||
| + | |:::|Read Attributes|::: | ||
| + | |:::|Read Extended Attributes|::: | ||
| + | |:::|Read Permissions|::: | ||
| + | |:::|Create Files / Write data|:::| | ||
| + | |:::|Create Folders / Append Data|:::| | ||
| + | |:::|Write Attributes|::: | ||
| + | |:::|Write Extended Attributes|::: | ||
| + | |::: | ||
| + | |||
| + | ===== Berechtigungen entfernen ===== | ||
| + | Nur die Berechtigung "Allow FullControl" | ||
| + | <code powershell> | ||
| + | $acl = Get-Acl \\path\to\target | ||
| + | $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(" | ||
| + | $acl.RemoveAccessRule($AccessRule) | ||
| + | $acl | Set-Acl \\path\to\target | ||
| + | </ | ||
| + | |||
| + | Wenn der Benutzer noch die Berechtigung "Deny FullControl" | ||
| + | |||
| + | :!: " | ||
| + | :!: Der Befehl funktioniert nur bei direkt am Objekt gesetzten und nicht bei geerbten Berechtigungen.\\ | ||
| + | |||
| + | <code powershell> | ||
| + | $acl = Get-Acl \\path\to\target | ||
| + | $usersid = New-Object System.Security.Principal.Ntaccount (" | ||
| + | $acl.PurgeAccessRules($usersid) | ||
| + | $acl | Set-Acl \\path\to\target | ||
| + | </ | ||
| + | |||
| + | ===== Vererbung aktivieren und deaktivieren ===== | ||
| + | Für die Verwaltung der Vererbung wird die Methode " | ||
| + | * Der erste Parameter aktiviert ($false) oder deaktiviert ($true) die Vererbung von übergeordneten Berechtigungen. | ||
| + | * Der zweite Parameter entscheidet darüber, ob bestehende geerbte Berechtigungen erhalten bleiben sollen ($true) oder nicht ($false). | ||
| + | |||
| + | Beispiel: Die Vererbung zum Verzeichnis " | ||
| + | :!: Explizit gesetzten Berechtigungen bleiben erhalten. | ||
| + | <code powersehll> | ||
| + | $acl = Get-Acl \\path\to\target | ||
| + | $acl.SetAccessRuleProtection($true, | ||
| + | $acl | Set-Acl \\path\to\target | ||
| + | </ | ||
| + | |||
| + | Den Schritt rückgängig zu machen und die Vererbung wieder aktivieren: | ||
| + | <code powersehll> | ||
| + | $acl = Get-Acl \\path\to\target | ||
| + | $acl.SetAccessRuleProtection($false, | ||
| + | $acl | Set-Acl \\path\to\target | ||
| + | </ | ||
| + | |||
| + | ===== Besitz von Verzeichnissen und Dateien ändern ===== | ||
| + | Der Besitzer eines Objekts wird mit der Methode " | ||
| + | Beispiel: Den Benutzer " | ||
| + | :!: Der Benutzer " | ||
| + | <code powershell> | ||
| + | $acl = Get-Acl \\path\to\target | ||
| + | $usersid = New-Object System.Security.Principal.Ntaccount (" | ||
| + | $acl.SetOwner($usersid) | ||
| + | $acl | Set-Acl \\path\to\target | ||
| + | </ | ||
powershell/system/acls.1596094960.txt.gz · Zuletzt geändert: 2024/05/27 08:35 (Externe Bearbeitung)
