Set-Acl

Módulo: Microsoft.PowerShell.Security

Cambia el descriptor de seguridad de un elemento especificado, como un archivo o una clave del registro.

Sintaxis

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

Descripción

El cmdlet Set-Aclcambia el descriptor de seguridad de un elemento especificado, como un archivo o una clave de aregistro, para que coincida con los valores de un descriptor de seguridad que usted proporciona.

Para utilizar Set-Acl, use el parámetro Path o InputObject para identificar el elemento cuyo descriptor de seguridad desea cambiar. Luego, utilice los parámetros AclObject o SecurityDescriptor para suministrar un descriptor de seguridad que tenga los valores que desea aplicar. Set-Acl aplica el descriptor de seguridad suministrado. Utiliza el valor del parámetro AclObject como modelo y cambia los valores del descriptor de seguridad del elemento para que coincidan con los valores del parámetro AclObject.

Ejemplos

Ejemplo 1: Copiar un descriptor de seguridad de un archivo a otro

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

Estos comandos copian los valores del descriptor de seguridad del archivo Dog.txt al descriptor de seguridad del archivo Cat.txt. Cuando los comandos se completan, los descriptores de seguridad de los archivos Dog.txt y Cat.txt son idénticos.

El primer comando utiliza el cmdlet Get-Acl para obtener el descriptor de seguridad del archivo Dog.txt.El operador de asignación (=) almacena el descriptor de seguridad en el valor de la variable $DogACL.

El segundo comando utiliza Set-Acl para cambiar los valores de la ACL de Cat.txt a los valores de$DogACL.

El valor del parámetro Path es la ruta del archivo Cat.txt. El valor del parámetro AclObject es la ACL del modelo, en este caso, la ACL de Dog.txt guardada en la variable $DogACL.

Ejemplo 2: Utilizar el operador pipeline para pasar un descriptor

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

Este comando es casi igual que el del ejemplo anterior, salvo que utiliza el operador apipeline (|) para enviar el descriptor de seguridad de un comando Get-Acl a un comando Set-Acl.

El primer comando utiliza el cmdlet Get-Acl para obtener el descriptor de seguridad del archivo Dog.txt. El operadorpipeline (|) pasa un objeto que representa el descriptor de seguridad de Dog.txt al cmdletSet-Acl.

El segundo comando utiliza Set-Acl para aplicar el descriptor de seguridad de Dog.txt a Cat.txt.Cuando el comando se completa, las ACL de los archivos Dog.txt y Cat.txt son idénticas.

Ejemplo 3: Aplicar un descriptor de seguridad a varios archivos

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

Estos comandos aplican los descriptores de seguridad del archivo File0.txt a todos los archivos de texto en el directorio C:\Temp y todos sus subdirectorios.

El primer comando obtiene el descriptor de seguridad del archivo File0.txt en el directorio actual y utiliza el operador de asignación (=) para almacenarlo en la variable $NewACL.

El primer comando de la cadena utiliza el cmdlet Get-ChildItem para obtener todos los archivos de texto en el directorioC:\Temp. El parámetro Recurse extiende el comando a todos los subdirectorios deC:\temp. El parámetro Include limita los archivos recuperados a los que tienen la extensión de nombre de archivo .txt. El parámetro Force obtiene los archivos ocultos, que de otro modo quedarían excluidos. (No se puede utilizar c:\temp\*.txt, porque el parámetro Recurse funciona en directorios, no en archivos.)

El operador de canalización (|) envía los objetos que representan los archivos recuperados al cmdlet Set-Acl, que aplica el descriptor de seguridad en el parámetro AclObject a todos los archivos en la canalización.

En la práctica, es mejor utilizar el parámetro WhatIf con todos los comandos Set-Acl que pueden afectar a más de un elemento. En este caso, el segundo comando de la cadena sería Set-Acl -AclObject $NewAcl -WhatIf. Este comando enumera los archivos que se verían afectados por el comando. Después de revisar el resultado, puede ejecutar el comando de nuevo sin el parámetro WhatIf.

Ejemplo 4: Desactivar la herencia y preservar las reglas de acceso heredadas

$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

Estos comandos son deshabilitarán la herencia de acceso de las carpetas padre, al tiempo que preservan las reglas de acceso heredadas existentes.

El primer comando utiliza el cmdlet Get-Acl para obtener el descriptor de seguridad del archivo Dog.txt.

A continuación, se crean variables para convertir las reglas de acceso heredadas en reglas de acceso explícitas. Para proteger las reglas de acceso asociadas a esto de la herencia, establezca la variable $isProtected a$true.Para permitir la herencia, establezca $isProtected a $false. La variable $preserveInheritance se establece en $true para preservar las reglas de acceso heredadas; false para eliminar las reglas de acceso heredadas. Luego se actualiza la protección de la regla de acceso utilizando el métodoSetAccessRuleProtection().

El último comando utiliza Set-Acl para aplicar el descriptor de seguridad de a Dog.txt. Cuando el comando se complete, las ACL del archivo Dog.txt que se heredaron de la carpeta Pets se aplicarán directamente a Dog.txt, y las nuevas políticas de acceso añadidas a Pets no cambiarán el acceso a Dog.txt.

Ejemplo 5: Conceder a los administradores el control total del archivo

$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á al grupo BUILTIN\Administrators el control total del archivo Dog.txt.

El primer comando utiliza el cmdlet Get-Acl para obtener el descriptor de seguridad del archivo Dog.txt.

Se crean las siguientes variables para conceder al grupo BUILTINAdministrators el control total del archivo Dog.txt. La variable $identity establecida con el nombre de la cuenta auser. La variable $fileSystemRights establecida como FullControl, y puede ser cualquiera de los valores de FileSystemRights que especifica el tipo de operación asociada con la regla de acceso. La variable $type establecida como «Allow» para especificar si se debe permitir o denegar la operación. La variable $fileSystemAccessRuleArgumentList es una lista de argumentos que se debe pasar al crear el nuevo objeto FileSystemAccessRule. Entonces se crea un nuevo objeto FileSystemAccessRule, y el objeto FileSystemAccessRule se pasa al métodoSetAccessRule(), añade la nueva regla de acceso.

El último comando utiliza Set-Acl para aplicar el descriptor de seguridad de a Dog.txt. Cuando el comando se complete, el grupo BUILTINAdministradores tendrá el control total del Dog.txt.

Parámetros

-AclObject

Especifica una ACL con los valores de propiedad deseados. Set-AclCambia la ACL del elemento especificado por el parámetro Path o InputObject para que coincida con los valores del objeto de seguridad especificado.

Puede guardar la salida de un comando Get-Acl en una variable y luego utilizar el parámetro AclObject para pasar la variable, o escribir un comando Get-Acl.

Tipo: Objeto
Posición: 1
Valor por defecto: Ninguna
Acepta la entrada de la tubería: True
Acepta caracteres comodín: False

-ClearCentralAccessPolicy

Elimina la política de acceso central del elemento especificado.

A partir de Windows Server 2012, los administradores pueden utilizar Active Directory y la directiva de grupo para establecer políticas de acceso central para usuarios y grupos. Para obtener más información, consulte Control de acceso dinámico: Descripción del escenario.

Este parámetro se introdujo en Windows PowerShell 3.0.

Tipo: SwitchParameter
Posición: Nombre
Valor predeterminado: False
Acepta la entrada de la tubería: False
Aceptar caracteres comodín: False
Confirmar

Le pide confirmación antes de ejecutar el cmdlet.

Tipo: SwitchParameter
Aliases: cf
Posición: Nombre
Valor por defecto: Falso
Aceptar entrada de tuberías: Falso
Aceptar caracteres comodín: Falso
-Excluir

Permite los elementos especificados. El valor de este parámetro califica el parámetro Path. Introduzca un elemento o patrón de ruta, como *.txt. Se permiten los comodines.

