Set-Acl

Módulo: Microsoft.PowerShell.Security

Altera o descritor de segurança de um item especificado, tal como um arquivo ou uma chave de registro.

Syntax

Set-Acl <String> <Object> >] >] 
Set-Acl <PSObject> <Object> >] >] 
Set-Acl -LiteralPath <String> <Object> >] >] 

Descrição

A Set-Acl cmdlet altera o descritor de segurança de um item especificado, tal como um ficheiro ou uma chave de registo, para corresponder aos valores de um descritor de segurança que você fornece.

Para usar Set-Acl, use o parâmetro Path ou InputObject para identificar o item cujo securitydescriptor você deseja alterar. Depois, use os parâmetros AclObject ou SecurityDescriptor para fornecer um descritor de segurança que tenha os valores que você deseja aplicar. Set-Acl aplica o securitydescriptor que é fornecido. Ele usa o valor do parâmetro AclObject como modelo e altera os valores do descritor de segurança do item para corresponder aos valores do parâmetro AclObject.

Exemplos

Exemplo 1: Copie um descritor de segurança de um arquivo para outro

$DogACL = Get-Acl -Path "C:\Dog.txt"Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL

Estes comandos copiam os valores do descritor de segurança do arquivo Dog.txt para o securitydescriptor do arquivo Cat.txt. Quando os comandos são completados, os descritores de segurança do arquivo Dog.txt e Cat.txt são idênticos.

O primeiro comando usa o Get-Acl cmdlet para obter o descritor de segurança do arquivo Dog.txt.O operador da atribuição (=) guarda o descritor de segurança no valor da variável $DogACL.

O segundo comando usa o comando Set-Acl para alterar os valores no ACL do Cat.txt para os valores em$DogACL.

O valor do parâmetro Path é o caminho para o ficheiro Cat.txt. O valor do parâmetro AclObjectparameter é o modelo ACL, neste caso, o ACL do Dog.txt como guardado na variável $DogACL.

Exemplo 2: Use o operador do pipeline para passar um descritor

Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"

Este comando é quase igual ao comando do exemplo anterior, exceto que ele usa o operador do apipeline (|) para enviar o descritor de segurança de um comando Get-Acl para um comando Set-Aclcommand.

O primeiro comando usa o comando Get-Acl cmdlet para obter o descritor de segurança do arquivo Dog.txt. O operadorpipeline (|) passa um objeto que representa o descritor de segurança Dog.txt para o arquivoSet-Acl cmdlet.

O segundo comando usa o comando Set-Acl para aplicar o descritor de segurança do arquivo Dog.txt ao Cat.txt.Quando o comando termina, as ACLs dos arquivos Dog.txt e Cat.txt são idênticas.

Exemplo 3: Aplique um descritor de segurança a múltiplos arquivos

$NewAcl = Get-Acl File0.txtGet-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl

Estes comandos aplicam os descritores de segurança no arquivo 0.O primeiro comando obtém o descritor de segurança do ficheiro File0.txt no directório actual e utiliza o operador de atribuição (=) para o guardar no directório $NewACL variável.

O primeiro comando no pipeline utiliza o comando Get-ChildItem cmdlet para obter todos os ficheiros de texto no directórioC:\Temp. O parâmetro Recurse estende o comando a todos os subdiretórios deC:\temp. O parâmetro Incluir limita os ficheiros recuperados àqueles com a extensão .txt do nome do ficheiro. O parâmetro Force obtém arquivos ocultos, que de outra forma seriam excluídos. (Você não pode usar c:\temp\*.txt, porque o parâmetro Recurse funciona em diretórios, não em arquivos.)

O operador do pipeline (|) envia os objetos representando os arquivos recuperados para o comando Set-Aclcmdlet, que aplica o descritor de segurança no parâmetro AclObject a todos os arquivos no pipeline.

Na prática, é melhor usar o parâmetro WhatIf com todos os comandos Set-Acl que podem afetar mais que um item. Neste caso, o segundo comando no pipeline seriaSet-Acl -AclObject $NewAcl -WhatIf. Este comando lista os arquivos que seriam afetados pelo comando. Após rever o resultado, você pode executar o comando novamente sem o parâmetro WhatIf.

