Se sei un professionista IT e ti trovi a lottare con l’impostazione dei permessi di sistema dei file per la tua organizzazione, sei fortunato. La gestione dei permessi NTFS utilizzando un’interfaccia grafica utente richiede molto tempo, soprattutto quando si lavora con molti utenti o gruppi. Fortunatamente, abbiamo PowerShell per migliorare tutto questo. Come? Con il modulo Microsoft.PowerShell.Security.
PowerShell ha due cmdlet specifici per lavorare con gli ACL chiamati Get-ACL
e Set-ACL
. Questi due cmdlet possono recuperare e assegnare qualsiasi numero di permessi NTFS di cui imparerai tutto in questo tutorial. Se desideri diventare più efficiente e immediatamente utile nella gestione dei permessi NTFS, continua a leggere.
Nessun tempo per leggere? Nessun problema! Guarda questo video accompagnatore di TechSnips.io di Anthony Howell qui sotto:
Gestisci e segnala Active Directory, Exchange e Microsoft 365 con ManageEngine ADManager Plus. Scarica la versione di prova gratuita!
Prerequisiti
Per seguire gli esempi in questo tutorial, hai bisogno di:
- PowerShell 7 o Windows PowerShell 5.1
- A basic understanding of NTFS file and folder permissions
Creazione di file/cartelle per testare
Questo tutorial sarà costruito attorno a un semplice “laboratorio” o una singola cartella. Imparerai come lavorare con le autorizzazioni NTFS in PowerShell passo dopo passo; non è necessario alcun lavoro extra da parte tua.
- Per iniziare, apri una sessione di PowerShell come amministratore.
- Crea una cartella vuota chiamata Share da qualche parte nel tuo filesystem. Negli esempi seguenti, supponiamo che la cartella si trovi in C:\Share. Questo renderà gli esempi più brevi e più facili da seguire. Puoi creare questa directory copiando il codice seguente:
3. Crea una cartella chiamata C:\Share\Assets.
4. Crea un file chiamato client_list.txt nella cartella C:\Share.
5. Crea un file chiamato client_projects.txt nella cartella C:\Share.
6. Successivamente, assegna una variabile per il percorso della cartella Share. Creare variabili riduce la digitazione e rende il percorso più facile da riutilizzare. Supponendo che tu stia usando C:\Share, copia il seguente esempio di codice nella tua sessione di PowerShell:
7. Premi Invio. Ora hai una cartella vuota e hai salvato quel percorso come una variabile.
Visualizzazione delle autorizzazioni NTFS con Get-Acl
PowerShell ti consente di visualizzare rapidamente le autorizzazioni NTFS utilizzando il cmdlet Get-Acl
. Nelle sezioni seguenti, imparerai come utilizzare il cmdlet per visualizzare le autorizzazioni NTFS per un file o una cartella.
Un elenco di controllo degli accessi (ACL è un elenco di voci di controllo degli accessi (ACE). Ogni ACE in un ACL identifica un trustee e specifica i diritti di accesso consentiti, negati o verificati. Il descrittore di sicurezza per un oggetto securizzabile può contenere due tipi di ACL: una DACL e una SACL.
Visualizzazione delle autorizzazioni NTFS
Tradizionalmente, si visualizza un ACL facendo clic con il pulsante destro del mouse sulla cartella C:\Share, cliccando su Proprietà, selezionando la scheda Sicurezza e cliccando sul pulsante Avanzate. Puoi vedere un esempio di come l’interfaccia utente visualizza le autorizzazioni di seguito.

Nell’esempio sopra ci sono alcune voci di autorizzazione e proprietà numerate. Esaminale attentamente poiché vedrai il confronto più avanti in questa sezione.
Utilizzando la directory che hai creato in precedenza, visualizza le autorizzazioni NTFS attuali per la directory utilizzando Get-Acl
.
Ora dovresti vedere il percorso, il proprietario e i dettagli del livello di accesso nella seguente schermata.

La proprietà Access
mostrata nella precedente schermata contiene informazioni aggiuntive riguardanti l’ACL, ma scorre fuori dallo schermo come indicato dai puntini di sospensione alla fine di FullControl sopra. C’è un modo migliore per visualizzare questa proprietà racchiudendo il comando precedente tra parentesi tonde o parentesi per visualizzare le proprietà dell’oggetto Access. Cerca solo la proprietà Access
su questo oggetto eseguendo il codice seguente.
Il comando precedente può anche essere espresso utilizzando l’oggetto
Access
e utilizzando il parametro-ExpandProperties
:Get-Acl -Path $dir | Select-Object -ExpandProperty Access
Come mostrato nella schermata seguente, l’output è formattato in modo da rendere più facile visualizzare le singole proprietà Access
:

Visualizzare le proprietà di accesso nel modo sopra descritto può far scorrere rapidamente l’output del terminale se si hanno molte ACE (Access Control Entities). Ogni entità contiene le proprietà FileSystemRights, AccessControlType, IdentityReference, IsInherited, InheritenceFlags e PropagationFlags. Per rendere il tutto un po’ più leggibile, inviare gli oggetti a Format-Table -AutoSize
. Eseguire il comando seguente.
Come si può vedere nella schermata seguente, le proprietà di accesso sono più pulite e organizzate quando si utilizza Format-Table -AutoSize
:

Esamina le proprietà e il numero di colonna. Nota che queste sono le stesse proprietà che hai visto nell’interfaccia grafica all’inizio del tutorial.

Filtraggio degli oggetti di accesso
Ci saranno momenti in cui vorrai essere più preciso nel trovare le autorizzazioni NTFS. Per farlo, puoi filtrare per un determinato ACE, o trovare risultati particolari che hanno autorizzazioni NTFS ereditate o esplicite all’interno di un ACL utilizzando PowerShell. Invece di scorrere la finestra del terminale linea per linea con gli occhi, puoi utilizzare il cmdlet Where-Object
per effettuare un filtraggio.
Nell’esempio di codice seguente vengono filtrati gli oggetti che non ereditano le autorizzazioni NTFS. Ciò viene fatto utilizzando Where-Object
con l’operatore -Not
che guarda l’oggetto corrente nella pipeline $_.
la proprietà dell’oggetto membro di IsInherited
, che indica se l’ACE è il risultato di un’ereditarietà e non è impostato esplicitamente:
Ricorda di indirizzare gli oggetti a
Format-Table -AutoSize
o l’output scorrerà sullo schermo. Fai di questo una nuova abitudine; mi ringrazierai dopo!
Utilizzando il codice seguente, sostituisci 'USERNAME'
con un altro nome utente per visualizzare risultati specifici:
Ecco un esempio di come potrebbero apparire i risultati:

Nell’esempio precedente vengono mostrati tutti gli ACE in cui la proprietà IdentityReference
è l’utente o il gruppo di sicurezza a cui sono assegnate le autorizzazioni.
Procedi e metti in pratica ciò che hai imparato finora su
Get-Acl
. Esamina alcuni file e cartelle diverse sul tuo sistema. Questo ti aiuterà a vedere molti diversi descrittori di sicurezza per contesti diversi. Ciò ti aiuterà anche a sviluppare una certa memoria muscolare.
Alziamo un po’ il livello e assegniamo le autorizzazioni NTFS.
Modifica delle autorizzazioni NTFS con Set-Acl
Ora che puoi visualizzare le autorizzazioni NTFS, è il momento di assegnare e modificare le autorizzazioni NTFS usando PowerShell. Il cmdlet Set-Acl
rende tutto ciò possibile. Le sezioni seguenti mostreranno come utilizzare questo cmdlet in combinazione con Get-Acl
per copiare, modificare l’ereditarietà e rimuovere le autorizzazioni NTFS da un file o una cartella.
Copia delle autorizzazioni NTFS
Potresti avere un file o una cartella che contiene il livello appropriato di autorizzazioni NTFS che desideri utilizzare per un nuovo ACL. Puoi risparmiare tempo copiando le autorizzazioni da un file o una cartella all’altro.
La copia di ACL/ACE esistenti può ridurre gli errori umani durante la configurazione delle autorizzazioni NTFS, a condizione che il descrittore di sicurezza da cui stai copiando sia corretto e appropriato per la destinazione stessa. Come si suol dire, “Con grande potere viene grande responsabilità”. Tienilo presente.
Considera la seguente schermata. Qui stai dando un’occhiata all’ACL di un file in C:\Share chiamato Client_List.txt. L’ACL ha il livello corretto di autorizzazioni NTFS che desideri:

Ora, considera la schermata successiva. Questa volta stai dando un’occhiata all’ACL di un altro file in C:\Share chiamato Client_Projects.txt. Questo file non ha le autorizzazioni NTFS desiderate:

Hai bisogno di copiare le autorizzazioni NTFS da Client_List.txt a Client_Projects.txt. Come puoi fare ciò? Modificherai le autorizzazioni ottenendo l’ACL da Client_List.txt e utilizzando il cmdlet Set-Acl
con il parametro -AclObject
. Quando esegui il codice di seguito, l’intero ACL da Client_List.txt viene copiato su Client_Projects.txt :
Come puoi vedere nella schermata numerata qui sotto, il file Client_Projects.txt ora ha gli stessi descrittori di sicurezza di Client_list.txt.
- Ottieni un ACL esistente da un file esistente.
- Imposta l’oggetto ACL copiato su un file o una cartella.
- Verifica che l’ACL sia stata copiata correttamente sul file o sulla cartella.

Ora vedi che l’ACL è identico per il file Client_Projects.txt come il file Client_List.txt nella colonna IdentityReference con AccessControlType impostato su Allow. Puoi utilizzare la stessa tecnica anche per assegnare autorizzazioni NTFS alle cartelle.
Aggiunta di autorizzazioni NTFS
Nella sezione precedente, hai copiato le autorizzazioni NTFS esistenti da un oggetto file a un altro. Questa volta creerai le autorizzazioni NTFS da zero. Questo ti permetterà di assegnare autorizzazioni NTFS a un file o a una cartella.
Per cominciare, assegna delle variabili da utilizzare per creare un nuovo oggetto utilizzato da Set-Acl
. Farlo in questo modo renderà più semplice l’esecuzione del comando quando sarà il momento. Il codice qui sotto costruisce le proprietà di un ACE che diventeranno le autorizzazioni NTFS assegnate a un file o a una cartella:
Successivamente, assegna un’altra variabile che otterrà l’ACL iniziale per la cartella Assets
. Quindi, utilizzando il membro di tipo metodo AddAccessRule
, aggiungi una regola di accesso utilizzando la variabile $ACE
:
Ora sei pronto per aggiungere il nuovo ACE appena creato all’ACL di C:\Share\Assets
. Utilizza ora Set-Acl
per applicare questo nuovo ACE alla directory corretta:
Successivamente, verifica che l’utente che hai scelto abbia le autorizzazioni per visualizzare la directory necessaria utilizzando il codice qui sotto:
Rimuovere le autorizzazioni NTFS
Arriverà il momento in cui sarà necessario rimuovere le autorizzazioni NTFS da una risorsa.
Per rimuovere le autorizzazioni NTFS, inizia ottenendo l’ACL corrente per il file o la cartella. In questo esempio, il file è Client_Projects.txt
:
Successivamente, filtra per l’ACE specifico che desideri rimuovere. Puoi farlo richiamando gli oggetti membri $Acl
e inviando i risultati a Where-Object
e a qualche operando:
Successivamente, utilizza la variabile $Acl
, che contiene i descrittori di sicurezza ACL correnti, richiama il metodo RemoveAccessRule
e passa l’oggetto ACE creato in precedenza utilizzando il cmdlet New-Object
al metodo RemoveAccessRule()
. In questo modo verrà rimossa l’entrata:
È importante ricordare che hai modificato un ACL esistente qui e non hai ancora applicato le modifiche.
Per rendere permanenti tali modifiche, esegui il cmdlet Set-Acl
, fornendo i parametri -Path
e -AclObject
con i valori appropriati di "$dir\Client_Projects.txt"
e $Acl
. Una volta inserito il comando di seguito, premi Invio:
Gestisci e genera report su Active Directory, Exchange e Microsoft 365 con ManageEngine ADManager Plus. Scarica la versione di prova gratuita!
Sommario
In questo articolo, hai imparato a gestire le autorizzazioni NTFS con PowerShell. Hai imparato a usare i due cmdlet, Get-Acl
e Set-Acl
, e cosa fanno con le autorizzazioni NTFS.
Hai anche imparato come utilizzare i filtri per individuare uno specifico ACE in un ACL da utilizzare nei cmdlet sopra menzionati. Con un po’ di pratica, gestirai facilmente più richieste di autorizzazioni NTFS che mai prima.