Skip to content

Commit 19ceb9b

Browse files
committed
Fixing permissions issue for files.
1 parent f280127 commit 19ceb9b

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

eFormAPI/Installation/CustomActions/CustomAction.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System.Security.AccessControl;
1212
using System.Threading;
1313
using System.Threading.Tasks;
14+
using System.Security.Principal;
1415

1516
namespace CustomActions
1617
{
@@ -339,10 +340,29 @@ public static void CongigureSecurity(string folder)
339340

340341
var dSecurity = dInfo.GetAccessControl();
341342

342-
dSecurity.AddAccessRule(new FileSystemAccessRule("IUSR", FileSystemRights.FullControl, AccessControlType.Allow));
343-
dSecurity.AddAccessRule(new FileSystemAccessRule("IIS_IUSRS", FileSystemRights.FullControl, AccessControlType.Allow));
343+
IdentityReference eid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
344+
dSecurity.AddAccessRule(new FileSystemAccessRule("IUSR", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
345+
dSecurity.AddAccessRule(new FileSystemAccessRule("IIS_IUSRS", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
344346

345347
dInfo.SetAccessControl(dSecurity);
348+
349+
ReplaceAllDescendantPermissionsFromObject(dInfo, dSecurity);
350+
}
351+
352+
private static void ReplaceAllDescendantPermissionsFromObject(DirectoryInfo dInfo, DirectorySecurity dSecurity)
353+
{
354+
dInfo.SetAccessControl(dSecurity);
355+
356+
foreach (FileInfo fi in dInfo.GetFiles())
357+
{
358+
var ac = fi.GetAccessControl();
359+
360+
ac.SetAccessRuleProtection(false, false);
361+
362+
fi.SetAccessControl(ac);
363+
}
364+
365+
dInfo.GetDirectories().ToList().ForEach(d => ReplaceAllDescendantPermissionsFromObject(d, dSecurity));
346366
}
347367

348368
private static void BuildAngularApp(string appLocation)

0 commit comments

Comments
 (0)