iCACLS Vista Command Prompt Tool to Manage ACLs

Prior to Windows Vista, CACLS (Change Access Control Lists) is used to manage to complicated NTFS permissions, complement the Folder Options’ Security tab which offers an easy way to make minor permissions tweaks. In Windows Vista, CACLS which has drawback of difficult to use to set inherited permissions on a folder is been deprecated and been replaced with iCACLS. iCACLS expands the capabilities of CACLS to be able to display, modify, backup or restore contents of discretionary ACLs for files and directories. iCACLS command line utility also able to show and set mandatory labels of an object for interaction with WIC (Windows Integrity Control) which most noticeable in the Internet Explorer Protected Mode which automatically Low integrity to Internet objects to protect the operating system from malicious web content in Internet Explorer.

iCACLS syntaxes, parameters or switches list

ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
store the the acls for the all matching names into aclfile for later use with /restore.

ICACLS directory [/substitute SidOld SidNew [...]] /restore aclfile [/C] [/L] [/Q]
applies the stored acls to files in directory.

ICACLS name /setowner user [/T] [/C] [/L] [/Q]
changes the owner of all matching names.

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 for 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.

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:
F – full access
M – modify access
RX – read and execute access
R – read-only access
W – write-only access

a comma-separated list in parenthesis of specific rights:
D – 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

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

icacls c:\windows\explorer.exe
– View the discretionary access list and integrity level

icacls file /setintegritylevel H
– Modify mandatory integrity level of an object to High

7 Responses to “iCACLS Vista Command Prompt Tool to Manage ACLs”

  1. trucknut
    January 15th, 2009 19:49
    7

    …is there any way to recover/reset the file permissions for a file who has lost its ACL and says its owner is unknown? Everything I have tried keeps saying access denied.

    icacls says “access denied”

    takeown says “access denied”

    BPACler.exe utility (from http://www.bpsoftware.com/blog/) doesnt show any ACL settings at all for the problem file

    Microsoft KB947870 (http://support.microsoft.com/kb/947870) describes the problem exactly but says it applies to Server 2008 only while I’m having the error with Vista Ultimate 32bit.

  2. [AYUDA] Me re contra cago en el read only. - P
    January 2nd, 2009 20:27
    6

    [...] el OS, tenes estos problemas que comentas. Fijate si podes modificar los permisos con icacls (iCACLS Vista Command Prompt Tool to Manage ACLs My Digital Life), pero tene cuidado que asi como podes arreglar una cosa podes romper todo… (Asignale full [...]

  3. Add/Remove permissions via command prompt help - Overclock.net - Overclocking.net
    October 18th, 2008 10:52
    5

    [...] kinds of different combinations of the commands that, atleast to me, make sense. I found this site, http://www.mydigitallife.info/2007/0…o-manage-acls/. The file I changed permissions on is C:WindowsSystem32mapisvc.inf. I believe that the [...]

  4. Jonathan
    November 23rd, 2007 22:58
    4

    Thank you for your reply Gaotcreek.

    I tried this and it still didn’t work, but it made me try a few other things.

    And I FINALY FOUND OUT HOW TO DO IT!. It’s strange, but no combination of ICACLS worked for me, but I found a post that did it. To set folder and file permissions in Vista, you can use CACLS (even though it’s deprecated, it works proprely) and use:
    cacls “c:\test” /e /c /g “Users”:F

    Maybe someone will find out how to do the same with icacls, or maybe icacls needs a fix.

    Anyways, hope this will help someone else in the future.

  5. Gaotcreek
    November 23rd, 2007 16:03
    3

    Hi Jonathan,

    I think the users group needs F,WDAC permisions on the root too.

    Good luck,

    Ernst

  6. Jonathan
    October 11th, 2007 01:24
    2

    Hello,

    Great article by the way, but hoping someone can help me. I’ve been doing testing and such, and I have the icacls.exe working fairly well, but I have a problem.

    I’m logged in as a limited user.

    I use icacls from an elevated command prompt.
    I create a test folder in the root directory named “test”.

    I’m trying to give full control permissions to the “Users” group in windows vista, on that folder.

    The command I use is this:
    c:\>icacls “Test” /grant Users:(F,WDAC)

    Now, from my limited user account, if I right-click and go to permissions, security tab and select Users, only the generic “Read & Execute”, “List” and “Read” permissions are checked. The only noticable difference is that I can click on the “Edit” button to edit the permissions manualy without having to give Admin credentials.

    I’ve tried varied combinations of this command but can’t seem to stick those permission on the folder itself. If I have a file in the “test” directory and use the /T param the files take the permissions proprely.

    Does anyone know of a way I can set those permissions on a Folder through a script or command-line?

    Thank you in advance.

  7. 10 New Executables and 20 Old Commands in Windows Vista » My Digital Life
    May 22nd, 2007 02:41
    1

    [...] iCacls [...]

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe to comments feature has been disabled. To receive notification of latest comments posted, subscribe to My Digital Life Comments RSS feed or register to receive new comments in daily email digest.

New Articles

Incoming Search Terms for the Article

icacls - icacls vista - icacls examples - icacls example - changing a vista file permission in the command prompt - icacls setintegritylevel - icacls download - icacls win 7 - windows 7 icacls - icacls "windows 7" - icacls command line - icacls reset permissions - icacls delete folder access denied - icacls access denied - vista manage acl - change ACL in Vista - icacls inheritance - icacls in vista - icacls access is denied - icacls windows 7 - icacls remove - icacls help - icacls setowner Access is denied - icacls Owner - icacls "/remove:g" - access is denied in icacls with windows 7 - ACL vista command line - change permissions vista command - command prompt icacls - manipulate acl in vista - script acls vista - can icacls set permissions - how to set up group permissions icalcs windows 2008 - icacls server 2008 - ICACLS name /setowner user - +icacls +"remove permissions" - icacls switches - icacls, turn off inheritance, folder - icacls c:\ /set integrity level M - icacls /setintegritylevel low - icacls /setintegritylevel - icacls show sid - ICACLS PERMISSION RESTORE - windows 2008 find who change the folder name to deprecated - /WO "write owner" system icacls - icacls windows 7 - access denied unknown owner sid - change the permisison of folder command prompt vista - icacls remove inheritance - icacls.exe PRINTERS /e /g users:C -