Tipo: Cadena
Posición: Nombre
Valor por defecto: Ninguna
Acepta la entrada de la tubería: Falso
Acepta caracteres comodín: Verdadero
Filtro

Especifica un filtro en el formato o idioma del proveedor. El valor de este parámetro califica el parámetroPath. La sintaxis del filtro, incluyendo el uso de comodines, depende delproveedor. Los filtros son más eficientes que otros parámetros, porque el proveedor los aplica cuando recupera los objetos, en lugar de que PowerShell filtre los objetos después de recuperarlos.

Tipo: Cadena
Posición: Nombre
Valor por defecto: Ninguna
Acepta la entrada de la tubería: Falso
Acepta caracteres comodín: Verdadero
Incluir

Cambia sólo los elementos especificados. El valor de este parámetro califica el parámetro Path.Introduzca un elemento o patrón de ruta, como *.txt. Se permiten los comodines.

Tipo: Cadena
Posición: Nombre
Valor por defecto: Ninguna
Acepta la entrada de la tubería: Falso
Acepta caracteres comodín: Verdadero
InputObject

Cambia el descriptor de seguridad del objeto especificado. Introduzca una variable que contenga el objeto o un comando que obtenga el objeto.

No puede canalizar el objeto que se va a cambiar a Set-Acl. En su lugar, utilice el parámetro InputObjectexplícitamente en el comando.

Este parámetro se introdujo en Windows PowerShell 3.0.

Tipo: PSObject
Posición: 0
Valor por defecto: Ninguna
Acepta la entrada de la tubería: Verdadero
Acepta caracteres comodín: Falso
LiteralPath

Cambia el descriptor de seguridad del elemento especificado. A diferencia de Path, el valor del parámetroLiteralPath se utiliza exactamente como se escribe. No se interpretan caracteres como comodines. Si la ruta incluye caracteres de escape, enciérrela entre comillas simples (').Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.

Este parámetro se introdujo en Windows PowerShell 3.0.

Tipo: Cadena
Alias: PSPath
Posición: Nombrado
Valor por defecto: Nada
Aceptar entrada de tuberías: True
Acepta caracteres comodín: False
Passthru

Devuelve un objeto que representa el descriptor de seguridad que se ha modificado. Por defecto, este cmdletno genera ninguna salida.

Tipo: SwitchParameter
Posición: Nombre
Valor por defecto: Ninguna
Acepta la entrada de la tubería: Falso
Acepta caracteres comodín: Falso
Ruta

Cambia el descriptor de seguridad del elemento especificado. Introduzca la ruta de acceso a un elemento, como una ruta de acceso a un archivo o una clave del registro. Se permiten comodines.

Si pasa un objeto de seguridad a Set-Acl (ya sea utilizando los parámetros AclObject o SecurityDescriptor o pasando un objeto de seguridad desde Get-Acl a Set-Acl), y omite el parámetro Path (nombre y valor), Set-Acl utiliza la ruta que se incluye en este objeto de seguridad.

Tipo: Cadena
Posición: 0
Valor por defecto: Ninguna
Acepta la entrada de la tubería: True
Acepta caracteres comodín: True
-WhatIf

Muestra lo que ocurriría si el cmdlet se ejecuta. El cmdlet no se ejecuta.

Tipo: SwitchParameter
Aliases: wi
Posición: Nombre
Valor por defecto: Falso
Aceptar entrada de tuberías: Falso
Aceptar caracteres comodín: Falso

Entradas

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

Puede canalizar un objeto ACL o un descriptor de seguridad a Set-Acl.

Outputs

FileSecurity

Por defecto, Set-Acl no genera ninguna salida. Sin embargo, si se utiliza el parámetro Passthru, genera un objeto de seguridad. El tipo de objeto de seguridad depende del tipo de elemento.

Notas

Este cmdlet sólo está disponible en plataformas Windows.

El cmdlet Set-Acl es compatible con el sistema de archivos de PowerShell y los proveedores del registro. Como tal, puede utilizarlo para cambiar los descriptores de seguridad de archivos, directorios y claves del registro.

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada.