[C#] Bug gevonden in NTFS Permissies ophalen?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Wilde
  • Registratie: December 2000
  • Niet online
Goedemorgen ;)

Ben wat aan het rommelen geslagen om vanuit code de NTFS permissies op te halen van een map welke op een fileserver staat in het domein staat. Ik zal eea proberen te verduidelijken:

Er zijn 2 domeinen: DomeinX en DomeinY. Hier ligt een trust tussen
Er is 1 fileserver: FS01 in DomeinY
Op de fileserver is een folder waar een groep uit DomeinX rechten op heeft.

Gebruik ik de volgende code om permissies uit te lezen:
code:
1
2
3
4
5
6
7
8
DirectoryInfo di = new DirectoryInfo("\\FS01\FOLDER");
DirectorySecurity di_sec = di.GetAccessControl(AccessControlSections.Access);
AuthorizationRuleCollection rules = di_sec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));

foreach (FileSystemAccessRule rule in rules)
{
      log("Found security: " + rule.IdentityReference.ToString());
}


Waarbij log() de parameter wegschrijft in een logfiletje.

Het rare is. Ik voer dit uit vanaf een laptop die in DOMEINY hangt. Toch krijg ik in mijn logfile te zien:
DOMEINY\groupnaam_rwcemf

Dat lijkt me een bug eerlijk gezegd.. Als ik rechtermuis op de folder klik en naar security permissies ga zie ik duidelijk DOMEINX\groupnaam staan.. Maar mijn code geeft dus DOMEINY\groupnaam weer. Is hier een oplossing voor? Sorry als ik het wazig uitleg, misschien kan ik na wat tips nog wat verduidelijken

Specs: 9800X3D, RTX 5090, 64GB, VR: Pimax Crystal-Light


Acties:
  • 0 Henk 'm!

  • dotcode
  • Registratie: Augustus 2003
  • Laatst online: 17-09 12:07

dotcode

///\00/\\

Heeft de user waarmee je het uitvoert wel rechten genoeg om de rechten van DOMEINX in te zien?

Acties:
  • 0 Henk 'm!

  • Wilde
  • Registratie: December 2000
  • Niet online
Yep.. Ik heb dat inmiddeld ook gegarandeerd mbv impersonation

Intussen lijkt het erop dat de identityreference.translate() methode het probleem veroorzaakt. Als ik het volgende debug:

code:
1
System.Security.Principal.IdentityReference friendly_ref = rule.IdentityReference.Translate(typeof(System.Security.Principal.NTAccount));


zie ik dat "rule" het SID bevat van de juiste groep. Echter "friendly_ref" is na deze regel ineens een groepsnaam met een heel andere sid.. Begrijp daar geen hout van... :D

Specs: 9800X3D, RTX 5090, 64GB, VR: Pimax Crystal-Light