cacls

programy příkazové řádky Microsoft Windows
(přesměrováno z Icacls)

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í, který určuje, jakým uživatelům a skupinám uživatelů jsou povoleny jaké operace s objektem (souborem nebo složkou).

cacls editovat

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 Ownership
  • xcacls.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] a Set-Acl[11] ve Windows PowerShell

icacls editovat

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 editovat

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í editovat

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 editovat

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 editovat

Reference editovat

V tomto článku byl použit překlad textu z článku Cacls na anglické Wikipedii.

  1. How to use Xcacls.exe to modify NTFS permissions (Revision: 4.5) [online]. Microsoft Corporation, 2007-03-02 [cit. 2011-12-24]. Dostupné online. 
  2. Xcacls syntax [online]. Microsoft Corporation, 2003-03-28 [cit. 2012-10-30]. Dostupné online. 
  3. Windows 2000 Resource Kit Tool: Xcacls.exe [online]. Microsoft Corporation, 2002-05-15 [cit. 2011-12-24]. Dostupné online. 
  4. Windows XP Service Pack 2 Support Tools [online]. Microsoft Corporation, 2004-08-10 [cit. 2011-12-24]. Dostupné online. 
  5. How to use Xcacls.vbs to modify NTFS permissions (Revision: 2.4) [online]. Microsoft Corporation, 2006-10-30 [cit. 2011-12-24]. Dostupné online. 
  6. Extended Change Access Control List Tool (Xcacls) [2004-07-02]. Microsoft Corporation [cit. 2011-12-24]. Dostupné online. 
  7. FILEACL v3.0.1.6 [online]. Microsoft, 2004-03-23 [cit. 2017-10-08]. Dostupné v archivu pořízeném dne 2008-04-16. 
  8. 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. 
  9. Icacls [online]. Microsoft Corporation, 2007-09-28 [cit. 2011-12-24]. Dostupné online. 
  10. Get-Acl [online]. Microsoft Corporation, 2010-04-21 [cit. 2012-10-31]. Dostupné online. 
  11. Set-Acl [online]. Microsoft Corporation, 2010-04-21 [cit. 2012-10-31]. Dostupné online. 
  12. ICACLS.EXE ignores and destroys SE_DACL_PROTECTED/SE_SACL_PROTECTED

Literatura editovat

Související články editovat