Delen via


Toegangsmasker

De functie van het toegangsmasker is om toegangsrechten in een compacte vorm te beschrijven. Om het toegangsbeheer te vereenvoudigen, bevat het toegangsmasker een set van vier bits, de algemene rechten, die worden vertaald in een set meer gedetailleerde rechten met behulp van de functie RtlMapGenericMask.

In de volgende afbeelding ziet u het toegangsmasker.

diagram dat het toegangsmasker illustreert.

De algemene rechten zijn:

  • GENERIC_READ: het recht om de informatie te lezen die door het object wordt onderhouden.

  • GENERIC_WRITE: het recht om de informatie te schrijven die door het object wordt onderhouden.

  • GENERIC_EXECUTE: het recht om het object uit te voeren of in te zien.

  • GENERIC_ALL: het recht om het object te lezen, te schrijven en uit te voeren.

Deze rechten kunnen worden gecombineerd. Zo kunnen GENERIC_READ en GENERIC_WRITE beide worden aangevraagd. De resulterende toewijzing vereist de samenvoeging van de rechten die nodig zijn voor elk generiek recht. Met dit paradigma worden UNIX-toegangsbits 'rwx' nagebootst die worden gebruikt om de toegang tot UNIX-resources te beheren. De algemene rechten in het toegangsmasker vereenvoudigen de ontwikkeling van toepassingen in Windows, omdat deze rechten de verschillende beveiligingsrechten voor verschillende objecttypen maskeren.

De volgende set standaardrechten zijn van toepassing op alle objecttypen:

  • DELETE: het recht om het betreffende object te verwijderen.

  • READ_CONTROL: het recht om de informatie over het besturingselement (beveiliging) voor het object te lezen.

  • WRITE_DAC: het recht om de controlegegevens (beveiliging) voor het object te wijzigen.

  • WRITE_OWNER: het recht om de eigenaar-SID van het object te wijzigen. Zoals u weet, hebben eigenaren altijd het recht om het object te wijzigen.

  • SYNCHRONISEER—het recht om op het opgegeven object te wachten (ervan uitgaande dat "wachten" een geldig concept voor dat object is).

De lagere 16 bits van het toegangsmasker vertegenwoordigen de specifieke rechten. De betekenis van deze specifieke rechten is uniek voor het betreffende object. Voor bestandssystemen zijn de primaire interesses de specifieke rechten voor bestandsobjecten. Voor bestandsobjecten worden specifieke rechten normaal gesproken anders geïnterpreteerd, afhankelijk van of het bestandsobject een bestand of map vertegenwoordigt. Voor bestanden is de normale interpretatie:

  • FILE_READ_DATA: het recht om gegevens uit het opgegeven bestand te lezen.

  • FILE_WRITE_DATA: het recht om gegevens naar het opgegeven bestand te schrijven (binnen het bestaande bereik van het bestand).

  • FILE_APPEND_DATA— het recht om het opgegeven bestand uit te breiden.

  • FILE_READ_EA: het recht om de uitgebreide kenmerken van het bestand te lezen.

  • FILE_WRITE_EA: het recht om de uitgebreide kenmerken van het bestand te wijzigen.

  • FILE_EXECUTE: het recht om het opgegeven bestand lokaal uit te voeren. Voor het uitvoeren van een bestand dat is opgeslagen op een externe share, is leesmachtiging vereist, omdat het bestand wordt gelezen vanaf de server, maar wordt uitgevoerd op de client.

  • FILE_READ_ATTRIBUTES: het recht om de kenmerkgegevens van het bestand te lezen.

  • FILE_WRITE_ATTRIBUTES: het recht om de kenmerkgegevens van het bestand te wijzigen.

Voor directory's worden dezelfde bitwaarden gebruikt, maar hun interpretatie verschilt in een aantal van de volgende gevallen:

  • FILE_LIST_DIRECTORY: het recht om de inhoud van de map weer te geven.

  • FILE_ADD_FILE: het recht om een nieuw bestand in de directory te maken.

  • FILE_ADD_SUBDIRECTORY— het recht om een nieuwe map (submap) binnen de map te maken.

  • FILE_READ_EA: het recht om de uitgebreide kenmerken van de opgegeven map te lezen.

  • FILE_WRITE_EA: het recht om de uitgebreide kenmerken van de opgegeven map te schrijven.

  • FILE_TRAVERSE: het recht om toegang te krijgen tot objecten in de map. Het FILE_TRAVERSE toegangsrecht verschilt van het FILE_LIST_DIRECTORY toegangsrecht. Als u het FILE_LIST_DIRECTORY toegangsrecht hebt, kan een entiteit een lijst met de inhoud van een map verkrijgen, terwijl het FILE_TRAVERSE toegangsrecht een entiteit het recht geeft om toegang te krijgen tot het object. Een beller zonder het FILE_LIST_DIRECTORY toegangsrecht kan een bestand openen waarvan het wist dat het al bestond, maar zou geen lijst met de inhoud van de map kunnen verkrijgen.

  • FILE_DELETE_CHILD: het recht om een bestand of map in de huidige map te verwijderen.

  • FILE_READ_ATTRIBUTES: het recht om de kenmerkgegevens van een directory te lezen.

  • FILE_WRITE_ATTRIBUTES: het recht om de kenmerkgegevens van een map te wijzigen.

I/O Manager definieert de werkelijke toewijzing van algemene rechten aan standaard- en specifieke rechten voor bestandsobjecten. Een bestandssysteem kan deze toewijzing ophalen met behulp van IoGetFileObjectGenericMapping. Normaal gesproken voert de I/O-beheer deze toewijzing uit tijdens IRP_MJ_CREATE verwerking voordat het bestandssysteem wordt aangeroepen. Maar een bestandssysteem dat de beveiliging controleert op specifieke bewerkingen (gespecialiseerde FSCTL-bewerkingen, bijvoorbeeld) moet deze toewijzing zelf uitvoeren.