Exemplo 4: Desabilitar herança e preservar as regras de acesso herdadas

$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"$isProtected = $true$preserveInheritance = $true$NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance)Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

Estes comandos irão desabilitar o acesso à herança a partir das pastas pai, preservando as regras de acesso herdadas existentes.

O primeiro comando usa o comando Get-Acl cmdlet para obter o descritor de segurança do arquivo Dog.txt.

Next, variáveis são criadas para converter as regras de acesso herdadas para regras de acesso explícitas. Toprotect the access rules associated with this from inheritance, set the $isProtected variable to$true.to allow inheritance, set $isProtected to $false. Para obter mais informações, defina a proteção da regra de acesso Seeet. A variável $preserveInheritance definida como $true para preservar as regras de acesso herdadas; regras de acesso herdadas com toremove falso. Então a proteção da regra de acesso é atualizada usando o métodoSetAccessRuleProtection().

O último comando usa Set-Acl para aplicar o descritor de segurança de Dog.txt. Quando o comandocompletes, as ACLs do arquivo Dog.txt que foram herdadas da pasta Pets serão aplicadas diretamente ao Dog.txt, e novas políticas de acesso adicionadas ao Pets não irão alterar o acesso ao Dog.txt.

Exemplo 5: Grant Administrators Full Control do arquivo

$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"# Set properties$identity = "BUILTIN\Administrators"$fileSystemRights = "FullControl"$type = "Allow"# Create new rule$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type$fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList# Apply new rule$NewAcl.SetAccessRule($fileSystemAccessRule)Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

Este comando irá conceder ao grupo BUILTIN\Administrators Full control of the Dog.txt file.

O primeiro comando usa o comando Get-Acl cmdlet para obter o descritor de segurança do arquivo Dog.txt.

Variáveis seguintes são criadas para conceder ao grupo BUILTIN\Administradores o controle total do arquivo Dog.txt. A variável $identity é definida para o nome da conta auser. A variável $fileSystemRights definida para FullControl, e pode ser qualquer um dos valores doFileSystemRights que especificam o tipo de operação associada com a regra de acesso. A variável $type definida como “Allow” especifica se a operação é permitida ou negada. A variável $fileSystemAccessRuleArgumentList é uma lista de argumentos que deve ser passada ao fazer o novo objeto FileSystemAccessRule. Então um novo objeto FileSystemAccessRule é criado, e o objeto FileSystemAccessRule é passado para o métodoSetAccessRule(), adiciona a nova regra de acesso.

O último comando usa Set-Acl para aplicar o descritor de segurança de Dog.txt. Quando o comando estiver completo, o grupo BUILTIN\Administrators terá controle total do Dog.txt.

Parameters

-AclObject

Specifica uma ACL com os valores de propriedade desejados. Set-Acl altera a ACL do item especificado pelo parâmetro Path ou InputObject para corresponder aos valores no objecto de segurança especificado.

Pode guardar a saída de um comando Get-Acl numa variável e depois usar o parâmetro AclObjectparameter para passar a variável, ou digitar um comando Get-Acl.

Tipo: Objecto
Posição: 1
Valor por defeito: Nenhum
Aceitar entrada do pipeline: Verdade
Aceitar caracteres wildcard: Falso
-ClearCentralAccessPolicy

Retirar a política de acesso central do item especificado.

Iniciando no Windows Server 2012, os administradores podem usar o Active Directory e a Política de Grupo para definir as políticas de acesso central para usuários e grupos. Para obter mais informações, consulteControle de acesso dinâmico: Visão Geral do Cenário.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type: SwitchParameter
Position: Named
Valor por defeito: False
Aceptar entrada do pipeline: Falso
Aceitar caracteres wildcard: Falso

-Confirmar

Procede para confirmação antes de executar o cmdlet.

Tipo: SwitchParameter
Aliases: cf
Posição: Nome
Valor por defeito: Falso
Aceitar entrada da conduta: Falso
Aceitar caracteres wildcard: Falso
-Excluir

