Example #1
0
        private void removeSecurityRecursive(FileSystemInfo info, SecurityIdentifier sid)
        {
            if (info.Exists)
            {
                SecurityTemplateManager stm = CreateManager <SecurityTemplateManager>();

                if (info is DirectoryInfo)
                {
                    DirectoryInfo     di = (DirectoryInfo)info;
                    DirectorySecurity ds = di.GetAccessControl();
                    stm.RemoveMatchingRules(ds, sid, AccessControlType.Allow);
                    stm.RemoveMatchingRules(ds, sid, AccessControlType.Deny);
                    di.SetAccessControl(ds);

                    // Recursively remove security from files and directories.
                    di.GetFiles().ToList().ForEach(p => removeSecurityRecursive(p, sid));
                    di.GetDirectories().ToList().ForEach(p => removeSecurityRecursive(p, sid));
                }
                else if (info is FileInfo)
                {
                    FileInfo     fi = (FileInfo)info;
                    FileSecurity fs = fi.GetAccessControl();
                    stm.RemoveMatchingRules(fs, sid, AccessControlType.Allow);
                    stm.RemoveMatchingRules(fs, sid, AccessControlType.Deny);
                    fi.SetAccessControl(fs);
                }
            }
        }
Example #2
0
        private bool relativePathAndUserExists(SecurityTemplate st, DirectoryInfo websiteDirectory)
        {
            SecurityTemplateManager stm = CreateManager <SecurityTemplateManager>();
            WindowsUserManager      wum = new WindowsUserManager(ServerConfig.WindowsServerName);

            return(!stm.RelativePathExists(websiteDirectory, st.RelativePath) ||
                   (!wum.Exists(st.Username) && !st.UseIisIdentity));
        }