Benutzer-Werkzeuge

Webseiten-Werkzeuge


powershell:system:acls

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
powershell:system:acls [2020/07/30 11:02] henningpowershell:system:acls [2024/05/27 08:36] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 42: Zeile 42:
 ===== ACLs lesen ===== ===== ACLs lesen =====
 Das erste Powershell-Commandlet zur verwaltung von Berechtigungen ist ''Get-Acl''; es listet alle Objekt-Berechtigungen. Das erste Powershell-Commandlet zur verwaltung von Berechtigungen ist ''Get-Acl''; es listet alle Objekt-Berechtigungen.
-<code powershell>get-acl .\acl_test\ |fl </code>+<code powershell>get-acl \\path\to\source |fl </code>
 {{:powershell:system:acl001.png?400|get-acl}} {{:powershell:system:acl001.png?400|get-acl}}
 +
 +Um alle Berechtigungen innerhalb einer Verzeichnisstruktur in eine CSV-Datei zu exportieren, kann folgendes Skript verwendet werden:
 +<file powershell Export-PermissionsToCsv.ps1>
 +# Zu untersuchender Pfad
 +$path = "\\path\to\source"     
 +
 +# Pfad zur CSV-Datei
 +$reportpath ="C:\data\ACL.csv" 
 +
 +#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; Get-Acl $_.Fullname `
 +  | ForEach-Object { $_.access | Add-Member -MemberType NoteProperty '.\Application Data' -Value $path1 -passthru }} `
 +  | Export-Csv $reportpath
 +</file>
  
 ===== ACLs übertragen ===== ===== ACLs übertragen =====
Zeile 56: Zeile 71:
 $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("DOMAIN\Username","FullControl","Allow") $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("DOMAIN\Username","FullControl","Allow")
 $acl.SetAccessRule($AccessRule) $acl.SetAccessRule($AccessRule)
-$acl | Set-Acl \\fs1\shared\sales+$acl | Set-Acl \\path\to\target
 </code> </code>
  
Zeile 99: Zeile 114:
 |:::|Write Extended Attributes|:::| |:::|Write Extended Attributes|:::|
 |:::|Delete|:::| |:::|Delete|:::|
 +
 +===== Berechtigungen entfernen =====
 +Nur die Berechtigung "Allow FullControl" für den Benutzer "DOMAIN\Username" aus den vorhandenen Berechtigungen entfernen.
 +<code powershell>
 +$acl = Get-Acl \\path\to\target 
 +$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("DOMAIN\Username","FullControl","Allow")
 +$acl.RemoveAccessRule($AccessRule)
 +$acl | Set-Acl \\path\to\target
 +</code>
 +
 +Wenn der Benutzer noch die Berechtigung "Deny FullControl" zugewiesen hat, kann diese mit "PurgeAccessRules" entfernt werden:\\
 +
 +:!: "PurgeAccessRules" funktioniert nicht mit Strings, sondern nur mit SIDs. Die Klasse "Ntaccount" kann verwendet werden, um den String des Accountnamen zur SID zu konbvertieren.\\
 +:!: 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 ("DOMAIN\Username")
 +$acl.PurgeAccessRules($usersid)
 +$acl | Set-Acl \\path\to\target
 +</code>
 +
 +===== Vererbung aktivieren und deaktivieren =====
 +Für die Verwaltung der Vererbung wird die Methode "SetAccessRuleProtection" verwendet. Sie verfügt über zwei mögliche Stati: "$true" und "$false".\\
 +  * 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 "\\path\to\target" soll unterbrochen und die bislang geerbten Berechtigungen entfernt werden:\\
 +:!: Explizit gesetzten Berechtigungen bleiben erhalten.
 +<code powersehll>
 +$acl = Get-Acl \\path\to\target
 +$acl.SetAccessRuleProtection($true,$false)
 +$acl | Set-Acl \\path\to\target
 +</code>
 +
 +Den Schritt rückgängig zu machen und die Vererbung wieder aktivieren:
 +<code powersehll>
 +$acl = Get-Acl \\path\to\target
 +$acl.SetAccessRuleProtection($false,$true)
 +$acl | Set-Acl \\path\to\target
 +</code>
 +
 +===== Besitz von Verzeichnissen und Dateien ändern =====
 +Der Besitzer eines Objekts wird mit der Methode "SetOwner" geändert.\\
 +Beispiel: Den Benutzer "Username" zum Besitzer des Ordners "\\path\to\target" machen:\\
 +:!: Der Benutzer "Username" muss über die Berechtigungen "Take Ownership", "Read" und "Change Permission" verfügen.
 +<code powershell>
 +$acl = Get-Acl \\path\to\target 
 +$usersid = New-Object System.Security.Principal.Ntaccount ("DOMAIN\Username")
 +$acl.SetOwner($usersid)
 +$acl | Set-Acl \\path\to\target
 +</code>
powershell/system/acls.1596099756.txt.gz · Zuletzt geändert: 2024/05/27 08:35 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki