[Win32] Windows file security *

Pagina: 1
Acties:

  • Edsger
  • Registratie: December 2000
  • Laatst online: 02-08 17:39
Ik heb een programma geschreven (in C++) dat de rechten kan uitlezen van een bepaalde file/directory voor een willekeurige gebruiker (nog uit te breiden voor groepen ed). De rechten die worden uitgelezen zijn de effective rechten, dus niet de rechten die specifiek op dat bestand staan.

Nu is het zo dat ik ook met dat programma effective rechten wil kunnen zetten op een bestand. Zo'n functie is er (uiteraard) niet. De vraag is hoe ik dat moet doen, of het beste kan doen.

Ondertussen heb wel wat inzicht gekregen in het rechten systeem van NT (2000,XP,2003), maar bepaalde terminolgie van de sdk etc is mij nogal vreemd. Ik gebruik de onderstaande functies om rechten (DACL's) te manipuleren.

SetNamedSecurityInfo()
EXPLICIT_ACCESS structure
SetEntriesInAcl()

Mijn vraag is dan ook hoe ik het beste rechten van een gebruiker kan instellen op bestanden/directories en via welke functie aanroepen? Als het gaat om de bovenstaande functies, zou ik graag weten welke parameters wat betekenen.

All your quantifications are belong to me!


Verwijderd

Edsger schreef op 14 June 2003 @ 13:17:
Ik heb een programma geschreven (in C++) dat de rechten kan uitlezen van een bepaalde file/directory voor een willekeurige gebruiker (nog uit te breiden voor groepen ed). De rechten die worden uitgelezen zijn de effective rechten, dus niet de rechten die specifiek op dat bestand staan.

Nu is het zo dat ik ook met dat programma effective rechten wil kunnen zetten op een bestand. Zo'n functie is er (uiteraard) niet. De vraag is hoe ik dat moet doen, of het beste kan doen.
code:
1
C:\> cacls.exe
Ondertussen heb wel wat inzicht gekregen in het rechten systeem van NT (2000,XP,2003), maar bepaalde terminolgie van de sdk etc is mij nogal vreemd. Ik gebruik de onderstaande functies om rechten (DACL's) te manipuleren.

SetNamedSecurityInfo()
EXPLICIT_ACCESS structure
SetEntriesInAcl()
Volgens mij heb je nog meer API's nodig... Ik zie zelf door de DACL's, SACL's, door de bomen het bos niet meer.

  • Edsger
  • Registratie: December 2000
  • Laatst online: 02-08 17:39
Verwijderd schreef op 14 June 2003 @ 19:51:
[...]

code:
1
C:\> cacls.exe


[...]

Volgens mij heb je nog meer API's nodig... Ik zie zelf door de DACL's, SACL's, door de bomen het bos niet meer.
ik gebruik ook meer api's. Ik heb al wat werkend. Zo kan ik rechten uitlezen. Ik krijg dan een access mask terug en ik print die naar het scherm in human-readable taal.

Mijn programma moet nu echter ook in staat zijn dat access mask aan te passen en de dacl's zo aan te passen dat de rechten op dat bestand ook effectieve rechten zijn.

Ik kan wel al dacl's toevoegen, maar die stellen geen effectieve rechten in. Het probleem is dus vooral wegwijs te komen uit de api security structuur van windows. Die cacls gebruikt idd wat bekende parameters waarvan ik dus graag de preciese betekenis zou weten. Die staan dus ook zo in de SDK maar ik heb geen idee wat voorstellen.

All your quantifications are belong to me!


  • Edsger
  • Registratie: December 2000
  • Laatst online: 02-08 17:39
kick...

zijn er geen andere drankjes, anders dan sinaasappelsap, die wat weten over windows security?

All your quantifications are belong to me!


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Helaas worden ACL's verbazend weinig gebruikt in alledaagse Win32 programming, en de eerdere topics die erover zijn geweest oogstten ook nooit veel respons. Wellicht dat je hiervoor beter de Microsoft nieuwsgroepen kunt proberen.

De enige persoon die ik weet die er wel eens wat meer mee gewerkt heeft heb ik zojuist op IRC een trap richting dit topic gegeven :D

Professionele website nodig?


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Ik heb ooit wat met ACL's gedaan - [rml][ Win32/Delphi] ACL op printer[/rml] is het fameuze topic ;)
Dit tooltje - http://setacl.sourceforge.net/ doet precies wat jij wil.

Even wat info. Voor zover ik weet zijn er 2 manieren om ACL's te zetten, "the hard way" die op NT4 en hoger werkt (albeit soms buggy is, en veelal niet transparant omdat security inheritance geen UI heeft in NT4 maar wel bestaat!), en de gemakkelijkere manier via SDDL - Security Descriptor Definition Language.

Lees dit artikel: http://msdn.microsoft.com...urity/creating_a_dacl.asp eens door met example code hoe een DACL te creeeren. Samen met http://msdn.microsoft.com...urity/setfilesecurity.asp deze functie, kan je dan je DACl applyen op file niveau.

Kan je anders eens wat code postten, en een exacte probleemstelling definieeren?

Verwijderd

Er schiet mij net wat te binnen....

http://www.wilsonc.demon.co.uk/delphi.htm

daar vind je NT Low Level Utilities

  • Edsger
  • Registratie: December 2000
  • Laatst online: 02-08 17:39
elevator schreef op 16 juni 2003 @ 20:32:
Kan je anders eens wat code postten, en een exacte probleemstelling definieeren?
Zeker kan ik dat. Eerst zal ik echter even jullie bronnen doorkijken voor zover ik ze niet al gelezen heb, om te kijken hoever ik daarmee kom. Het is namelijk zo dat de code weliswaar duidelijk zal zijn voor insiders, maar het zal enige moeite kosten om het op dit forum leesbaar te houden.

Ik zal dan ook meteen wat doen aan mijn probleemstelling. Deze is nu nog vaag omdat ik eigenlijk niet weet hoe ik de vraag moet stellen zonder dat deze verkeerd kan worden opgevat. Zoals sinaasappelsap ook al zei "ik zie door de dacl's en acl's het bos (van SID's) niet meer".

All your quantifications are belong to me!


  • The End
  • Registratie: Maart 2000
  • Laatst online: 18:51

The End

!Beginning

Je kan een functie als 'SetFileSecurity' gebruiken.
SetFileSecurity krijgt als parameters mee de directory (of file) waarvan de je security wil zetten. 2e parameters is wat je wil zetten (Owner,DACL,SACL,Group) en de derde parameter is een Security Descriptor.

Owner - Deze heeft de rechten om de ACL (Access Control List) te vervangen. (Verder niets!)
DACL - Discretionary Access Control List; Hier staan alle users met hun rechten (access of deny access) Dit is wat je ziet in de explorer als je op heb tabje security kijkt.
SACL - Waarschijnlijk niet belangrijk, dit is voor security auditing
Group - Geen idee, heeft geloof ik iets met de mac te maken?? (Iemand?)

Het principe is heel simpel:
Maak een security descriptor met 'InitializeSecurityDescriptor'
Voeg een owner toe met 'SetSecurityDescriptorOwner'
En een DACL met: 'SetSecurityDescriptorDacl'

Daarna kan je 'SetFileSecurity' aanroepen met (OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)

Als je wil kan ik ook nog wat vertellen over ACL's

  • Edsger
  • Registratie: December 2000
  • Laatst online: 02-08 17:39
Inderdaad. Ik heb even naar het tooltje gekeken en het lijkt precies te doen wat ik wil en dan zelf nog beter.

Een half jaar geleden was ik al in delphi begonnen aan dit project, maar toen liep ik stuk op wat bugs/geheugenproblemen die ik maar niet kon oplossen (ik verdenk nog steeds Delphi hiervan). Vervolgens ben ik opnieuw begonnen in C++, hetgeen toch makkelijker programmeert icm een platform sdk. Nu heb ik enkele weken daaraan besteedt, waarbij een groot deel opging aan het afstruinen van het internet opzoek naar informatie en het lezen van de sdk. Ik moet zeggen dat het wel vrij frustrerend is om nu erachter te komen dat het werk allang gedaan was. Maar goed, ik heb er dan ook weer wat van geleerd. Bovendien zal die tool ook wel niet zonder al die kennis makkelijk te gebruiken zijn.

Bedankt iedereen!

All your quantifications are belong to me!

Pagina: 1