Como Gerenciar Permissões ACL Usando PowerShell

  1. Tipos de Permissões NTFS no PowerShell
  2. Use o Comando Get-Acl para Obter ACL para Pastas e Arquivos no PowerShell
  3. Use o Comando Set-Acl para Definir ACL para Arquivos e Pastas no PowerShell
  4. Use o Parâmetro -RemoveAccessRule para Remover Permissões de Usuário no PowerShell
  5. Desativar ou Ativar Herança de Permissões no PowerShell
  6. Use o Método SetOwner para Alterar a Propriedade de Arquivo e Pasta no PowerShell
Como Gerenciar Permissões ACL Usando PowerShell

Os administradores de sistema configuram listas de controle de acesso NTFS ACLs adicionando entradas de controle de acesso ACEs em servidores de arquivos NTFS para implementar um modelo de privilégio mínimo.

Este artigo aprenderá os diferentes tipos de permissões e como consultar, modificar e remover ACL em arquivos e pastas usando PowerShell.

Tipos de Permissões NTFS no PowerShell

Existem permissões NTFS avançadas e básicas. Por exemplo, você pode definir cada permissão como Negar ou Permitir.

  • Controle Total: Usuários com essa permissão podem modificar, adicionar, mover e deletar arquivos e diretórios, assim como suas propriedades associadas. Além disso, os usuários com essa permissão podem alterar as configurações de permissões para todos os subdiretórios e arquivos.
  • Modificar: Usuários com essa permissão podem visualizar e modificar arquivos e propriedades de arquivos, incluindo adicionar e deletar arquivos em um diretório ou propriedades de arquivo a um arquivo.
  • Ler e Executar: Usuários com essa permissão podem executar arquivos executáveis, incluindo scripts.
  • Ler: Usuários podem visualizar arquivos, propriedades de arquivo e diretórios com essa permissão.
  • Escrever: Usuários com essa permissão podem escrever em um arquivo e adicionar arquivos a diretórios.

Aqui está a lista de permissões avançadas:

  • Navegar na Pasta ou Executar Arquivo: Usuários com essa permissão avançada podem navegar por pastas para alcançar outras pastas ou arquivos, mesmo que não tenham permissões para esses arquivos ou pastas. Usuários com essa permissão avançada também podem executar arquivos executáveis. A permissão Navegar na Pasta tem efeito quando o usuário ou grupo não possui o direito Ignorar Verificação de Navegação no complemento de Política de Grupo.
  • Listar Pasta ou Ler Dados: Usuários com essa permissão avançada podem visualizar uma lista de arquivos e subpastas dentro da pasta e o conteúdo dos arquivos.
  • Ler Atributos: Usuários com essa permissão avançada podem visualizar os atributos de uma pasta ou arquivo, como se está oculto ou somente leitura.
  • Escrever Atributos: Usuários com essa permissão avançada podem alterar os atributos de um arquivo ou pasta.
  • Ler Atributos Estendidos: Usuários com essa permissão avançada podem visualizar os atributos estendidos de uma pasta ou arquivo, como permissões e horários de criação e modificação.
  • Escrever Atributos Estendidos: Usuários com essa permissão avançada podem alterar os atributos estendidos de uma pasta ou arquivo.
  • Criar Arquivos ou Escrever Dados: A permissão Criar Arquivos permitirá que os usuários criem arquivos dentro da pasta com essa permissão avançada. Essa permissão se aplica apenas a pastas. A permissão Escrever Dados habilitará usuários com essa permissão avançada a modificar o arquivo e sobrescrever o conteúdo existente. Essa permissão se aplica apenas a arquivos.
  • Criar Pastas ou Adicionar Dados: A permissão Criar Pastas permite que os usuários criem pastas dentro de uma pasta com essa permissão avançada. Essa permissão se aplica apenas a pastas. A permissão Adicionar Dados permitirá que usuários com essa permissão avançada façam alterações ao final do arquivo, mas não podem alterar, sobrescrever ou deletar dados existentes. Essa permissão se aplica apenas a arquivos.
  • Deletar: Usuários com essa permissão avançada podem deletar a pasta ou arquivo. Se os usuários não tiverem a permissão Deletar em uma pasta ou arquivo, ainda poderão deletar um objeto se tiverem a permissão Deletar Subpastas e Arquivos na pasta pai.
  • Ler Permissões: Usuários com essa permissão avançada podem ler as permissões de uma pasta ou arquivo, como Controle Total, Ler e Escrever.
  • Alterar Permissões: Usuários com essa permissão avançada podem alterar as permissões de um arquivo ou pasta.
  • Tomar Propriedade: Usuários com essa permissão avançada podem assumir a propriedade do arquivo ou pasta. O proprietário do arquivo ou pasta pode sempre alterar suas permissões, independentemente de quaisquer permissões existentes que protejam o arquivo ou pasta.
  • Sincronizar: Usuários com essa permissão avançada podem usar o objeto para sincronização. Essa permissão permitirá que uma thread espere até que o objeto esteja no estado sinalizado. Essa permissão não é apresentada no Editor de ACL.

Podemos encontrar todas as informações sobre essas permissões de usuário executando o seguinte script PowerShell abaixo:

[System.Enum]::GetNames([System.Security.AccessControl.FileSystemRights])

As permissões NTFS podem ser explícitas ou herdadas. As permissões explícitas são configuradas individualmente, enquanto as permissões herdadas são herdadas da pasta pai.

A hierarquia para permissões é a seguinte:

  • Negar Explícito
  • Permitir Explícito
  • Negar Herdado
  • Permitir Herdado

Use o Comando Get-Acl para Obter ACL para Pastas e Arquivos no PowerShell

O primeiro comando PowerShell usado para gerenciar permissões de arquivo e pasta é Get-Acl; ele lista todas as permissões do objeto.

Get-Acl \\fs1\shared\hr | fl

Um usuário deve possuir tanto as pastas de destino quanto as de origem para copiar permissões.

Get-Acl \\fs1\shared\hr | Set-Acl \\fs1\shared\hr

Use o Comando Set-Acl para Definir ACL para Arquivos e Pastas no PowerShell

O comando PowerShell Set-Acl é usado para alterar o descritor de segurança de um item especificado, como um arquivo, pasta ou chave de registro; em outras palavras, é usado para modificar permissões de arquivo ou pasta.

$acl = Get-Acl \\fs1\shared\hr

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01", "FullControl", "Allow")

$acl.SetAccessRule($AccessRule)

$acl | Set-Acl \\fs1\shared\hr

Use o Parâmetro -RemoveAccessRule para Remover Permissões de Usuário no PowerShell

$acl = Get-Acl \\fs1\shared\hr

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01", "FullControl", "Allow")

$acl.RemoveAccessRule($AccessRule)

$acl | Set-Acl \\fs1\shared\hr

Desativar ou Ativar Herança de Permissões no PowerShell

Para gerenciar uma herança, podemos usar o método SetAccessRuleProtection. O método tem dois parâmetros:

  • O primeiro parâmetro é responsável por bloquear a herança da pasta pai. Ele retorna estados booleanos: $true e $false.
  • O segundo parâmetro é utilizado para saber se as permissões herdadas atuais são removidas ou retidas. Ele também retorna estados booleanos: $true e $false.
$acl = Get-Acl \\fs1\shared\hr

$acl.SetAccessRuleProtection($true, $false)

$acl | Set-Acl \\fs1\shared\hr

Vamos reverter essa alteração e habilitar a herança para a pasta novamente:

$acl = Get-Acl \\fs1\shared\hr

$acl.SetAccessRuleProtection($false, $true)

$acl | Set-Acl \\fs1\shared\hr

Use o Método SetOwner para Alterar a Propriedade de Arquivo e Pasta no PowerShell

Se quisermos definir um proprietário para uma pasta, você precisa executar o método SetOwner.

$acl = Get-Acl \\fs1\shared\hr

$object = New-Object System.Security.Principal.Ntaccount("ENTERPRISE\User01")

$acl.SetOwner($object)

$acl | Set-Acl \\fs1\shared\hr
Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn