Compartilhar via


Gerenciando privilégios em um sistema de arquivos

Privilege é um mecanismo que o sistema operacional usa para controlar operações específicas. Cada privilégio tem operações específicas associadas a ele que o chamador da operação pode executar se as duas condições a seguir forem atendidas:

  • O privilégio deve ser mantido pelo chamador.
  • O privilégio também deve ser habilitado.

O princípio desses requisitos é conhecido como privilégio mínimo. O princípio do menor privilégio exige que os privilégios sejam habilitados antes de serem usados, em vez de assumidos. Esse requisito minimiza a chance de um usuário executar inadvertidamente uma operação que não pretendia. Por exemplo, SeRestorePrivilege normalmente permitiria que o chamador ignorasse as verificações habituais de acesso de gravação a um arquivo. Por exemplo, um administrador pode não querer realmente ignorar as verificações de segurança normais quando estiver copiando um arquivo. No entanto, talvez eles queiram fazer isso ao restaurar o mesmo arquivo usando um utilitário de backup/restauração.

Para sistemas de arquivos, há muitos privilégios que geralmente são usados para modificar o comportamento normal (notadamente, verificações de segurança) para o sistema. Esses privilégios são:

  • SeBackupPrivilege permite a recuperação de conteúdo do arquivo, mesmo que o descritor de segurança no arquivo não conceda esse acesso. Um chamador com SeBackupPrivilege habilitado evita a necessidade de qualquer verificação de segurança baseada em ACL.

  • SeRestorePrivilege permite a modificação de conteúdo do arquivo, mesmo que o descritor de segurança no arquivo possa não conceder esse acesso. Essa função também pode ser usada para alterar o proprietário e a proteção.

  • SeChangeNotifyPrivilege permite atravessar à direita. Esse privilégio é uma otimização importante no Windows porque remove o custo de executar uma verificação de segurança em cada diretório em um caminho.

  • SeManageVolumePrivilege permite operações de gerenciamento de nível de volume específicas, como volume de bloqueio, desfragmentação, desmontagem de volume e definição de tamanho de dados válido no Windows XP e posterior. Um driver do sistema de arquivos impõe explicitamente esse privilégio específico principalmente com base em operações FSCTL. Nesse caso, o sistema de arquivos toma uma decisão de política para impor esse privilégio. A determinação de se esse privilégio é mantido pelo chamador é feita pelo monitor de referência de segurança como parte da verificação de privilégio normal.

Embora haja vários outros privilégios, eles normalmente são opacos para sistemas de arquivos e apenas o SRM ( Monitor de Referência de Segurança ) os interpreta.

As principais rotinas do Windows para gerenciar privilégios em um sistema de arquivos são:

  • SePrivilegeCheck executa uma verificação de um conjunto específico de privilégios necessários.

  • SeSinglePrivilegeCheck executa uma verificação de um único privilégio específico; é uma versão otimizada de SePrivilegeCheck.

  • SeAccessCheck executa verificação de acesso normal em um objeto (normalmente um objeto de arquivo para um sistema de arquivos).

  • SeFreePrivileges libera o bloco de privilégios retornado por uma chamada anterior para SeAccessCheck.

  • SeAppendPrivileges adiciona privilégios habilitados a uma estrutura de ACCESS_STATE. Normalmente, um sistema de arquivos usaria o ACCESS_STATE passado a ele durante o processamento do IRP_MJ_CREATE.