Set-Acl
Altera o descritor de segurança de um item especificado, como um arquivo ou chave do registro.
Syntax
Set-Acl
[-Path] <String[]>
[-AclObject] <Object>
[-ClearCentralAccessPolicy]
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Acl
[-InputObject] <PSObject>
[-AclObject] <Object>
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Acl
-LiteralPath <String[]>
[-AclObject] <Object>
[-ClearCentralAccessPolicy]
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Esse cmdlet só está disponível na plataforma Windows.
O Set-Acl
cmdlet altera o descritor de segurança de um item especificado, como um arquivo ou uma chave do Registro, para corresponder aos valores em um descritor de segurança que você fornece.
Para usar Set-Acl
, use o parâmetro Path ou InputObject para identificar o item cujo descritor de segurança você deseja alterar. Em seguida, use os parâmetros AclObject ou SecurityDescriptor para fornecer um descritor de segurança com os valores que deseja aplicar. Set-Acl
aplica o descritor de segurança fornecido. Ele usa o valor do parâmetro AclObject como um modelo e altera os valores no descritor de segurança do item para que correspondam aos valores do parâmetro AclObject.
Exemplos
Exemplo 1: copiar 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
Esse comando copia os valores do descritor de segurança do arquivo Dog.txt para o descritor de segurança do arquivo Cat.txt. Quando os comandos forem concluídos, os descritores de segurança dos arquivos Dog.txt e Cat.txt serão idênticos.
O primeiro comando usa o Get-Acl
cmdlet para obter o descritor de segurança do arquivo Dog.txt.
O operador de atribuição (=
) armazena o descritor de segurança no valor da variável $DogACL.
O segundo comando usa Set-Acl
para alterar os valores na ACL de Cat.txt para os valores em $DogACL
.
O valor do parâmetro Path é o caminho para o arquivo Cat.txt. O valor do parâmetro AclObject é a ACL de modelo, nesse caso, a ACL de Dog.txt como salva na $DogACL
variável.
Exemplo 2: usar o operador de pipeline para passar um descritor
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
Esse comando é quase o mesmo que o comando no exemplo anterior, exceto que ele usa um operador de pipeline (|
) para enviar o descritor de segurança de um Get-Acl
comando para um Set-Acl
comando.
O primeiro comando usa o Get-Acl
cmdlet para obter o descritor de segurança do arquivo Dog.txt. O operador de pipeline (|
) passa um objeto que representa o descritor de segurança Dog.txt para o Set-Acl
cmdlet.
O segundo comando usa Set-Acl
para aplicar o descritor de segurança de Dog.txt a Cat.txt.
Quando o comando for concluído, as ACLs dos arquivos Dog.txt e Cat.txt serão idênticas.
Exemplo 3: Aplicar um descritor de segurança a vários arquivos
$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl
Esses comandos aplicam os descritores de segurança no arquivo File0.txt a todos os arquivos de texto no C:\Temp
diretório e a todos os seus subdiretórios.
O primeiro comando obtém o descritor de segurança do arquivo File0.txt no diretório atual e usa o operador de atribuição (=
) para armazená-lo na $NewACL
variável.
O primeiro comando no pipeline usa o cmdlet Get-ChildItem para obter todos os arquivos de texto no C:\Temp
diretório. O parâmetro Recurse estende o comando para todos os subdiretórios de C:\temp
. O parâmetro Include limita os arquivos recuperados para aqueles com a extensão de nome de .txt
arquivo. O parâmetro Force obtém arquivos ocultos, que do contrário, 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 de pipeline (|
) envia os objetos que representam os arquivos recuperados para o 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 Set-Acl
comandos que podem afetar mais de um item. Nesse caso, o segundo comando no pipeline seria Set-Acl -AclObject $NewAcl -WhatIf
. Esse comando lista os arquivos que seriam afetados pelo comando. Depois de examinar o resultado, você pode executar o comando novamente sem o parâmetro WhatIf .
Exemplo 4: Desabilitar herança e preservar 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
Esses comandos desabilitam a herança de acesso de pastas pai, preservando ainda as regras de acesso herdadas existentes.
O primeiro comando usa o Get-Acl
cmdlet para obter o descritor de segurança do arquivo Dog.txt.
Em seguida, variáveis são criadas para converter as regras de acesso herdadas em regras de acesso explícitas. Para proteger as regras de acesso associadas a isso contra herança, defina a $isProtected
variável como $true
. Para permitir a herança, defina como $isProtected
$false
. Para obter mais informações, consulte definir proteção de regra de acesso.
Defina a $preserveInheritance
variável como $true
para preservar regras de acesso herdadas ou $false
remover regras de acesso herdadas. Em seguida, a proteção de regra de acesso é atualizada usando o método SetAccessRuleProtection().
O último comando usa Set-Acl
para aplicar o descritor de segurança de a Dog.txt. Quando o comando for concluído, as ACLs dos Dog.txt herdados da pasta Animais de Estimação serão aplicadas diretamente a Dog.txt e novas políticas de acesso adicionadas ao Pets não alterarão o acesso ao Dog.txt.
Exemplo 5: Conceder aos administradores controle total 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
Esse comando concederá ao grupo BUILTIN\Administrators Controle total do arquivo Dog.txt.
O primeiro comando usa o Get-Acl
cmdlet para obter o descritor de segurança do arquivo Dog.txt.
As próximas variáveis são criadas para conceder ao grupo BUILTIN\Administrators controle total do arquivo Dog.txt. A $identity
variável definida como o nome de uma conta de usuário. A $fileSystemRights
variável é definida como FullControl e pode ser qualquer um dos valores FileSystemRights que especifica o tipo de operação associado à regra de acesso. A $type
variável definida como "Permitir" para especifica se deseja permitir ou negar a operação. A $fileSystemAccessRuleArgumentList
variável é uma lista de argumentos que deve ser passada ao criar o novo objeto FileSystemAccessRule . Em seguida, um novo objeto FileSystemAccessRule é criado e o objeto FileSystemAccessRule é passado para o método SetAccessRule(), adiciona a nova regra de acesso.
O último comando usa Set-Acl
para aplicar o descritor de segurança de a Dog.txt. Quando o comando for concluído, o grupo BUILTIN\Administrators terá controle total do Dog.txt.
Parâmetros
-AclObject
Especifica 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 objeto de segurança especificado.
Você pode salvar a saída de um Get-Acl
comando em uma variável e, em seguida, usar o parâmetro AclObject para passar a variável ou digitar um Get-Acl
comando.
Type: | Object |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ClearCentralAccessPolicy
Remove a política de acesso central do item especificado.
A partir de Windows Server 2012, os administradores podem usar o Active Directory e Política de Grupo para definir políticas de acesso central para usuários e grupos. Para obter mais informações, consulte Dynamic Controle de Acesso: Scenario Overview( Visão geral do cenário).
Este parâmetro foi introduzido no Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Solicita sua confirmação antes de executar o cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Exclude
Omite os itens especificados. O valor deste parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt
. Caracteres curinga são permitidos.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Especifica um filtro no formato ou linguagem do provedor. O valor deste parâmetro qualifica o parâmetro Path. A sintaxe do filtro, incluindo o uso de caracteres curingas, depende do provedor. Os filtros são mais eficientes do que outros parâmetros, pois o provedor os aplica ao recuperar os objetos, em vez de fazer com que o PowerShell filtre os objetos depois que eles são recuperados.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Include
Altera somente os itens especificados. O valor deste parâmetro qualifica o parâmetro Path.
Insira um elemento ou padrão de caminho, como *.txt
. Caracteres curinga são permitidos.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-InputObject
Altera o descritor de segurança do objeto especificado. Insira uma variável que contenha o objeto ou um comando que obtenha o objeto.
Não é possível canalizar 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 |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Altera o descritor de segurança do item especificado. Ao contrário de Path, o valor do parâmetro LiteralPath é usado exatamente como foi digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples ('
).
Aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.
Este parâmetro foi introduzido no Windows PowerShell 3.0.
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Passthru
Retorna um objeto que representa o descritor de segurança que foi alterado. Por padrão, este cmdlet não gera saída.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Altera o descritor de segurança do item especificado. Digite o caminho para um item, como um caminho para um arquivo ou chave de registro. Caracteres curinga são permitidos.
Se você passar um objeto de segurança para Set-Acl
(usando os parâmetros AclObject ou SecurityDescriptor ou passando um objeto de segurança de Get-Acl para Set-Acl
), e omitir o parâmetro Path (nome e valor), Set-Acl
usará o caminho incluído no objeto de segurança.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Você pode canalizar um objeto ACL para esse cmdlet.
Você pode redirecionar um descritor de segurança para este cmdlet.
Saídas
None
Por padrão, esse cmdlet não retorna nenhuma saída.
Quando você usa o parâmetro PassThru , esse cmdlet retorna um objeto de segurança. O tipo do objeto de segurança depende do tipo do item.
Observações
Esse cmdlet só está disponível em plataformas Windows.
O Set-Acl
cmdlet é compatível com o sistema de arquivos do PowerShell e os provedores de registro. Dessa forma, você pode usá-lo para alterar os descritores de segurança dos arquivos, diretórios e chaves do registro.