Come gestire i permessi ACL utilizzando PowerShell

  1. Tipi di autorizzazione NTFS in PowerShell
  2. Usa il comando Get-Acl per ottenere ACL per cartelle e file in PowerShell
  3. Usa il comando Set-Acl per impostare ACL per file e cartelle in PowerShell
  4. Usa il parametro -RemoveAccessRule per rimuovere le autorizzazioni utente in PowerShell
  5. Disabilita o abilita l’eredità delle autorizzazioni in PowerShell
  6. Usa il metodo SetOwner per cambiare la proprietà di file e cartelle in PowerShell
Come gestire i permessi ACL utilizzando PowerShell

Gli amministratori di sistema configurano le liste di controllo degli accessi NTFS ACL aggiungendo voci di controllo degli accessi ACE sui server di file NTFS per implementare un modello di minimo privilegio.

Questo articolo apprenderà i diversi tipi di autorizzazione e come interrogare, modificare e rimuovere ACL su file e cartelle utilizzando PowerShell.

Tipi di autorizzazione NTFS in PowerShell

Ci sono sia autorizzazioni NTFS avanzate che di base. Ad esempio, puoi impostare ogni autorizzazione su Deny o Allow.

  • Controllo completo: Gli utenti con questa autorizzazione possono modificare, aggiungere, spostare e eliminare file e directory, nonché le loro proprietà associate. Inoltre, gli utenti con questa autorizzazione possono modificare le impostazioni di autorizzazione per tutte le sottodirectory e i file.
  • Modifica: Gli utenti con questa autorizzazione possono visualizzare e modificare file e proprietà dei file, inclusa l’aggiunta e l’eliminazione di file a una directory o proprietà dei file a un file.
  • Leggi ed esegui: Gli utenti con questa autorizzazione possono eseguire file eseguibili, inclusi gli script.
  • Leggi: Gli utenti possono visualizzare file, proprietà dei file e directory con questa autorizzazione.
  • Scrivi: Gli utenti con questa autorizzazione possono scrivere su un file e aggiungere file a directory.

Ecco l’elenco delle autorizzazioni avanzate:

  • Traversa cartella o Esegui file: Gli utenti con questa autorizzazione avanzata possono navigare attraverso le cartelle per raggiungere altre cartelle o file, anche se non hanno autorizzazioni per questi file o cartelle. Gli utenti con questa autorizzazione avanzata possono anche eseguire file eseguibili. L’autorizzazione Traversa cartella ha effetto quando l’utente o il gruppo non ha il diritto Bypass Traverse Checking nel plug-in delle Criteri di gruppo.
  • Elenca cartella o Leggi dati: Gli utenti con questa autorizzazione avanzata possono visualizzare un elenco di file e sottocartelle all’interno della cartella e il contenuto dei file.
  • Leggi attributi: Gli utenti con questa autorizzazione avanzata possono visualizzare gli attributi di una cartella o di un file, come ad esempio se è nascosto o di sola lettura.
  • Scrivi attributi: Gli utenti con questa autorizzazione avanzata possono cambiare gli attributi di un file o di una cartella.
  • Leggi attributi estesi: Gli utenti con questa autorizzazione avanzata possono visualizzare gli attributi estesi di una cartella o di un file, come autorizzazioni e orari di creazione e modifica.
  • Scrivi attributi estesi: Gli utenti con questa autorizzazione avanzata possono cambiare gli attributi estesi di una cartella o di un file.
  • Crea file o Scrivi dati: L’autorizzazione Crea file consentirà agli utenti di creare file all’interno della cartella con questa autorizzazione avanzata. Questa autorizzazione si applica solo alle cartelle. L’autorizzazione Scrivi dati consentirà agli utenti con questa autorizzazione avanzata di modificare il file e sovrascrivere il contenuto esistente. Questa autorizzazione si applica solo ai file.
  • Crea cartelle o Aggiungi dati: L’autorizzazione Crea cartelle consente agli utenti di creare cartelle all’interno di una cartella con questa autorizzazione avanzata. Questa autorizzazione si applica solo alle cartelle. L’autorizzazione Aggiungi dati consentirà agli utenti con questa autorizzazione avanzata di apportare modifiche alla fine del file, ma non possono cambiare, sovrascrivere o eliminare i dati esistenti. Questa autorizzazione si applica solo ai file.
  • Elimina: Gli utenti con questa autorizzazione avanzata possono eliminare la cartella o il file. Se gli utenti non hanno l’autorizzazione Elimina su una cartella o un file, possono comunque eliminare un oggetto se hanno l’autorizzazione Elimina sottocartelle e file sulla cartella padre.
  • Leggi autorizzazioni: Gli utenti con questa autorizzazione avanzata possono leggere le autorizzazioni di una cartella o di un file, come Controllo completo, Leggi e Scrivi.
  • Cambia autorizzazioni: Gli utenti con questa autorizzazione avanzata possono cambiare le autorizzazioni di un file o di una cartella.
  • Assumi proprietà: Gli utenti con questa autorizzazione avanzata possono assumere la proprietà del file o della cartella. Il proprietario del file o della cartella può sempre cambiare le sue autorizzazioni, indipendentemente da eventuali autorizzazioni esistenti che proteggono il file o la cartella.
  • Sincronizza: Gli utenti con questa autorizzazione avanzata possono usare l’oggetto per la sincronizzazione. Questa autorizzazione consentirà a un thread di attendere fino a quando l’oggetto non è nello stato segnalato. Questa autorizzazione non è presentata nell’Editor ACL.

