Partilhar via


Set-Acl

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

Sintaxe

ByPath (Predefinição)

Set-Acl
    [-Path] <String[]>
    [-AclObject] <Object>
    [[-CentralAccessPolicy] <String>]
    [-ClearCentralAccessPolicy]
    [-PassThru]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-WhatIf]
    [-Confirm]
    [-UseTransaction]
    [<CommonParameters>]

ByInputObject

Set-Acl
    [-InputObject] <PSObject>
    [-AclObject] <Object>
    [-PassThru]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-WhatIf]
    [-Confirm]
    [-UseTransaction]
    [<CommonParameters>]

ByLiteralPath

Set-Acl
    [-AclObject] <Object>
    [[-CentralAccessPolicy] <String>]
    -LiteralPath <String[]>
    [-ClearCentralAccessPolicy]
    [-PassThru]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-WhatIf]
    [-Confirm]
    [-UseTransaction]
    [<CommonParameters>]

Description

O cmdlet Set-Acl 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 fornecido.

Para usar Set-Acl, utilize o parâmetro Path ou InputObject para identificar o item do qual deseja alterar o descritor de segurança. Em seguida, use os parâmetros AclObject ou SecurityDescriptor para fornecer um descritor de segurança que tenha os valores que pretende 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 corresponder aos valores no parâmetro AclObject.

Exemplos

Exemplo 1: Copiar um descritor de segurança de um ficheiro para outro

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

Esses comandos copiam os valores do descritor de segurança do arquivo Dog.txt para o descritor de segurança do arquivo Cat.txt. Quando os comandos são concluídos, os descritores de segurança dos arquivos Dog.txt e Cat.txt são idênticos.

O primeiro comando usa o cmdlet Get-Acl 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 do modelo, neste caso, a ACL de Dog.txt como salva na variável $DogACL.

Exemplo 2: Usar o operador de pipeline para passar um descritor

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

Este 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 comando Get-Acl para um comando Set-Acl.

O primeiro comando usa o cmdlet Get-Acl 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 cmdlet Set-Acl.

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

Exemplo 3: Aplicar um descritor de segurança a vários ficheiros

$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 diretório C:\Temp e 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 variável $NewACL.

O primeiro comando no pipeline usa o cmdlet Get-ChildItem para obter todos os arquivos de texto no diretório C:\Temp. O parâmetro Recurse estende o comando a todos os subdiretórios de C:\temp. O parâmetro Include limita os arquivos recuperados àqueles com a extensão de nome de arquivo .txt. O parâmetro Force obtém arquivos ocultos, que de outra forma seriam excluídos. (Não é possível 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 cmdlet Set-Acl, 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 de um item. Neste caso, o segundo comando no pipeline seria Set-Acl -AclObject $NewAcl -WhatIf. Este comando lista os arquivos que seriam afetados pelo comando. Depois de revisar o resultado, você pode executar o comando novamente sem o parâmetro WhatIf.

Exemplo 4: Desativar a 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

Esses comandos desabilitam a herança de acesso das pastas pai, preservando as regras de acesso herdadas existentes.

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

Em seguida, as 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 variável $isProtected como $true. Para permitir a herança, defina $isProtected como $false. Para obter mais informações, consulte definir proteção de regra de acesso.

Defina a variável $preserveInheritance como $true para preservar as regras de acesso herdadas ou $false para remover as regras de acesso herdadas. Em seguida, a proteção da regra de acesso é atualizada usando o método SetAccessRuleProtection().

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

Exemplo 5: Conceder aos administradores o 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

Este comando concederá ao grupo BUILTIN\Administrators controle total do arquivo Dog.txt.

O primeiro comando usa o cmdlet Get-Acl 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 variável $identity definida como o nome de uma conta de usuário . A variável $fileSystemRights está definida como FullControl, e pode ser qualquer um dos valores de FileSystemRights que determina o tipo de operação associada à regra de acesso. A variável $type definida como "Allow" determina se a operação deve ser permitida ou recusada. A variável $fileSystemAccessRuleArgumentList é uma lista de argumentos que deve ser passada ao fazer o novo FileSystemAccessRule objeto. Em seguida, é criado um novo objeto FileSystemAccessRule, e em seguida, o objeto FileSystemAccessRule é passado para o método SetAccessRule(), adicionando a nova regra de acesso.

O último comando usa Set-Acl para aplicar o descritor de segurança de 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 do objeto de segurança especificado.

Você pode salvar a saída de um comando Get-Acl em uma variável e, em seguida, usar o parâmetro AclObject para passar a variável ou digitar um comando Get-Acl.

Propriedades dos parâmetros

Tipo:Object
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:1
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-CentralAccessPolicy

Estabelece ou altera a política de acesso central do item. Insira o ID CAP ou o nome amigável de uma política de acesso central no computador.

A partir do Windows Server 2012, os administradores podem usar o Ative Directory e a Diretiva de Grupo para definir políticas de acesso central para usuários e grupos. Para obter mais informações, consulte Controlo de Acesso Dinâmico: Visão Geral do Cenário.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

ByPath
Position:2
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False
ByLiteralPath
Position:2
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-ClearCentralAccessPolicy

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

A partir do Windows Server 2012, os administradores podem usar o Ative Directory e a Diretiva de Grupo para definir políticas de acesso central para usuários e grupos. Para obter mais informações, consulte Controlo de Acesso Dinâmico: Visão Geral do Cenário.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

ByPath
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
ByLiteralPath
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Confirm

Solicita confirmação antes de executar o cmdlet.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Cf.

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Exclude

Omite os itens especificados. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt. Curingas são permitidos.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Filter

Especifica um filtro no formato ou idioma do provedor. O valor desse parâmetro qualifica o parâmetro Path. A sintaxe do filtro, incluindo o uso de curingas, depende do provedor. Os filtros são mais eficientes do que outros parâmetros, porque 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.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Include

Altera apenas os itens especificados. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt. Curingas são permitidos.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-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.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Propriedades dos parâmetros

Tipo:PSObject
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

ByInputObject
Position:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos: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 está digitado. Nenhum caractere é interpretado como carta curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples ('). Aspas simples indicam ao PowerShell para não interpretar quaisquer caracteres como sequências de escape.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False
Aliases:PSPath

Conjuntos de parâmetros

ByLiteralPath
Position:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-PassThru

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

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Path

Altera o descritor de segurança do item especificado. Insira o caminho para um item, como um caminho para um arquivo ou chave do Registro. Curingas são permitidos.

Se você passar um objeto de segurança para Set-Acl (usando o AclObject ou SecurityDescriptor parâmetros 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.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

ByPath
Position:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-UseTransaction

Inclui o comando na transação ativa. Este parâmetro é válido somente quando uma transação está em andamento. Para obter mais informações, consulte about_Transactions.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Usetx

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-WhatIf

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

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Wi

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

ObjectSecurity

Você pode canalizar um objeto ACL para este cmdlet.

CommonSecurityDescriptor

Você pode canalizar um descritor de segurança para esse cmdlet.

Saídas

None

Por padrão, esse cmdlet não retorna nenhuma saída.

FileSecurity

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.

Notas

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