c ++ - Kontrollerer filtilladelse til Windows for ikke forhøjede brugere

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver nogle C ++-kode til Windows (XP/7) platformen for at kontrollere tilladelsen i forbindelse med en fil. Jeg vil gerne bekræfte, at den fil, jeg læser, ikke kan skrives af konti med ikke forhøjede rettigheder. Dette er hvad jeg gør i øjeblikket:



  • Jeg får DACL forbundet med filopkaldet GetNamedSecurityInfo

  • Jeg kalder CreateWellKnownSid med velkendte sider, som f.eks. WinAuthenticatedUserSid (gruppen Brugere)

  • Jeg kalder BuildTrusteeWithSid for at opbygge et TRUSTEE med det forrige SID

  • Jeg ringer GetEffectiveRightsFromAcl med den tidligere oprettede administrator for at få den effektive acl

  • Jeg kontrollerer, at ACL ikke indeholder skriveflagtsætet.



Denne kode fungerer perfekt til gruppen Brugere. Hvad med de andre grupper som Alle, Gæster eller andre specifikke brugere, som kan have specifik skriveadgang til filen? Jeg vil gerne finde en løsning, hvor jeg ikke behøver at opsummere alt muligt SID og kontrollere dem alle. Er der et SID, jeg kunne bruge som 'alt andet end ikke admin'?


Hilsen,
Myre

Bedste reference


Jeg vil tage en lidt anden tilgang:



  1. Få alle ACE'er via GetExplicitEntriesFromAcl, for filen og alle dets forældre

  2. Vælg GRANT\_ACCESS og SET\_ACCESS ACE'er

  3. Få listen over trustees fra de valgte ACE'er

  4. For hver af de trustees, udfør en adgangskontrol. GetEffectiveRightsFromAcl er nok den nemmeste løsning her.



Du vil gerne tænke specifikt hvad du vil gøre med Ejeren. Han kan ændre rettighederne til enhver tid.