Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A função da máscara de acesso é descrever os direitos de acesso de forma compacta. 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 traduzidos em um conjunto de direitos mais detalhados usando a função RtlMapGenericMask.
A figura a seguir ilustra a máscara de acesso.
Os direitos genéricos são:
GENERIC_READ — o direito de ler as informações mantidas pelo objeto.
GENERIC_WRITE — o direito de escrever as informações mantidas pelo objeto.
GENERIC_EXECUTE — o direito de executar ou visualizar, alternativamente, o objeto.
GENERIC_ALL—o direito de ler, escrever e executar o objeto.
Estes direitos podem ser combinados. Por exemplo, tanto GENERIC_READ como GENERIC_WRITE podem ser solicitados. O mapeamento resultante requer a união dos direitos necessários para cada direito genérico. Esse paradigma imita os bits de acesso "rwx" do UNIX que são usados para controlar o acesso aos recursos do UNIX. Os direitos genéricos na máscara de acesso simplificam o desenvolvimento de aplicativos no Windows, uma vez que 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 identificador de segurança (SID) do proprietário do objeto. Lembre-se que os proprietários sempre têm o direito de modificar o objeto.
SYNCHRONIZE—o direito de aguardar um determinado objeto (assumindo que esperar é um conceito válido para o objeto).
Os 16 bits inferiores da máscara de acesso representam os direitos específicos. O significado destes direitos específicos é exclusivo do 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, direitos específicos são normalmente interpretados de forma diferente, dependendo se o objeto de arquivo representa um arquivo ou um diretório. Para os ficheiros, a interpretação normal é a seguinte:
FILE_READ_DATA — o direito de ler dados de um determinado arquivo.
FILE_WRITE_DATA—o direito de gravar dados no arquivo determinado (dentro do intervalo existente do arquivo).
FILE_APPEND_DATA—o direito de estender o arquivo determinado.
FILE_READ_EA—O direito de ler os atributos estendidos do arquivo.
FILE_WRITE_EA—o direito de modificar os atributos estendidos do ficheiro.
FILE_EXECUTE—o direito de executar localmente o arquivo determinado. A execução de um arquivo armazenado em um compartilhamento remoto requer permissão de leitura, uma vez 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 de um determinado diretório.
FILE_WRITE_EA—o direito de escrever os atributos estendidos de um determinado diretório.
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 o direito de acesso FILE_LIST_DIRECTORY poderia abrir um arquivo que 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 dentro do diretório atual.
FILE_READ_ATTRIBUTES — o direito de ler as informações de atributos de um diretório.
FILE_WRITE_ATTRIBUTES—o direito de modificar as informações de atributo de um diretório.
O Gerenciador de E/S define o mapeamento real de direitos genéricos para direitos padrão e específicos para objetos de arquivo. Um sistema de arquivos pode recuperar esse mapeamento usando IoGetFileObjectGenericMapping. Normalmente, o Gestor de E/S faz esse mapeamento durante o processamento IRP_MJ_CREATE antes de chamar o sistema de arquivos. Mas um sistema de arquivos que verifica a segurança em operações específicas (operações FSCTL especializadas, por exemplo) pode precisar fazer esse mapeamento por conta própria.