Partilhar via


Gerenciando privilégios em um sistema de arquivos

Privilégio é 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 atribuído à pessoa que faz a chamada.
  • O privilégio também deve ser ativado.

O princípio destes requisitos é conhecido como privilégio mínimo. O privilégio mínimo requer 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 usuais de acesso de gravação a um arquivo. Por exemplo, um administrador pode não querer necessariamente substituir as verificações de segurança normais ao copiar um arquivo. No entanto, eles podem querer fazê-lo ao restaurar esse 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 (notavelmente, verificações de segurança) para o sistema. Esses privilégios são:

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

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

  • SeChangeNotifyPrivilege permite a travessia à 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 específicas de gerenciamento no nível de volume, como bloquear volume, desfragmentar, desmontar volume e definir o comprimento de dados válido no Windows XP e posterior. Um driver de 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 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 existam vários outros privilégios, eles normalmente são opacos para os sistemas de arquivos e apenas o SRM (Security Reference Monitor ) os interpreta.

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

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

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

  • SeAccessCheck executa a 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 ACCESS_STATE. Normalmente, um sistema de arquivos usaria o ACCESS_STATE passado a ele durante o processamento do IRP_MJ_CREATE.