Compartir a través de


Máscara de acceso

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

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

Diagrama donde se ve la máscara de acceso.

Los derechos genéricos son:

  • GENERIC_READ: derecho a leer la información que mantiene el objeto.

  • GENERIC_WRITE: derecho a escribir la información que mantiene el objeto.

  • GENERIC_EXECUTE: derecho a ejecutar o examinar alternativamente el objeto.

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

Estos derechos se pueden combinar. Por ejemplo, se pueden solicitar GENERIC_READ y GENERIC_WRITE. La asignación final requiere que se unan los derechos necesarios para cada derecho genérico. Este paradigma imita los bits de acceso "rwx" de UNIX que sirven para controlar el acceso a los recursos de UNIX. Los derechos genéricos de la máscara de acceso facilitan el desarrollo de aplicaciones en Windows, ya que estos derechos crean máscaras de 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: derecho a eliminar el objeto determinado.

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

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

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

  • SYNCHRONIZE: derecho a esperar en el objeto determinado (si suponemos que la espera es un concepto válido para el objeto).

Los 16 bits de abajo 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 suelen interpretarse 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: derecho a leer datos del archivo correspondiente.

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

  • FILE_APPEND_DATA: derecho a ampliar el archivo correspondiente.

  • FILE_READ_EA derecho a leer los atributos ampliados del archivo.

  • FILE_WRITE_EA: derecho a modificar los atributos ampliados del archivo.

  • FILE_EXECUTE: derecho a ejecutar localmente el archivo correspondiente. Para ejecutar un archivo almacenado en un recurso compartido remoto se necesita permiso de lectura, ya que el archivo se lee a través del servidor, pero se ejecuta en el cliente.

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

  • FILE_WRITE_ATTRIBUTES: derecho a modificar la información de atributos 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: derecho a mostrar el contenido del directorio.

  • FILE_ADD_FILE: derecho a crear un archivo en el directorio.

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

  • FILE_READ_EA: derecho a leer los atributos ampliados del directorio correspondiente.

  • FILE_WRITE_EA: derecho a escribir los atributos ampliados del directorio correspondiente.

  • FILE_TRAVERSE: derecho a acceder a objetos dentro del directorio. El derecho de acceso FILE_TRAVERSE es diferente del derecho de acceso FILE_LIST_DIRECTORY. Si se mantiene el derecho de acceso FILE_LIST_DIRECTORY, una entidad puede obtener una lista del contenido de un directorio, mientras que el derecho de acceso FILE_TRAVERSE da a una entidad el derecho de acceder al objeto. El autor de una 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 la lista del contenido del directorio.

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

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

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

El Administrador de E/S define la asignación real de derechos genéricos a derechos estándar y específicos en los objetos de archivo. Un sistema de archivos puede recuperar esta asignación mediante IoGetFileObjectGenericMapping. Normalmente, el Administrador de E/S realiza esta asignación mientras se procesa IRP_MJ_CREATE antes de llamar al sistema de archivos. Sin embargo, un sistema de archivos que comprueba la seguridad en operaciones específicas (operaciones FSCTL especiales, por ejemplo) podría necesitar realizar esta asignación.