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-Acl
command.
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-Acl
cmdlet, 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
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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