Share via


Máscara de acceso

La función de la máscara de acceso es describir los derechos de acceso en un formato compacto. Para simplificar la administración de acceso, la máscara de acceso contiene un conjunto de cuatro bits, los derechos genéricos, que se traducen en un conjunto de derechos más detallados mediante la función RtlMapGenericMask.

En la ilustración siguiente se muestra la máscara de acceso.

diagrama que ilustra la máscara de acceso.

Los derechos genéricos son uno de los siguientes:

  • GENERIC_READ: el derecho a leer la información mantenida por el objeto .

  • GENERIC_WRITE: el derecho a escribir la información mantenida por el objeto .

  • GENERIC_EXECUTE: el derecho a ejecutar o, como alternativa, examinar el objeto.

  • GENERIC_ALL: el derecho a leer, escribir y ejecutar el objeto.

Tenga en cuenta que estos derechos se pueden combinar (GENERIC_READ y GENERIC_WRITE se pueden solicitar, por ejemplo) con la asignación resultante que requiere la unión de los derechos necesarios para cada derecho genérico. Este paradigma imita los bits de acceso "rwx" de UNIX que se usan para controlar el acceso a los recursos de UNIX. Los derechos genéricos de la máscara de acceso simplifican el desarrollo de aplicaciones en Windows, ya que estos derechos enmascaran los distintos derechos de seguridad para varios tipos de objetos.

El siguiente conjunto de derechos estándar se aplica a todos los tipos de objeto:

  • DELETE: el derecho a eliminar el objeto determinado.

  • READ_CONTROL: el derecho a leer la información del control (seguridad) del objeto.

  • WRITE_DAC: el derecho a modificar la información del control (seguridad) del objeto.

  • WRITE_OWNER: el derecho a modificar el SID de propietario del objeto. Recuerde que los propietarios siempre tienen derecho a modificar el objeto.

  • SYNCHRONIZE: el derecho a esperar en el objeto especificado (suponiendo que se trata de un concepto válido para el objeto).

Los 16 bits inferiores de la máscara de acceso representan los derechos específicos. El significado de estos derechos específicos es único para el objeto en cuestión. En el caso de los sistemas de archivos, los intereses principales son los derechos específicos de los objetos de archivo. En el caso de los objetos de archivo, los derechos específicos normalmente se interpretan de forma diferente, dependiendo de si el objeto de archivo representa un archivo o un directorio. En el caso de los archivos, la interpretación normal es:

  • FILE_READ_DATA: el derecho a leer datos del archivo especificado.

  • FILE_WRITE_DATA: el derecho a escribir datos en el archivo especificado (dentro del intervalo existente del archivo).

  • FILE_APPEND_DATA: el derecho a extender el archivo especificado.

  • FILE_READ_EA: el derecho a leer los atributos extendidos del archivo.

  • FILE_WRITE_EA: el derecho a modificar los atributos extendidos del archivo.

  • FILE_EXECUTE: el derecho a ejecutar localmente el archivo especificado. La ejecución de un archivo almacenado en un recurso compartido remoto requiere permiso de lectura, ya que el archivo se lee desde el servidor, pero se ejecuta en el cliente.

  • FILE_READ_ATTRIBUTES: el derecho a leer la información de atributo del archivo.

  • FILE_WRITE_ATTRIBUTES: el derecho a modificar la información de atributo del archivo.

En el caso de los directorios, se usan los mismos valores de bits, pero su interpretación es diferente en algunos de los casos siguientes:

  • FILE_LIST_DIRECTORY: el derecho a enumerar el contenido del directorio.

  • FILE_ADD_FILE: el derecho a crear un nuevo archivo dentro del directorio.

  • FILE_ADD_SUBDIRECTORY: el derecho a crear un directorio (subdirectorio) en el directorio.

  • FILE_READ_EA: el derecho a leer los atributos extendidos del directorio especificado.

  • FILE_WRITE_EA: el derecho a escribir los atributos extendidos del directorio especificado.

  • FILE_TRAVERSE: el derecho a acceder a objetos dentro del directorio. El derecho de acceso FILE_TRAVERSE es diferente del derecho de acceso FILE_LIST_DIRECTORY. Mantener el derecho de acceso FILE_LIST_DIRECTORY permite a una entidad obtener una lista del contenido de un directorio, mientras que el derecho de acceso FILE_TRAVERSE proporciona a una entidad el derecho de acceso al objeto. Un autor de llamada sin el derecho de acceso FILE_LIST_DIRECTORY podría abrir un archivo que sabía que ya existía, pero no podría obtener una lista del contenido del directorio.

  • FILE_DELETE_CHILD: el derecho a eliminar un archivo o directorio dentro del directorio actual.

  • FILE_READ_ATTRIBUTES: el derecho a leer la información de atributo de un directorio.

  • FILE_WRITE_ATTRIBUTES: el derecho a modificar la información de atributo de un directorio.

La asignación real de derechos genéricos a derechos estándar y específicos para objetos de archivo se define mediante el administrador de E/S. Un sistema de archivos puede recuperar esta asignación mediante IoGetFileObjectGenericMapping. Normalmente, esta asignación se realiza durante IRP_MJ_CREATE procesamiento por parte del administrador de E/S antes de llamar al sistema de archivos. Pero esto podría hacerse mediante una comprobación del sistema de archivos de seguridad en operaciones específicas (operaciones FSCTL especializadas, por ejemplo).