Cómo gestionar permisos ACL usando PowerShell

  1. Tipos de Permisos NTFS en PowerShell
  2. Usa el comando Get-Acl para obtener ACL para carpetas y archivos en PowerShell
  3. Usa el comando Set-Acl para establecer ACL para archivos y carpetas en PowerShell
  4. Usa el parámetro -RemoveAccessRule para eliminar permisos de usuario en PowerShell
  5. Deshabilitar o habilitar la herencia de permisos en PowerShell
  6. Usa el método SetOwner para cambiar la propiedad de archivos y carpetas en PowerShell
Cómo gestionar permisos ACL usando 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 o Ejecutar 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 permiso Atravesar carpeta tiene efecto cuando el usuario o grupo no tiene el derecho de Ignorar verificación de traspaso en el complemento de directivas de grupo.
  • Listar carpeta o Leer 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 o Escribir datos: El permiso Crear archivos permitirá a los usuarios crear archivos dentro de la carpeta con este permiso avanzado. Este permiso se aplica solo a carpetas. El permiso Escribir 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 o Añadir datos: El permiso Crear carpetas permite a los usuarios crear carpetas dentro de una carpeta con este permiso avanzado. Este permiso se aplica solo a carpetas. El permiso Añ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 permiso Eliminar en una carpeta o archivo, aún pueden eliminar un objeto si tienen el permiso Eliminar subcarpetas y archivos en la carpeta padre.
  • Leer permisos: Los usuarios con este permiso avanzado pueden leer los permisos de una carpeta o archivo, como Control total, Leer, y Escribir.
  • 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
¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn