cacls (Change Access Control Lists) è una utility da riga di comando in ambiente Microsoft Windows (da NT/2000 in poi) il cui scopo è quello di elencare e variare i permessi o diritti access control list (ACL) su una directory, i suoi contenuti oppure su files. Una access control list, in un sistema operativo, è una lista di permessi per un oggetto del filesystem, come un file o una directory, la cui sicurezza possa essere gestita controllando chi possa accedere ai vari oggetti; è detta elenco di controllo di accesso e i singoli elementi che la compongono sono detti "ACE" (access control entries).

cacls non consente di impostare e variare il proprietario di un oggetto, mentre questa possibilità esiste nel suo successore icacls, da Windows Vista e Server 2003 SP2.

In Windows Powershell queste funzionalità sono coperte dalle cmdlets Set-Acl e Get-Acl.

SintassiModifica

   CACLS nome_del_file [/T] [/E] [/C] [/G utente:perm] [/R utente [...] ] [/P utente:<permessi> [...] ] [/D utente [...] ]

tra parentesi quadre gli switch opzionali; se avviato senza alcun parametro il comando cacls restituisce un brevissimo help.

  nome_del_file     oggetto di cui si Visualizzano o si variano i dati ACL.

Switch:

  /T            Varia gli ACL dei file indicati, nella directory attuale e ricorsivamente.
  /E            Varia ACL (non sostituisce).
  /R utente     Toglie i diritti di accesso dell'utente indicato (funziona solo in combinazione con /E).
  /C            Non si ferma in caso di errori access denied.
  /G utente:<permessi>  Assegna all'utente specificato i diritti di accesso, dove 
                <permessi> può assumere i seguenti valori: R  Lettura, W  Scrittura, C  Modifica (scrittura), F  Controllo completo
  /P utente:<permessi>  Sostituisci i diritti di accesso dell'utente specificato.
                <permessi> può essere: N  Nessuno
                             R  Lettura
                             W  Scrittura
                             C  Modifica (scrittura)
                             F  Controllo completo
  /D utente       Non permette l'accesso all'utente specificato.

È possibile utilizzare caratteri jolly (wildcards) per specificare più files in un comando. È possibile specificare più di un utente in un comando.

Legenda risultatiModifica

CI - Eredità contatore.
       ACE sarà ereditato dalle directory.
  OI - Eredità oggetto.
       ACE sarà ereditato dai file.
  IO - Solo eredità.
       ACE non sarà applicato al file/directory corrente.

CriticheModifica

L'utility cacls è considerata un editor di permissions depotenziato in Windows 2000 e successivi, mancante della possibilità di modificare molte delle impostazioni specifiche disponibili come gli ACEs ereditati. Microsoft ha risposto con utilities più nuove come xcacls.exe, xcacls.vbs, fileacl e, in Windows Vista, icacls, ognuna delle quali offre miglioramenti, ma sono tuttora considerate depotenziate e in alcuni casi, potenzialmente dannose[senza fonte]. Altri, come il team di SetACL hanno prodotto propri editor di permessi/diritti da riga di comando e scriptabili (ovverosia automatizzabili, utilizzabili in script, batch e macro).

La documentazione di un programma sostitutivo libero, gratuito e opensource per cacls ospitato su SourceForge, conosciuto come SetACL suggerisce che cacls sia stato inventato per Windows NT 4.0 e che non sia adeguato all'uso in sistemi operativi come Windows 2000 e successivi [1]. Più precisamente, si nota che in Windows 2000 è stata aggiunta l'ereditarietà delle ACL, ma né l'utility caclsxcacls realizzata in seguito da Microsoft sono state completamente aggiornate per supportarla. Il documento esprime l'opinione che Microsoft avrebbe dovuto rimuovere l'utility da Windows 2000 piuttosto che lasciarcela con il solo risultato di ottenere utenti che inconsapevolmente danneggiano internamente i descrittori di sicurezza del volume (attraverso l'impostazione scorretta dell'ordine degli ACE) in un modo che è tanto difficoltoso da scoprire quanto da correggere.

La documentazione di questo progetto spiega che utilizzando il comando nativo cacls, per applicare permissions ad un albero di directories, crea una copia dell'ACL per ogni singolo file e cartella e le applica individualmente, comportamento corretto sotto Windows NT 4.0, ma dannoso in Windows 2000 e successivi sistemi, dove il comportamento che ci si attende è quello di creare un singolo ACL etichettato come "ereditabile" in modo che i cambiamenti futuri si propaghino automaticamente.

NoteModifica

Voci correlateModifica

Collegamenti esterniModifica