Compartilhar via


Manipulando Permissões de pastas com Powershell

Introdução

É comum termos que criar pastas ou usuários em scripts de automação, uma parte importante desse processo é configurar as permissões nas pastas e outras propriedades
como proprietário, neste artigo vamos aprender a utilizar esse recurso presente no Powershell.

Configurando permissões

Para configurarmos permissões nos diretórios utilizando Powershell, utilizamos uma combinação entre os cmdlts Get-Acl, Set-Acl e o objeto System.Security.AccessControl.FileSystemAccessRule,

Abaixo um breve exemplo sobre a utilização desses itens em conjunto.

$ACL = Get-Acl “E:\Nova Pasta”
$ACLRULE = New-Object System.Security.AccessControl.FileSystemAccessRule(“Administrator”,”FullControl”,”ContainerInherit”,”None”,”Allow”)
$ACL.AddAccessRule($ACLRULE)
Set-Acl “E:\Nova Pasta” $acl

Explicando então o que foi feito, utilizamos o cmdlet Get-Acl para criar um objeto contendo as permissões da pasta “Nova Pasta”
utilizamos o New-Object para criar um novo objeto do tipo FileSystemAccessRule, contendo as informações da permissão que queremos adicionar a pasta.

Utilizamos o método AddAccessRule passando como parâmetro o objeto FileSystemAccessRule para que essa regra seja adicionada ao nosso objeto ACL

Utilizamos o cmdlet Set-Acl para aplicar as permissões contidas no objeto ACL a pasta “Nova Pasta”

Dessa forma conseguimos adicionar permissões em pastas utilizando Powershell, caso queria adicionar permissões a um usuário do domínio utilize o formato user@dominio.local,

Para alterarmos as permissões que queremos aplicar trocamos somente os parâmetros passados para o FileSystemAccessRule no momento de criação por exemplo ao invés de darmos Fullcontrol queremos que o usuário HowToServer tenha permissões de somente leitura.

$ACLRULE = New-Object System.Security.AccessControl.FileSystemAccessRule(“HowToServer”,”Read”,”ContainerInherit”,”None”,”Allow”)

Explicações, passamos alguns parâmetros determinando a regra de permissão que queremos criar, o primeiro parâmetro é o usuário, podendo ser o nome simples ou com a extensão do domínio (“howtoserver@contoso.local”), segundo parâmetros é o tipo de permissão, temos as opções;

  • ListDirectory
  • ReadData
  • WriteData
  • CreateFiles
  • CreateDirectories
  • AppendData
  • ReadExtendedAttributes
  • WriteExtendedAttributes
  • Traverse
  • ExecuteFile
  • DeleteSubdirectoriesAndFiles
  • ReadAttributes
  • WriteAttributes
  • Write
  • Delete
  • ReadPermissions
  • Read
  • ReadAndExecute
  • Modify
  • ChangePermissions
  • TakeOwnership
  • Synchronize
  • FullControl

O terceiro parâmetro é a quais itens a permissão vai ser herdada e as opções são:

  • None.
  • ContainerInherit.
  • ObjectInherit.

Se quisermos que a permissão seja herdada para Pastas e Arquivos temos que criar duas ACLs uma para pastas e outra para arquivos e adicionar as duas ao diretório.

$ACL = Get-Acl 'E:\Nova Pasta'
$ACLRULE = New-Object
System.Security.AccessControl.FileSystemAccessRule(“Matheus”,”Read”,”ContainerInherit","none",”Allow”)
$ACL.AddAccessRule($ACLRULE)
$ACLRULE = New-Object System.Security.AccessControl.FileSystemAccessRule(“Admin”,”Read”,”ObjectInherit","none",”Allow”)$ACL.AddAccessRule($ACLRULE)
Set-Acl 'E:\Nova Pasta' $ACL

Quarto parâmetro representa a forma de propagação da permissão, podendo variar entre ;

  • None
  • NoPropagateInherit 
  • InheritOnly

Quinto e ultimo parâmetro é o que define o tipo de permissão, podendo ser permissões de acesso ou permissões de bloqueio, as opções são:

  • Allow
  • Deny

Referencias

Os sites abaixo contém mais informações sobre o assunto e podem ter sido utilizados como fonte de consulta.

http://msdn.microsoft.com/pt-br/library/system.security.accesscontrol.filesystemaccessrule.aspx
http://blogs.technet.com/b/josebda/archive/2010/11/12/how-to-handle-ntfs-folder-permissions-security-descriptors-and-acls-in-powershell.aspx

Este artigo foi originalmente escrito por:
Matheus Kamphorst | Blog: http://howtoserver.com

https://c.statcounter.com/8403015/0/f0ee4e3a/1/