Doublons GetAccessRules, entrées FileSystemAccessRule

Je reçois un duplicata FileSystemAccessRule à partir de ce code ci-dessous:

C:\inetpub\wwwroot\AspInfo\Account BUILTIN\IIS_IUSRS : Allow : ReadAndExecute, Synchronize BUILTIN\IIS_IUSRS : Allow : -1610612736 NT SERVICE\TrustedInstaller : Allow : FullControl NT SERVICE\TrustedInstaller : Allow : 268435456 

et je ne peux pas comprendre quoi ou pourquoi c’est.

Et les permissions affichées ne correspondent pas à ce que je peux voir dans les propriétés du fichier FileManager. Par exemple, comment trouver l’autorisation “Liste du contenu du dossier” à partir de cette itération ou d’une itération similaire. Si quelqu’un connaît un exemple dans la documentation .NET, ce serait utile.

 protected void directoryInfo() { var di = new DirectoryInfo(Server.MapPath("/")); foreach (DirectoryInfo dir in di.GetDirectories()) { Response.Write(dir.FullName + "
"); DirectorySecurity ds = dir.GetAccessControl(); foreach (FileSystemAccessRule fsar in ds.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount))) { ssortingng userName = fsar.IdentityReference.Value; ssortingng userRights = fsar.FileSystemRights.ToSsortingng(); ssortingng userAccessType = fsar.AccessControlType.ToSsortingng(); Response.Write(userName + " : " + userAccessType + " : " + userRights + "
"); } } }

Vous obtiendrez des entrées de règles distinctes pour les règles héritées et pour les règles explicitement définies sur ce dossier. Il existe également une différence selon les parameters de propagation de chaque règle. Par exemple, vous pouvez avoir un ensemble d’permissions défini pour se propager à des sous-dossiers et un autre ensemble à des fichiers du dossier. Votre code obtient également les règles d’audit (SACL) sur le dossier dans lequel vous semblez simplement vouloir les permissions d’access (DACL).

Essaye ça:

 protected void directoryInfo() { var di = new DirectoryInfo(Server.MapPath("/")); foreach (DirectoryInfo dir in di.GetDirectories()) { Response.Write(dir.FullName + "
"); DirectorySecurity ds = dir.GetAccessControl(AccessControlSections.Access); foreach (FileSystemAccessRule fsar in ds.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount))) { ssortingng userName = fsar.IdentityReference.Value; ssortingng userRights = fsar.FileSystemRights.ToSsortingng(); ssortingng userAccessType = fsar.AccessControlType.ToSsortingng(); ssortingng ruleSource = fsar.IsInherited ? "Inherited" : "Explicit"; ssortingng rulePropagation = fsar.PropagationFlags.ToSsortingng(); ssortingng ruleInheritance = fsar.InheritanceFlags.ToSsortingng(); Response.Write(userName + " : " + userAccessType + " : " + userRights + " : " + ruleSource + " : " + rulePropagation + " : " + ruleInheritance + "
"); } } }

L’autorisation ReadAndExecute que vous voyez inclut l’autorisation «Lister le contenu du dossier». Vous pouvez vérifier les permissions individuelles à l’aide de l’indicateur approprié dans l’énumération FileSystemRights. Par exemple:

 if (fsar.FileSystemRights && FileSystemRights.ListDirectory) Console.WriteLine("Has List Directory permission");