Wiki di Michele

Permessi NTFS: Get-Acl e Set-Acl

GuidaUltima modifica: 24/10/2026 Verificata il 24/10/2026

Gestione dei permessi di file, cartelle e chiavi di registro.

Leggere i permessi

Get-Acl C:\Dati
(Get-Acl C:\Dati).Access
(Get-Acl C:\Dati).Access | Format-Table IdentityReference, FileSystemRights, AccessControlType, IsInherited -AutoSize
(Get-Acl C:\Dati).Owner
(Get-Acl C:\Dati).Sddl

Campi principali:

CampoSignificato
IdentityReferenceUtente o gruppo
FileSystemRightsDiritti (FullControl, Modify, ReadAndExecute, Read, Write)
AccessControlTypeAllow o Deny
InheritanceFlagsSe si applica a file e sottocartelle
IsInheritedSe deriva dalla cartella superiore

Aggiungere un permesso

$acl = Get-Acl C:\Dati
$regola = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "DOMINIO\Utente",
    "Modify",
    "ContainerInherit,ObjectInherit",
    "None",
    "Allow")
$acl.AddAccessRule($regola)
Set-Acl C:\Dati $acl

Parametri della regola, nell'ordine: identità, diritti, flag di ereditarietà, propagazione, tipo.

Rimuovere un permesso

$acl = Get-Acl C:\Dati
$acl.Access | Where-Object { $_.IdentityReference -eq "DOMINIO\Utente" } | ForEach-Object { $acl.RemoveAccessRule($_) | Out-Null }
Set-Acl C:\Dati $acl

Disabilitare l'ereditarietà

$acl = Get-Acl C:\Dati
$acl.SetAccessRuleProtection($true, $true)
Set-Acl C:\Dati $acl

Cambiare il proprietario

$acl = Get-Acl C:\Dati
$acl.SetOwner([System.Security.Principal.NTAccount]"BUILTIN\Administrators")
Set-Acl C:\Dati $acl

Se non hai accesso alla cartella, prima usa takeown /f C:\Dati /r /d y da prompt amministratore.

Copiare i permessi da un'altra cartella

Get-Acl C:\Modello | Set-Acl C:\Dati

Ricorsivo su molti elementi

Get-ChildItem C:\Dati -Recurse | ForEach-Object { Set-Acl $_.FullName $acl }

Per operazioni massicce icacls è più veloce e semplice:

icacls C:\Dati /grant "DOMINIO\Utente:(OI)(CI)M" /T

Report: chi ha accesso a cosa

Get-ChildItem C:\Condivisioni -Directory | ForEach-Object {
    $cartella = $_.FullName
    (Get-Acl $cartella).Access | ForEach-Object {
        [pscustomobject]@{
            Cartella = $cartella
            Identita = $_.IdentityReference
            Diritti = $_.FileSystemRights
            Tipo = $_.AccessControlType
        }
    }
} | Export-Csv .\permessi.csv -NoTypeInformation -Encoding UTF8

Registro di sistema

Get-Acl HKLM:\SOFTWARE\MiaApp

Attenzione

Tag

comandipowershellwindows

Altre pubblicazioni in questa sezione

Suggerisci una correzione