XCACLS and dumping results to a text file

I am working on a security audit and we would like to take the results from XCACLS and dump them into a text file.

Thanks to another post here, I found a the code below at the following link:  http://windowsitpro.com/article/articleid/84696/jsi-tip-9901-how-can-i-enumerate-the-folder-permissions-on-a-drive-or-folder-in-csv-format.html

This works great but the only question I have is, how do I modify the batch so that it includes files aswell as folders?

@echo off
if {%1}=={} @echo Syntax: TreePerm DriveOrFolder&goto :EOF
if not exist %1 @echo Syntax: TreePerm %1 does NOT exist.&goto :EOF
set obj=%1
set XCACLS=""
for /f "Tokens=*" %%F in ('@echo XCACLS.VBS') do (
 If "%%~dp$PATH:F" NEQ "" set XCACLS="%%~dp$PATH:F%%~F"
if %XCACLS% EQU "" @echo Syntax: TreePerm - XCACLS NOT in PATH&endlocal&goto :EOF 
for /f "Skip=2 Tokens=*" %%a in ('cscript //nologo %XCACLS% %obj% /T /S^|find "\"') do (
 set line=%%a
 call :parse
goto :EOF
if "%line:~0,10%" EQU "Directory:" set fPath="%line:~11%"&goto :EOF
if "%line:~0,6%" EQU "Owner:" set fPath=""&goto :EOF
set type="%line:~0,7%"
set type=%type: "="%
set Usr="%line:~9,23%"
set Usr=%Usr:  =%
set Usr=%Usr: "="%
set Perm="%line:~33,22%"
set Perm=%Perm:  =%
set Perm=%Perm: "="%
set Perm=%Perm:(=[%
set Perm=%Perm:)=]%
set Perm=%Perm:,=%
set Inherit="%line:~55%"
set Inherit=%Inherit:  =%
set Inherit=%Inherit: "="%
set Inherit=%Inherit:,=%
@echo %fPath%,%type%,%Usr%,%perm%,%Inherit%

Open in new window

Who is Participating?
oBdAConnect With a Mentor Commented:
There are tools that make this a bit easier, for example by offering the ability to only show permissions for folders that differ from the parent, and by being faster than xcacls.vbs.
My favorite tool for this is the free DumpSec (http://www.systemtools.com/somarsoft/index.html)
You can set the Permissions Report Options to not show the owner, and to "Show directories (not files) whose permissions differ ..." to create the most concise report possible.
Save it one time in native format so that you can open it again and save it in a different format if you need to, then you can save it as csv file.
There are some other free tools from Sysinternals:
- AccessChk (http://technet.microsoft.com/en-us/sysinternals/bb664922.aspx)
- AccessEnum (http://technet.microsoft.com/en-us/sysinternals/bb897332.aspx)
- ShareEnum (http://technet.microsoft.com/en-us/sysinternals/bb897442.aspx)
Or the Security Explorer from ScriptLogic (http://www.scriptlogic.com/products/security-explorer/) (not free)
fuzzysneekersAuthor Commented:
Hi oBdA,

I looked at the Sysinternals tools but I want to be able to split the path from the final folder and/or file name.  Unfortunately, these don't do that.

I took a look at DumpSec and it looks like it will work.  I only have a few questions about the reporting that I am hoping you can answer:

1 - When it shows what looks like a HEX code instead of permissions (I have a view that show ax00000004 and ax00000002), what does this mean?
2 - Is there any way to have it split the file name from the path?

This tool provides enough information that I think I can forgo splitting the path but that would be nice.

Thanks for the tip!
When you see hex codes, it means that the permissions are not the "standard" ones, but a combination that can't be listed with the usual RXW etc. You can check the folder for the permission combination that's actually configured.
DumpSec can't split the file name by itself, but once you have it in Excel, it shouldn't be too difficult to create a macro that parses the path and splits it; a folder path ends with a backslash, a file name doesn't, and in the latter case, the rightmost string after the last backslash is the file name.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.