Benutzer-Werkzeuge

Webseiten-Werkzeuge


acl

Inhaltsverzeichnis

Mit Hilfe von Access Control Lists (kurz ACL) ist es möglich, einzelnen Nutzern (oder auch Gruppen) gezielt Rechte an einzelnen Dateien bzw Diensten zu gewähren oder zu entziehen. Siehe auch icacls.

ACLs werden aber auch auf Switches, Routern oder Firewalls eingesetzt um den Traffic zu kontrollieren.

ACLs erweitern die Standard-Dateiberechtigungen, indem sie zusätzliche Benutzer und Gruppen sowie spezifische Berechtigungen für Dateien und Verzeichnisse ermöglichen. Dadurch können feinere Zugriffskontrollen implementiert werden.

Linux

Du kannst ACLs auf einem Linux Dateisystem aktivieren, das das ACL-Feature unterstützt (wie z. B. ext2, ext3, ext4).

# ACLs für eine Datei festlegen
setfacl -m u:username:permissions filename

# ACLs für ein Verzeichnis festlegen
setfacl -m d:u:username:permissions directory

# ACLs anzeigen
getfacl filename

# ACLs entfernen
setfacl -x u:username filename

Windows

### Get ACL
 
Write-Output "Current:"
get-acl -path "\\fileserver\public\gbi\berechtigungsaudit\test" | %{ $_.Access | %{ "$($_.IdentityReference); $($_.FileSystemRights); $($_.IsInherited)" } }
 
 
### Modify ACL
 
$NewAcl = Get-Acl -Path "\\fileserver\public\gbi\berechtigungsaudit\test"
 
# Properties
$identity = "d2000\s_importexport"
$fileSystemRights = "FullControl"
$type = "Allow"
 
# Create new rule
$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type
$fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList
 
# Apply new rule
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path "\\fileserver\public\gbi\berechtigungsaudit\test" -AclObject $NewAcl
 
Write-Output "After Modify:"
get-acl -path "\\fileserver\public\gbi\berechtigungsaudit\test" | %{ $_.Access | %{ "$($_.IdentityReference); $($_.FileSystemRights); $($_.IsInherited)" } }
 
### Remove ACL
 
$Acl = Get-Acl -Path "\\fileserver\public\gbi\berechtigungsaudit\test"
 
# Properties
$Identity = "d2000\s_importexport"
$FileSystemRights = [System.Security.AccessControl.FileSystemRights]::FullControl
$AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow
$InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]::None
$PropagationFlags = [System.Security.AccessControl.PropagationFlags]::None
 
# Create rule to remove
$RuleToRemove = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $Identity, $FileSystemRights, $InheritanceFlags, $PropagationFlags, $AccessControlType
$Acl.RemoveAccessRule($RuleToRemove)
 
# Apply rule
Set-Acl -Path "\\fileserver\public\gbi\berechtigungsaudit\test" -AclObject $Acl
 
Write-Output "After Remove:"
get-acl -path "\\fileserver\public\gbi\berechtigungsaudit\test" | %{ $_.Access | %{ "$($_.IdentityReference); $($_.FileSystemRights); $($_.IsInherited)" } }

Die InheritanceFlags bestimmen, ob und wie Berechtigungen vererbt werden. Die PropagationFlags dagegen beeinflussen das Verhalten dieser Vererbung.

InheritanceFlags legen fest, ob und auf welche Arten von Objekten (Container oder Objekte) die ACL-Einträge vererbt werden.

  • ContainerInherit: Der ACL-Eintrag wird auf untergeordnete Ordner (Container) vererbt.
  • ObjectInherit: Der ACL-Eintrag wird auf untergeordnete Dateien (Objekte) vererbt.
  • None: Keine Vererbung auf untergeordnete Objekte.

PropagationFlags beeinflussen wie die Vererbung angewendet wird wenn sie aktiviert ist (also wenn InheritanceFlags gesetzt sind). Sie kontrollieren die Weitergabe der Vererbung.

  • None: Es gibt keine Einschränkungen bei der Vererbung. Der Eintrag wird normal auf untergeordnete Objekte (Ordner und Dateien) vererbt.
  • NoPropagateInherit: Die Vererbung wird nur eine Ebene tief angewendet. Der Eintrag wird auf die direkte untergeordnete Ebene vererbt, aber die untergeordneten Objekte vererben diese Berechtigungen nicht weiter.
  • InheritOnly: Der ACL-Eintrag gilt nicht für das übergeordnete Objekt selbst, sondern nur für untergeordnete Objekte.

Icacls

Auch Windows unterstützt granulare Berechtigungseinstellungen.

# ACLs für eine Datei festlegen
icacls filename /grant username:permissions # z. B. R für Lesen, W für Schreiben und X für Ausführen.

# ACLs für ein Verzeichnis festlegen
icacls directory /grant username:permissions 

# ACLs anzeigen
icacls filename

# ACLs entfernen
icacls filename /remove username
acl.txt · Zuletzt geändert: 2025/04/09 10:31 von jango