Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 232727
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T20:02:30+00:00 2026-05-11T20:02:30+00:00

In my environment, I have several projects that involve running NTFS ACL audit reports

  • 0

In my environment, I have several projects that involve running NTFS ACL audit reports and various ACL cleanup activities on a number of file servers. There are two main reasons why I cannot perform these activities locally on the servers:

1) I do not have local access to the servers as they are actually owned and administered by another company.

2) They are SNAP NAS servers which run a modified Linux OS (called GuardianOS) so even if I could get local access, I’m not sure of the availability of tools to perform the operations I need.

With that out of the way, I ended up rolling my own ACL audit reporting tool that would recurse down the filesystem starting at a specified top-level path and would spit out an HTML report on all the groups/users it encountered on the ACLs as well as showing the changes in permissions as it descended the tree. While developing this tool, I found out that the network overhead was the worst part of doing these operations and by multi-threading the process, I could achieve substantially greater performance.

However, I’m still stuck for finding a good tool to perform the ACL modifications and cleanup. Your standard out of the box tools (cacls, xcacls, Explorer) seem to be single-threaded and suffer significant performance penalty when going across the network. I’ve looked at rolling my own ACL setting program that is multithreaded but the only API I’m familiar with is the .NET FileSystemAccessRule stuff and the problem is that if I set the permissions at a folder, it automatically wants to “flow” the permissions down. This causes a problem because I want to do the “flowing” myself using multi-threading.

I know NTFS “allows” inherited permissions to be inconsistent because I’ve seen it where a folder/file gets moved on the same volume between two parent folders with different inherited permissions and it keeps the old permissions as “inherited”.

The Questions

1) Is there a way to set an ACL that applies to the current folder and all children (your standard “Applies to files, folders, and subfolders” ACL) but not have it automatically flow down to the child objects? Basically, I want to be able to tell Windows that “Yes, this ACL should be applied to the child objects but for now, just set it directly on this object”.

Just to be crystal clear, I know about the ACL options for applying to “this folder only” but then I lose inheritance which is a requirement so that option is not valid for my use case.

2) Anyone know of any good algorithms or methodologies for performing ACL modifications in a multithreaded manner? My gut feeling is that any recursive traversal of the filesystem should work in theory especially if you’re just defining a new ACL on a top-level folder and just want to “clean up” all the subfolders. You’d stamp the new ACL on the top-level and then recurse down removing any explicit ACEs and then “flowing” the inherited permissions down.

(FYI, this question is partially duplicated from ServerFault since it’s really both a sysadmin and a programming problem. On the other question, I was asking if anyone knows of any tools that can do fast ACL setting over the network.)

  • 1 1 Answer
  • 1 View
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-11T20:02:30+00:00Added an answer on May 11, 2026 at 8:02 pm

    Found the answer in a MS KB article:

    File permissions that are set on files
    and folders using Active Directory
    Services Interface (ADSI) and the ADSI
    resource kit utility, ADsSecurity.DLL,
    do not automatically propagate down
    the subtree to the existing folders
    and files.

    The reason that you cannot use ADSI to
    set ACEs to propagate down to existing
    files and folders is because
    ADSSecurity.dll uses the low-level
    SetFileSecurity function to set the
    security descriptor on a folder. There
    is no flag that can be set by using
    SetFileSecurity to automatically
    propagate the ACEs down to existing
    files and folders. The
    SE_DACL_AUTO_INHERIT_REQ control flag
    will only set the
    SE_DACL_AUTO_INHERITED flag in the
    security descriptor that is associated
    with the folder.

    So I’ve got to use the low-level SetFileSecurity Win32 API function (which is marked obsolete in its MSDN entry) to set the ACL and that should keep it from automatically flowing down.

    Of course, I’d rather tear my eyeballs out with a spoon rather than deal trying to P/Invoke some legacy Win32 API with all its warts so I may end up just using an old NT4 tool called FILEACL that is like CACLS but has an option to use the SetFileSecurity API so changes don’t automatically propagate down.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have several properties that are dependent on the environment the application is running.
I am configuring a new environment to run several intranet web applications. I have
In our environment we have a Lib folder which contains various third party assemblies
In my project environment I have 2 projects. MyApp & MyModule MyApp loads MyModule.
I'm curious about the various versions of .net. We have an environment where we've
I have a test environment for a database that I want to reload with
I have a string that has some Environment.Newline in it. I'd like to strip
I have an environment where multiple sites hosted on the same server will use
If I modify or add an environment variable I have to restart the command
I have a ClickOnce environment like this: \\Fileserver\ClickOnceApps\App1.application C:\Documents and Settings\user\Start Menu\Programs\publisher\app1.appref-ms My understanding

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.