cacls
cacls
a icacls
jsou programy pro prostředí příkazového řádku v Microsoft Windows sloužící pro zobrazování a modifikaci popisovačů zabezpečení (resp. Access control list – ACL) souborů a složek. ACL je seznam oprávnění pro práci s objektem (např. souborem nebo složkou), který určuje, komu jsou povoleny jaké operace s objektem.
cacls
Původní program pro Windows NT 3.5 a pozdější operační systémy rodiny Windows NT, cacls.exe
, je v současnosti zastaralý. Firma Microsoft vytvořila několik novějších programů, které poskytují podporu pro změny zavedené v systému souborů NTFS od verze 3.0 (některé jsou již také zastaralé):
xcacls.exe
[1][2][3][4] – dostupný od Windows 2000; přidává nové vlastnosti jako nastavení oprávnění Execute, Delete a Take Ownershipxcacls.vbs
[5][6]fileacl.exe
[7]icacls.exe
– od Windows Server 2003 SP2[8][9]SubInAcl.exe
– program z Resource Kitu pro nastavování a nahrazování oprávnění různým typům objektů včetně souborů, služeb a položek v registrech- cmdlety
Get-Acl
[10] aSet-Acl
[11]) ve Windows PowerShell
icacls
Počínaje Windows Server 2003 Service Pack 2 je k dispozici řádkový příkaz icacls
, který umožňuje zobrazování a změny ACLs souborů a složek; jejich ukládání do souboru a zpětné načítání; ve Windows Vista a pozdější verzích podporuje také nastavování úrovní integrity a vlastnictví. Není však úplnou náhradou za cacls
; mimo jiné nepodporuje syntaxi Security Descriptor Definition Language (SDDL) přímo v parametrech příkazového řádku (pouze volbou /restore). Zkratka icacls znamená Integrity Control Access Control List.
Syntaxe
DAC je Discretionary Access Control, DACL Discretionary Access control list:
ICACLS name /save aclfile [/T] [/C] [/L] [/Q] stores the DACLs for the files and folders that match the name into aclfile for later use with /restore. Note that SACLs, owner, or integrity labels are not saved. ICACLS directory [/substitute SidOld SidNew [...]] /restore aclfile [/C] [/L] [/Q] applies the stored DACLs to files in directory. ICACLS name /setowner user [/T] [/C] [/L] [/Q] changes the owner of all matching names. This option does not force a change of ownership; use the takeown.exe utility for that purpose. ICACLS name /findsid Sid [/T] [/C] [/L] [/Q] finds all matching names that contain an ACL explicitly mentioning Sid. ICACLS name /verify [/T] [/C] [/L] [/Q] finds all files whose ACL is not in canonical form or whose lengths are inconsistent with ACE counts. ICACLS name /reset [/T] [/C] [/L] [/Q] replaces ACLs with default inherited ACLs for all matching files. ICACLS name [/grant[:r] Sid:perm [...]] [/deny Sid:perm [...]] [/remove[:g|:d]] Sid [...]] [/T] [/C] [/L] [/Q] [/setintegritylevel Level:policy [...]] /grant[:r] Sid:perm grants the specified user access rights. With :r, the permissions replace any previouly granted explicit permissions. Without :r, the permissions are added to any previously granted explicit permissions. /deny Sid:perm explicitly denies the specified user access rights. An explicit deny ACE is added for the stated permissions and the same permissions in any explicit grant are removed. /remove[:[g|d]] Sid removes all occurrences of Sid in the ACL. With :g, it removes all occurrences of granted rights to that Sid. With :d, it removes all occurrences of denied rights to that Sid. /setintegritylevel [(CI)(OI)]Level explicitly adds an integrity ACE to all matching files. The level is to be specified as one of: L[ow] M[edium] H[igh] Inheritance options for the integrity ACE may precede the level and are applied only to directories. /inheritance:e|d|r e - enables inheritance d - disables inheritance and copy the ACEs r - remove all inherited ACEs Note: Sids may be in either numerical or friendly name form. If a numerical form is given, affix a * to the start of the SID. /T indicates that this operation is performed on all matching files/directories below the directories specified in the name. /C indicates that this operation will continue on all file errors. Error messages will still be displayed. /L indicates that this operation is performed on a symbolic link itself versus its target. /Q indicates that icacls should supress success messages. ICACLS preserves the canonical ordering of ACE entries: Explicit denials Explicit grants Inherited denials Inherited grants perm is a permission mask and can be specified in one of two forms: a sequence of simple rights: N - no access F - full access M - modify access RX - read and execute access R - read-only access W - write-only access D - delete access a comma-separated list in parentheses of specific rights: DE - delete RC - read control WDAC - write DAC WO - write owner S - synchronize AS - access system security MA - maximum allowed GR - generic read GW - generic write GE - generic execute GA - generic all RD - read data/list directory WD - write data/add file AD - append data/add subdirectory REA - read extended attributes WEA - write extended attributes X - execute/traverse DC - delete child RA - read attributes WA - write attributes inheritance rights may precede either form and are applied only to directories: (OI) - object inherit (CI) - container inherit (IO) - inherit only (NP) - don't propagate inherit (I) - permission inherited from parent container Examples: icacls c:\windows\* /save AclFile /T - Will save the ACLs for all files under c:\windows and its subdirectories to AclFile. icacls c:\windows\ /restore AclFile - Will restore the Acls for every file within AclFile that exists in c:\windows and its subdirectories. icacls file /grant Administrator:(D,WDAC) - Will grant the user Administrator Delete and Write DAC permissions to file. icacls file /grant *S-1-1-0:(D,WDAC) - Will grant the user defined by sid S-1-1-0 Delete and Write DAC permissions to file.
Použití
Následující příkaz
icacls .
vypíše všechny popisovače zabezpečení aktuálního adresáře:
. NULL SID:(DENY)(Rc,S,X,DC) OBCHOD\novakk:(F) OBCHOD\Domain Users:(Rc,S,RA) OBCHOD\Domain Users:(R) Everyone:(Rc,S,RA)
V tomto případě má prázdný sid NULL SID
odebrána (DENY
) práva read control, synchronize, execute/traverse a delete child; uživatel novakk
v doméně OBCHOD
má plný přístup (full access - F
); skupina Domain Users
v doméně OBCHOD
má dva záznamy, jeden s právy read control, synchronize a read attributes, druhý s právem read-only access; skupina Everyone
má práva read control, synchronize a read attributes. Příkaz
icacls . /deny Everyone:(RC)
přidá uživateli Everyone
zákaz read control a synchronize a zároveň z grantovaných práv vypustí explicitně zadané právo read control; ve výsledku bude původní záznam u příslušného adresáře pro skupinu Everyone
nahrazen dvěma záznamy:
Everyone:(DENY)(Rc,S) Everyone:(S,RA)
Další příkaz změní u všech souborů v aktuálním adresáři popisovače zabezpečení pro skupinu Everyone
na R
, což umožní všem uživatelům čtení těchto souborů:
icacls *.* /grant:r Everyone:(R)
Vymazání všech práv garantujících i zakazujících přístup uživateli CREATOR OWNER
u všech souborů v aktuálním adresáři lze provést dvojicí příkazů:
icacls *.* /remove:g "CREATOR OWNER":(R)
icacls *.* /remove:d "CREATOR OWNER":(R)
Problémy
Všechny známé verze icacls
mají vážnou chybu[12]; pro objekty s chráněnými ACL:
- ignoruje tuto ochranu,
- tuto ochranu resetuje/ruší,
- dědičná oprávnění nadřízeného objektu aplikuje/propaguje do jeho potomka a potomků jeho potomka.
Odkazy
Reference
V tomto článku byl použit překlad textu z článku Cacls na anglické Wikipedii.
- How to use Xcacls.exe to modify NTFS permissions (Revision: 4.5) [online]. Microsoft Corporation, 2007-03-02 [cit. 2011-12-24]. Dostupné online.
- Xcacls syntax [online]. Microsoft Corporation, 2003-03-28 [cit. 2012-10-30]. Dostupné online.
- Windows 2000 Resource Kit Tool: Xcacls.exe [online]. Microsoft Corporation, 2002-05-15 [cit. 2011-12-24]. Dostupné online.
- Windows XP Service Pack 2 Support Tools [online]. Microsoft Corporation, 2004-08-10 [cit. 2011-12-24]. Dostupné online.
- How to use Xcacls.vbs to modify NTFS permissions (Revision: 2.4) [online]. Microsoft Corporation, 2006-10-30 [cit. 2011-12-24]. Dostupné online.
- Extended Change Access Control List Tool (Xcacls) [2004-07-02]. Microsoft Corporation [cit. 2011-12-24]. Dostupné online.
- FILEACL v3.0.1.6 [online]. Microsoft, 2004-03-23 [cit. 2017-10-08]. Dostupné v archivu pořízeném dne 2008-04-16.
- The Icacls.exe utility is available for Windows Server 2003 with Service Pack 2 (Revision: 4.0) [online]. Microsoft Corporation, 2011-10-09 [cit. 2011-12-24]. Dostupné online.
- Icacls [online]. Microsoft Corporation, 2007-09-28 [cit. 2011-12-24]. Dostupné online.
- Get-Acl [online]. Microsoft Corporation, 2010-04-21 [cit. 2012-10-31]. Dostupné online.
- Set-Acl [online]. Microsoft Corporation, 2010-04-21 [cit. 2012-10-31]. Dostupné online.
- ICACLS.EXE ignores and destroys SE_DACL_PROTECTED/SE_SACL_PROTECTED
Literatura
- Cacls [online]. Microsoft Corporation [cit. 2011-12-24]. Dostupné online.
- Xcacls Overview [online]. Microsoft Corporation, 2003-03-28 [cit. 2011-12-24]. Dostupné online.
- DACLs and ACEs [online]. Microsoft Corporation, 2011-11-15 [cit. 2011-12-24]. Dostupné online.
- CACLS.exe [online]. SS64.com [cit. 2011-12-24]. Dostupné online.
- Microsoft DOS cacls command [online]. [cit. 2011-12-24]. Dostupné online.
- BRADLEY, Tony. Úvod na Windows Integrity Control [online]. 2010-11-02. Dostupné online.
- The Security Descriptor Definition Language of Love (Part 1)
Související články
- SetACL
- chmod