Possiamo trovare tutte le informazioni su queste autorizzazioni utente eseguendo il seguente script PowerShell qui sotto:

[System.Enum]::GetNames([System.Security.AccessControl.FileSystemRights])

Le autorizzazioni NTFS possono essere esplicite o ereditate. Le autorizzazioni esplicite sono configurate individualmente, mentre le autorizzazioni ereditate sono ereditate dalla cartella padre.

La gerarchia per le autorizzazioni è la seguente:

  • Negazione esplicita
  • Autorizzazione esplicita
  • Negazione ereditata
  • Autorizzazione ereditata

Usa il comando Get-Acl per ottenere ACL per cartelle e file in PowerShell

Il primo comando PowerShell utilizzato per gestire le autorizzazioni di file e cartelle è Get-Acl; elenca tutte le autorizzazioni dell’oggetto.

Get-Acl \\fs1\shared\hr | fl

Un utente deve possedere sia la cartella di destinazione che quella di origine per copiare le autorizzazioni.

Get-Acl \\fs1\shared\hr | Set-Acl \\fs1\shared\hr

Usa il comando Set-Acl per impostare ACL per file e cartelle in PowerShell

Il comando PowerShell Set-Acl è utilizzato per cambiare il descrittore di sicurezza di un elemento specificato, come un file, una cartella o una chiave di registro; in altre parole, è utilizzato per modificare le autorizzazioni di file o cartella.

$acl = Get-Acl \\fs1\shared\hr

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01", "FullControl", "Allow")

$acl.SetAccessRule($AccessRule)

$acl | Set-Acl \\fs1\shared\hr

Usa il parametro -RemoveAccessRule per rimuovere le autorizzazioni utente in PowerShell

$acl = Get-Acl \\fs1\shared\hr

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01", "FullControl", "Allow")

$acl.RemoveAccessRule($AccessRule)

$acl | Set-Acl \\fs1\shared\hr

Disabilita o abilita l’eredità delle autorizzazioni in PowerShell

Per gestire un’eredità, possiamo usare il metodo SetAccessRuleProtection. Il metodo ha due parametri:

  • Il primo parametro è responsabile del blocco dell’eredità dalla cartella padre. Restituisce stati booleani: $true e $false.
  • Il secondo parametro è utilizzato per decidere se le attuali autorizzazioni ereditate vengono rimosse o mantenute. Anche questo restituisce stati booleani: $true e $false.
$acl = Get-Acl \\fs1\shared\hr

$acl.SetAccessRuleProtection($true, $false)

$acl | Set-Acl \\fs1\shared\hr

Ripristiniamo questa modifica e abilitiamo nuovamente l’eredità per la cartella:

$acl = Get-Acl \\fs1\shared\hr

$acl.SetAccessRuleProtection($false, $true)

$acl | Set-Acl \\fs1\shared\hr

Usa il metodo SetOwner per cambiare la proprietà di file e cartelle in PowerShell

Se vogliamo impostare un proprietario per una cartella, è necessario eseguire il metodo SetOwner.

$acl = Get-Acl \\fs1\shared\hr

$object = New-Object System.Security.Principal.Ntaccount("ENTERPRISE\User01")

$acl.SetOwner($object)

$acl | Set-Acl \\fs1\shared\hr
Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn