ICACLS

(da Integrity Change Access Control Lists)

ICACLS è uno strumento potente per gestire e modificare le autorizzazioni NTFS (controllo degli accessi) su file e cartelle. È stato introdotto in Windows Vista per sostituire il comando CACLSCACLS ed offre funzionalità più avanzate: in particolare, la possibilità di gestire i livelli di integrità.

Sintassi per archiviare le DACL (liste di controllo di accesso discrezionale) per i file e le cartelle corrispondenti a quelli specificati per consentirne un successivo utilizzo con /RESTORE, senza salvare i proprietari, le etichette di integrità e le SACL (liste di controllo di accesso di sicurezza):

ICACLS nomi /SAVE file_acl [/T] [/C] [/L] [/Q]

Dove (vedi sotto):

  • nomi - Specifica uno o più file o cartelle di cui si vogliono salvare le DACL.
  • /SAVE file_acl - Specifica il nome del file nel quale archiviare le DACL associate a nomi.

 

Sintassi per applicare le DACL archiviate ai file e alle sottocartelle contenuti nella cartella specificata:

ICACLS cartella [/SUBSTITUTE vecchio_sid nuovo_sid [...]] /RESTORE file_acl [/C] [/L] [/Q]

Dove (vedi sotto):

  • cartella - Specifica la cartella ai cui file e sottocartelle si vogliono applicare le DACL archiviate.
  • /SUBSTITUTE vecchio_sid nuovo_sid [...] - Sostituisce i file o le cartelle con l'ID di sicurezza vecchio_sid con nuovo_sid.
  • /RESTORE file_acl - Specifica il nome del file nel quale sono state archiviate le DACL.

 

Sintassi per cambiare il proprietario per i nomi corrispondenti, senza forzare la modifica del proprietario:

ICACLS nomi /SETOWNER utente [/T] [/C] [/L] [/Q]

Dove (vedi sotto):

  • nomi - Specifica uno o più file o cartelle di cui si vuole modificare il proprietario.
  • /SETOWNER utente - Specifica il nome utente del nuovo proprietario.

 

Sintassi per trovare tutti i nomi corrispondenti che contengono un'ACL (lista di controllo di accesso) associata a un SID (ID di sicurezza) specificato:

ICACLS nomi /FINDSID sid [/T] [/C] [/L] [/Q]

Dove (vedi sotto):

  • nomi - Specifica uno o più file o cartelle di cui da analizzare.
  • /FINDSID sid - Specifica il SID di cui si vuole ottenere l'ACL.

 

Sintassi per trovare tutti i file le cui ACL non sono in forma canonica o le cui lunghezze non sono coerenti con il numero delle voci di controllo di accesso:

ICACLS nomi /VERIFY [/T] [/C] [/L] [/Q]

Dove (vedi sotto):

  • nomi - Specifica uno o più file o cartelle per i quali eseguire l'operazione.

 

Sintassi per ripristinare gli ACL ereditati predefiniti in tutti i file corrispondenti.

ICACLS nomi /RESET [/T] [/C] [/L] [/Q]

Dove (vedi sotto):

  • nomi - Specifica uno o più file o cartelle per i quali eseguire l'operazione.

 

Sintassi per impostare o cambiare i diritti di accesso (ovvero i permessi o le autorizzazioni) per i file specificati:

ICACLS nomi [/GRANT[:R] sid:perm [...]] [/DENY sid:perm [...]] [/REMOVE[:G|:D] sid [...]] [/T] [/C] [/L] [/Q] [/SETINTEGRITYLEVEL [(CI)][(OI)]livello] [/INHERITANCE{:E|:D|:R}]

Dove (vedi sotto):

  • nomi - Specifica uno o più file o cartelle per i quali manipolare i diritti di accesso.
  • /GRANT[:R] sid:perm [...] - Specifica uno o più ID di sicurezza associati agli utenti e i relativi permessi da concedere nell'ACL. Con :R, le autorizzazioni sostituiscono tutte quelle concesse in precedenza. Di default, i nuovi permessi si aggiungono ai precedenti.
  • /DENY sid:perm [...] - Specifica uno o più ID di sicurezza associati agli utenti e i relativi permessi da negare. All'autorizzazione negata è associata una voce di controllo di accesso specifica (non è cioè una semplice assenza di permesso).
  • /REMOVE[:G|:D] sid [...] - Specifica uno o più ID di sicurezza associati agli utenti di cui si vogliono annullare tutti i permessi nell'ACL. :G si riferisce ai permessi concessi e :D ai permessi negati.
  • /SETINTEGRITYLEVEL [(CI)][(OI)]livello - Aggiunge una voce di controllo di accesso di integrità a tutti i file corrispondenti. Al posto di livello specificare:
    • L - Basso (low);
    • M - Medio (medium);
    • H - Alto (high).
    Invece, (CI) e (OI) sono opzioni che permettono di cambiare il tipo di ereditarietà delle cartelle.
  • /INHERITANCE{:E|:D|:R} - Specifica se tenere conto dell'ereditarietà delle cartelle nell'operazione.
    • :E - Abilita l'ereditarietà;
    • :D - Disabilita l'ereditarietà, copiando quindi le voci di controllo di accesso;
    • :R - Rimuove tutte le voci di controllo di accesso ereditate.

Per tutte le funzioni di ICACLS, il SID può essere espresso in forma numerica o come nome. Se si utilizza la forma numerica, sarà necessario un asterisco * all'inizio del SID. Inoltre:

  • /T - Estende l'operazione su tutti i file e le sottocartelle contenute nelle cartelle specificate.
  • /C - Continua l'operazione anche in caso di errori, che verranno comunque visualizzati.
  • /L - Esegue l'operazione sul collegamento simbolico anziché sul file o sulla cartella a cui si riferisce.
  • /Q - Nasconde i messaggi relativi alle operazioni riuscite.
  • perm - È una maschera di autorizzazione che può essere specificata in due modi diversi.
    Sequenza di diritti d'accesso semplici (autorizzazioni di base):
    • N - Nessun permesso;
    • F - Accesso completo;
    • M - Permesso di modifica;
    • RX - Permesso di lettura ed esecuzione;
    • R - Permesso di lettura;
    • W - Permesso di scrittura;
    • D - Permesso di eliminazione.
    Elenco delimitato da virgole di diritti d'accesso specifici tra parentesi (autorizzazioni avanzate):
    • DE - Eliminazione;
    • RC - Lettura DAC (controlli d'accesso discrezionali, cioè può leggere i permessi);
    • WDAC - Scrittura DAC (può cambiare i permessi);
    • WO - Proprietario scrittura (diventa proprietario);
    • S - Sincronizzazione;
    • AS - Sicurezza sistema di accesso;
    • MA - Diritti massimi concedibili;
    • GR - Lettura generica;
    • GW - Scrittura generica;
    • GE - Esecuzione generica;
    • GA - Tutti i diritti d'accesso generici;
    • RD - Lettura dati/elenco cartelle;
    • WD - Scrittura dati/aggiunta di file;
    • AD - Aggiunta dati/aggiunta di sottocartelle;
    • REA - Lettura attributi estesi;
    • WEA - Scrittura attributi estesi;
    • X - Esecuzione/transito (quest'ultimo è il diritto di attraversare/aprire la cartella);
    • DC - Eliminazione figli (cioè eliminazione di sottocartelle e file, se gli attributi di questi lo permettono);
    • RA - Lettura attributi;
    • WA - Scrittura attributi.
    Entrambe le forme possono essere precedute dai diritti di ereditarietà, applicabili solo alle cartelle:
    • (OI) - Ereditarietà oggetto: gli oggetti in questo contenitore erediteranno questa voce di controllo d'accesso;
    • (CI) - Ereditarietà contenitore: i contenitori all'interno di questo contenitore erediteranno questa voce di controllo d'accesso;
    • (IO) - Solo ereditarietà: le voci di controllo d'accesso sono ereditate dal contenitore genitore, ma non sono applicate all'oggetto stesso;
    • (NP) - Non propagare ereditarietà: le voci di controllo d'accesso per i contenitori e gli oggetti sono ereditate dal contenitore genitore, ma non si propagano ai contenitori nidificati;
    • (I) - Autorizzazione ereditata da contenitore genitore.

Notare che il comando mantiene l'ordinamento canonico delle voci di controllo di accesso: negazioni esplicite, permessi espliciti, negazioni ereditate, permessi ereditati.

Esempi:

1. Salva nel file pippo9 le ACL per tutti i file nel percorso C:\mozica e nelle relative sottocartelle.

icacls C:\mozica\* /save pippo9 /t

 

2. Ripristina le ACL per i file specificati in pippo9 ed esistenti in C:\mozica e nelle sottocartelle.

icacls c:\mozica\ /restore pippo9

 

3. Concede all'utente MegadirettoreGalattico i diritti di scrittura DAC e di eliminazione per il file megaditta.txt.

icacls megaditta.txt /grant MegadirettoreGalattico:(DE,WDAC)

 

Approfondimento:

È possibile trovare velocemente il proprio nome utente dalla variabile d'ambiente USERNAME (vedi ECHOECHO):

echo %username%

Commenti