This step-by-step article describes how to use the Extended Change Access Control List tool (Xcacls.exe) to modify and to view NTFS permissions for files or folders.
You can use Xcacls.exe to set all file-system security options that are accessible in Windows Explorer from the command line. Xcacls.exe does this by displaying and modifying the access control lists (ACLs) of files.
Xcacls.exe is especially useful in unattended installations of Windows 2000 Professional or Windows 2000 Server. By using this tool, you can set the initial access rights for folders in which the operating system resides. When you distribute software to servers or workstations, Xcacls.exe also offers one-step protection against deletion of folders or files by users.
The Xcacls.exe utility is included in the Windows 2000 Resource Kit.
The Xcacls.exe utility is also included in the Windows Server 2003 Support Tools.
The following file is available for download from the Microsoft Download Center:
Download the XCacls_Installer.exe package now.
Collapse this imageExpand this image
xcacls file name [/T] [/E] [/C] [/G user:perm;spec] [/R user] [/P user:perm;spec [...]] [/D user [...]] [/Y]
where file name
indicates the name of the file or folder to which the ACL or access control entry (ACE) is typically applied. All standard wildcard characters can be used. /T
recursively walks through the current folder and all of its subfolders, applying the chosen access rights to the matching files or folders.
edits the ACL instead of replacing it. For example, only the administrator will have access to the Test.dat file if you run the XCACLS test.dat /G Administrator:F
command. All ACEs applied earlier are lost.
causes Xcacls.exe to continue if an "access denied" error message occurs. If /C
is not specified, Xcacls.exe stops on this error.
grants a user access to the matching file or folder.
- The perm (permission) variable applies the specified access right to files and represents the special file-access-right mask for folders. The perm variable accepts the following values:
- R Read
- C Change (write)
- F Full Control
- P Change Permissions (special access)
- O Take Ownership (special access)
- X EXecute (special access)
- E REad (Special access)
- W Write (Special access)
- D Delete (Special access)
- The spec (special access) variable applies only to folders and accepts the same values as perm, with the addition of the following special value:
- T Not Specified. Sets an ACE for the directory itself without specifying an ACE that is applied to new files created in that directory. At least one access right has to follow. Entries between a semicolon (;) and T are ignored.
- The access options for files (for folders, special file and folder access) are identical. For detailed explanations of these options, see the Windows 2000 operating system documentation.
- All other options, which can also be set in Windows Explorer, are subsets of all possible combinations of the basic access rights. Because of this, there are no special options for folder access rights, such as LIST or READ.
revokes all access rights for the specified user. /P user:perm;spec
replaces access rights for user. The rules for specifying perm and spec are the same as for the /G option. See the "Xcacls.exe examples" section. /D user
denies user access to the file or directory. /Y
disables confirmation when replacing user access rights. By default, CACLS asks for confirmation. Because of this feature, when CACLS is used in a batch routine, the routine stops responding until the right answer is entered. The /Y
option was introduced to avoid this confirmation, so that Xcacls.exe can be used in batch mode.
Use Xcacls.exe to view permissions
You can also use Xcacls.exe to view permissions for a file or folder.
For example, type xcacls C:\winnt
at the command prompt, and then press ENTER. The following is a typical result:
The ACL flags have the following meanings:
- IO: Inherit Only - This flag indicates that this ACE does not apply to the
- CI: Container Inherit - This flag indicates that subordinate containers will
inherit this ACE.
- OI: Object Inherit - This flag indicates that subordinate files will inherit
- NP: Non-Propagate - This flag indicates that the subordinate object will not
propagate the inherited ACE any further.
The letter at the end of each line indicates permission. For example:
- F: Full Control
- C: Change
- W: Write
Type XCACLS *.* /G administrator:RW /Y
at the command prompt, and then press ENTER to replace the ACL of all files and folders in the current folder without scanning subfolders and without confirmation.
The ACEs that are added to the folder in this example also inherit ACE for new files that are created in this folder. The command gives TestUser read, write, run, and delete rights on all new files created in this folder, but only read and write permissions on the folder itself. Type XCACLS *.* /G TestUser:RWED;RW /E
at the command prompt, and then press ENTER.
The following example grants read and write permissions on a folder without creating an inherit entry for new files. Therefore, in this example, new files that are created in this folder receive no ACE for TestUser. For existing files, an ACE with read permissions is created. Type XCACLS *.* /G TestUser:R;RW /E
at the command prompt, and then press ENTER.
NTFS permissions guidelines
The following are guidelines for assigning NTFS permissions:
- Use NTFS permissions to control access to files and folders.
- Assign permissions to groups rather than to individual users.
- NTFS file permissions take priority over NTFS folder permissions.
- Administrators and the owner of a file or folder control which permissions can be set for that object.
- When you change folder permissions, be aware of programs that are installed on the servers. Programs create their own folders that have the Allow inheritable permissions from parent to propagate to this object setting turned on. If permissions are changed in the parent folder, these changes could create problems in the program.
Warning Remember that many files and folders receive their permissions through inheritance. Therefore, although you think that you are changing only one folder, you may be changing many more.
For more information, click the following article numbers to view the articles in the Microsoft Knowledge Base:
How to print folder and file permissions from one folder
How to use CACLS.EXE in a batch file