Omitir os itens especificados. O valor deste parâmetro qualifica o parâmetro Caminho. Introduza o elemento ou padrão do apath, como por exemplo *.txt. São permitidos wildcards.

Type: String
Posição: Nome:
Valor por defeito: Nenhum
Aceitar entrada do pipeline: Falso
Aceitar caracteres curinga: Verdade
Filtro

Definir um filtro no formato ou idioma do fornecedor. O valor deste parâmetro qualifica o parâmetroPath. A sintaxe do filtro, incluindo o uso de wildcards, depende do provedor. Os filtros são mais eficientes que outros parâmetros, porque o provedor os aplica ao recuperar os objetos, ao invés de ter o PowerShell filtrando os objetos depois que eles são recuperados.

Type: String
Posição: Nome
Valor por defeito: Nenhum
Aceitar entrada do pipeline: Falso
Aceitar caracteres wildcard: Verdade
-Incluir

Alterar apenas os itens especificados. O valor deste parâmetro qualifica o parâmetro Caminho. Introduza um elemento ou padrão do caminho, como por exemplo *.txt. São permitidos wildcards.

Type: String
Posição: Nome:
Valor por defeito: Nenhum
Aceitar entrada do pipeline: Falso
Aceitar caracteres wildcard: Verdade
-InputObject

Altera o descritor de segurança do objecto especificado. Insira uma variável que contenha o objeto ou um comando que obtenha o objeto.

Não é possível pipear o objeto a ser alterado para Set-Acl. Em vez disso, use o parâmetro InputObject explicitamente no comando.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type: PSObject
Posição: 0
Valor por defeito: Nenhum
Aceitar entrada do pipeline: Verdade
Aceitar caracteres wildcard: Falso
LiteralPath

Altera o descritor de segurança do item especificado. Ao contrário de Path, o valor do parâmetroLiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado aswildcards. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples ('). As aspas simples dizem ao PowerShell para não interpretar quaisquer caracteres como sequências de escape.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type: String
Aliases: PSPath
Position: Nome
Valor por defeito: Nenhum
Aceitar entrada do gasoduto: Verdade
Aceitar caracteres wildcard: Falso
-Passthru

Retorna um objecto que representa o descritor de segurança que foi alterado. Por padrão, este cmdlet não gera nenhuma saída.

Type: SwitchParameter
Position: Named
Valor por defeito: Nenhum
Aceitar entrada do pipeline: Falso
Aceitar caracteres wildcard: Falso
Caminho

Altera o descritor de segurança do item especificado. Introduza o caminho para um item, tal como um caminho para um ficheiro ou chave de registo. Wildcards são permitidos.

Se você passar um objeto de segurança para Set-Acl (usando os parâmetros AclObject ouSecurityDescriptor ou passando um objeto de segurança de Get-Acl para Set-Acl), e você omitir o parâmetro Path (nome e valor), Set-Acl usa o caminho que está incluído no objeto de segurança.

Type: String
Posição: 0
Valor por defeito: Nenhum
Aceitar entrada do pipeline: Verdade
Aceitar caracteres curinga: Verdade
– E se

Mostra o que aconteceria se o cmdlet funcionasse. O cmdlet não é executado.

Tipo: SwitchParameter
Aliases: wi
Posição: Nome
Valor por defeito: Falso
Aceitar entrada do gasoduto: Falso
Aceitar caracteres curinga: Falso

Entradas

Sistema.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor

Pode canalizar um objecto ACL ou um descritor de segurança para Set-Acl.

Outputs

FileSecurity

Por defeito, Set-Acl não gera qualquer saída. No entanto, se você usar o parâmetro Passthru, ele gera um objeto de segurança. O tipo do objeto de segurança depende do tipo do item.

Notas

Este cmdlet só está disponível em plataformas Windows.

O Set-Acl cmdlet é suportado pelo sistema de arquivos PowerShell e provedores de registro. Como tal, você pode usá-lo para alterar os descritores de segurança de arquivos, diretórios e chaves de registro.

  • Get-Acl
  • FileSystemAccessRule
  • ObjectSecurity.SetAccessRuleProtection
  • FileSystemRights

Deixe uma resposta

O seu endereço de email não será publicado.