Share via


Máscara de Acesso

A função da máscara de acesso é descrever os direitos de acesso em um formulário compacto. Para simplificar o gerenciamento de acesso, a máscara de acesso contém um conjunto de quatro bits, os direitos genéricos, que são convertidos em um conjunto de direitos mais detalhados usando a função RtlMapGenericMask.

A figura a seguir ilustra a máscara de acesso.

diagrama ilustrando a máscara de acesso.

Os direitos genéricos são um dos seguintes:

  • GENERIC_READ – o direito de ler as informações mantidas pelo objeto .

  • GENERIC_WRITE – o direito de gravar as informações mantidas pelo objeto .

  • GENERIC_EXECUTE – o direito de executar ou, alternativamente, olhar para o objeto.

  • GENERIC_ALL – o direito de ler, gravar e executar o objeto.

Observe que esses direitos podem ser combinados (GENERIC_READ e GENERIC_WRITE podem ser solicitados, por exemplo) com o mapeamento resultante que exige a união dos direitos necessários para cada direito genérico. Esse paradigma imita bits de acesso "rwx" unix usados para controlar o acesso a recursos UNIX. Os direitos genéricos na máscara de acesso simplificam o desenvolvimento de aplicativos no Windows, pois esses direitos mascaram os diferentes direitos de segurança para vários tipos de objeto.

O seguinte conjunto de direitos padrão é aplicável a todos os tipos de objeto:

  • DELETE – o direito de excluir o objeto específico.

  • READ_CONTROL – o direito de ler as informações de controle (segurança) do objeto.

  • WRITE_DAC – o direito de modificar as informações de controle (segurança) do objeto.

  • WRITE_OWNER — o direito de modificar o SID proprietário do objeto. Lembre-se de que os proprietários sempre têm o direito de modificar o objeto.

  • SYNCHRONIZE — o direito de aguardar no objeto fornecido (supondo que esse seja um conceito válido para o objeto).

Os 16 bits inferiores da máscara de acesso representam os direitos específicos. O significado desses direitos específicos é exclusivo para o objeto em questão. Para sistemas de arquivos, os principais interesses são os direitos específicos para objetos de arquivo. Para objetos de arquivo, os direitos específicos normalmente são interpretados de forma diferente, dependendo se o objeto de arquivo representa um arquivo ou um diretório. Para arquivos, a interpretação normal é:

  • FILE_READ_DATA – o direito de ler dados do arquivo especificado.

  • FILE_WRITE_DATA – o direito de gravar dados no arquivo fornecido (dentro do intervalo existente do arquivo).

  • FILE_APPEND_DATA – o direito de estender o arquivo especificado.

  • FILE_READ_EA — o direito de ler os atributos estendidos do arquivo.

  • FILE_WRITE_EA — o direito de modificar os atributos estendidos do arquivo.

  • FILE_EXECUTE – o direito de executar localmente o arquivo especificado. Executar um arquivo armazenado em um compartilhamento remoto requer permissão de leitura, já que o arquivo é lido do servidor, mas executado no cliente.

  • FILE_READ_ATTRIBUTES – o direito de ler as informações de atributo do arquivo.

  • FILE_WRITE_ATTRIBUTES – o direito de modificar as informações de atributo do arquivo.

Para diretórios, os mesmos valores de bit são usados, mas sua interpretação é diferente em alguns dos seguintes casos:

  • FILE_LIST_DIRECTORY – o direito de listar o conteúdo do diretório.

  • FILE_ADD_FILE – o direito de criar um novo arquivo dentro do diretório.

  • FILE_ADD_SUBDIRECTORY – o direito de criar um novo diretório (subdiretório) dentro do diretório.

  • FILE_READ_EA – o direito de ler os atributos estendidos do diretório especificado.

  • FILE_WRITE_EA – o direito de gravar os atributos estendidos do diretório especificado.

  • FILE_TRAVERSE – o direito de acessar objetos dentro do diretório. O direito de acesso FILE_TRAVERSE é diferente do direito de acesso FILE_LIST_DIRECTORY. Manter o direito de acesso FILE_LIST_DIRECTORY permite que uma entidade obtenha uma lista do conteúdo de um diretório, enquanto o direito de acesso FILE_TRAVERSE dá a uma entidade o direito de acessar o objeto. Um chamador sem a FILE_LIST_DIRECTORY direito de acesso poderia abrir um arquivo que ele sabia que já existia, mas não seria capaz de obter uma lista do conteúdo do diretório.

  • FILE_DELETE_CHILD – o direito de excluir um arquivo ou diretório no diretório atual.

  • FILE_READ_ATTRIBUTES – o direito de ler as informações de atributo de um diretório.

  • FILE_WRITE_ATTRIBUTES — o direito de modificar as informações de atributo de um diretório.

O mapeamento real de direitos genéricos para direitos padrão e específicos para objetos de arquivo é definido pelo gerente de E/S. Esse mapeamento pode ser recuperado por um sistema de arquivos usando IoGetFileObjectGenericMapping. Normalmente, esse mapeamento é feito durante IRP_MJ_CREATE processamento pelo gerente de E/S antes de chamar o sistema de arquivos. Mas isso pode ser feito por um sistema de arquivos que verifica a segurança em operações específicas (operações FSCTL especializadas, por exemplo).