Cacls
# Cacls

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.

## Sintassi

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

Switch:

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

## Critiche

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. 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. Più precisamente, si nota che in Windows 2000 è stata aggiunta l'ereditarietà delle ACL, ma né l'utility cacls né xcacls 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.

