Cómo gestionar permisos ACL usando PowerShell
- Tipos de Permisos NTFS en PowerShell
-
Usa el comando
Get-Acl
para obtener ACL para carpetas y archivos en PowerShell -
Usa el comando
Set-Acl
para establecer ACL para archivos y carpetas en PowerShell -
Usa el parámetro
-RemoveAccessRule
para eliminar permisos de usuario en PowerShell - Deshabilitar o habilitar la herencia de permisos en PowerShell
-
Usa el método
SetOwner
para cambiar la propiedad de archivos y carpetas en PowerShell

Los administradores del sistema configuran las listas de control de acceso NTFS ACLs
añadiendo entradas de control de acceso ACEs
en los servidores de archivos NTFS para implementar un modelo de mínimo privilegio.
Este artículo aprenderá sobre los diferentes tipos de permisos y cómo consultar, modificar y eliminar ACL en archivos y carpetas usando PowerShell.
Tipos de Permisos NTFS en PowerShell
Hay permisos NTFS tanto avanzados como básicos. Por ejemplo, puedes establecer cada permiso en Denegar
o Permitir
.
Control total
: Los usuarios con este permiso pueden modificar, añadir, mover y eliminar archivos y directorios, así como sus propiedades asociadas. Además, los usuarios con este permiso pueden cambiar la configuración de permisos para todos los subdirectorios y archivos.Modificar
: Los usuarios con este permiso pueden ver y modificar archivos y propiedades de archivos, incluyendo añadir y eliminar archivos a un directorio o propiedades de archivos a un archivo.Leer y ejecutar
: Los usuarios con este permiso pueden ejecutar archivos ejecutables, incluyendo scripts.Leer
: Los usuarios pueden ver archivos, propiedades de archivos y directorios con este permiso.Escribir
: Los usuarios con este permiso pueden escribir en un archivo y añadir archivos a directorios.
Aquí está la lista de permisos avanzados:
Atravesar carpeta
oEjecutar archivo
: Los usuarios con este permiso avanzado pueden navegar por carpetas para alcanzar otras carpetas o archivos, incluso si no tienen permisos para estos archivos o carpetas. Los usuarios con este permiso avanzado también pueden ejecutar archivos ejecutables. El permisoAtravesar carpeta
tiene efecto cuando el usuario o grupo no tiene el derecho deIgnorar verificación de traspaso
en el complemento de directivas de grupo.Listar carpeta
oLeer datos
: Los usuarios con este permiso avanzado pueden ver una lista de archivos y subcarpetas dentro de la carpeta y el contenido de los archivos.Leer atributos
: Los usuarios con este permiso avanzado pueden ver los atributos de una carpeta o archivo, como si está oculto o es de solo lectura.Escribir atributos
: Los usuarios con este permiso avanzado pueden cambiar los atributos de un archivo o carpeta.Leer atributos extendidos
: Los usuarios con este permiso avanzado pueden ver los atributos extendidos de una carpeta o archivo, como permisos y tiempos de creación y modificación.Escribir atributos extendidos
: Los usuarios con este permiso avanzado pueden cambiar los atributos extendidos de una carpeta o archivo.Crear archivos
oEscribir datos
: El permisoCrear archivos
permitirá a los usuarios crear archivos dentro de la carpeta con este permiso avanzado.Este permiso se aplica solo a carpetas.
El permisoEscribir datos
permitirá a los usuarios con este permiso avanzado cambiar el archivo y sobrescribir el contenido existente. Este permiso solo se aplica a archivos.Crear carpetas
oAñadir datos
: El permisoCrear carpetas
permite a los usuarios crear carpetas dentro de una carpeta con este permiso avanzado.Este permiso se aplica solo a carpetas.
El permisoAñadir datos
permitirá a los usuarios con este permiso avanzado hacer cambios al final del archivo, pero no pueden cambiar, sobrescribir o eliminar datos existentes. Este permiso solo se aplica a archivos.Eliminar
: Los usuarios con este permiso avanzado pueden eliminar la carpeta o archivo. Si los usuarios no tienen el permisoEliminar
en una carpeta o archivo, aún pueden eliminar un objeto si tienen el permisoEliminar subcarpetas y archivos
en la carpeta padre.Leer permisos
: Los usuarios con este permiso avanzado pueden leer los permisos de una carpeta o archivo, comoControl total
,Leer
, yEscribir
.Cambiar permisos
: Los usuarios con este permiso avanzado pueden cambiar los permisos de un archivo o carpeta.Tomar posesión
: Los usuarios con este permiso avanzado pueden tomar posesión del archivo o carpeta. El propietario del archivo o carpeta siempre puede cambiar sus permisos, independientemente de los permisos existentes que protejan el archivo o carpeta.Sincronizar
: Los usuarios con este permiso avanzado pueden usar el objeto para sincronización. Este permiso permitirá que un hilo espere hasta que el objeto esté en el estado señalado. Este permiso no se presenta en el Editor de ACL.
Podemos encontrar toda la información sobre estos permisos de usuario ejecutando el siguiente script de PowerShell a continuación:
[System.Enum]::GetNames([System.Security.AccessControl.FileSystemRights])
Los permisos NTFS pueden ser explícitos o heredados. Los permisos explícitos se configuran de forma individual, mientras que los permisos heredados son heredados de la carpeta padre.
La jerarquía de permisos es la siguiente:
- Denegación explícita
- Permiso explícito
- Denegación heredada
- Permiso heredado
Usa el comando Get-Acl
para obtener ACL para carpetas y archivos en PowerShell
El primer comando de PowerShell utilizado para gestionar permisos de archivos y carpetas es Get-Acl
; lista todos los permisos de objeto.
Get-Acl \\fs1\shared\hr | fl
Un usuario debe ser propietario tanto de las carpetas de destino como de origen para copiar permisos.
Get-Acl \\fs1\shared\hr | Set-Acl \\fs1\shared\hr
Usa el comando Set-Acl
para establecer ACL para archivos y carpetas en PowerShell
El comando de PowerShell Set-Acl
se utiliza para cambiar el descriptor de seguridad de un elemento especificado, como un archivo, carpeta o clave de registro; en otras palabras, se utiliza para modificar los permisos de archivos o carpetas.
$acl = Get-Acl \\fs1\shared\hr
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01", "FullControl", "Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl \\fs1\shared\hr
Usa el parámetro -RemoveAccessRule
para eliminar permisos de usuario en PowerShell
$acl = Get-Acl \\fs1\shared\hr
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01", "FullControl", "Allow")
$acl.RemoveAccessRule($AccessRule)
$acl | Set-Acl \\fs1\shared\hr
Deshabilitar o habilitar la herencia de permisos en PowerShell
Para gestionar una herencia, podemos usar el método SetAccessRuleProtection
. El método tiene dos parámetros:
- El primer parámetro es responsable de bloquear la herencia de la carpeta padre. Devuelve estados booleanos:
$true
y$false
. - El segundo parámetro se utiliza para saber si los permisos heredados actuales se eliminan o se retienen. También devuelve estados booleanos:
$true
y$false
.
$acl = Get-Acl \\fs1\shared\hr
$acl.SetAccessRuleProtection($true, $false)
$acl | Set-Acl \\fs1\shared\hr
Volvamos a revertir este cambio y habilitemos la herencia para la carpeta nuevamente:
$acl = Get-Acl \\fs1\shared\hr
$acl.SetAccessRuleProtection($false, $true)
$acl | Set-Acl \\fs1\shared\hr
Usa el método SetOwner
para cambiar la propiedad de archivos y carpetas en PowerShell
Si queremos establecer un propietario para una carpeta, necesitas ejecutar el método SetOwner
.
$acl = Get-Acl \\fs1\shared\hr
$object = New-Object System.Security.Principal.Ntaccount("ENTERPRISE\User01")
$acl.SetOwner($object)
$acl | Set-Acl \\fs1\shared\hr
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn