Permisos NTFS y del Registro: ICACLS, PowerShell y SetACL explicados

Última actualización: 09/10/2025
Autor: Isaac
  • Comprende ACL, herencia y SIDs para aplicar permisos sin sorpresas.
  • Automatiza con ICACLS/TAKEOWN y PowerShell (Get-Acl/Set-Acl).
  • Gestiona NTFS y Registro con SetACL y usa backups de DACL.

Permisos NTFS y registro en Windows

Trabajar con permisos en Windows puede parecer un laberinto, pero no tiene por qué serlo. Si dominas NTFS, las listas de control de acceso (ACL) y las herramientas adecuadas (ICACLS, PowerShell, SetACL), aplicar permisos en masa a archivos, carpetas y claves del Registro se vuelve un proceso fiable y repetible.

En esta guía encontrarás todo condensado y explicado con detalle: conceptos clave (ACL, ACE, DACL, SACL, SDDL), herencia y orden de evaluación, cuentas especiales y SIDs, uso de ICACLS y TAKEOWN desde CMD, cmdlets Get-Acl y Set-Acl de PowerShell con ejemplos prácticos, y cómo tocar tanto NTFS como el Registro con SetACL. Además, verás buenas prácticas, resolución de conflictos y notas de auditoría para evitar sustos.

Fundamentos imprescindibles: NTFS, ACL, ACE, herencia y orden de evaluación

El sistema de archivos NTFS de Windows soporta un modelo de seguridad robusto basado en ACL. Una ACL es una lista de ACE (Access Control Entry) que definen permisos permitidos o denegados a identidades (usuarios, grupos, SIDs). Cada objeto securizable (archivo, carpeta, clave de registro, servicio, etc.) tiene un Descriptor de Seguridad (SD) con: propietario, grupo primario, DACL (quién puede) y SACL (qué se audita).

El orden de evaluación es crítico: primero se consideran las denegaciones explícitas, después las concesiones explícitas, luego denegaciones heredadas, y por último concesiones heredadas. Una vez que una ACE satisface la consulta, no se siguen evaluando las demás. Si un recurso no tiene DACL, el sistema concede acceso; si tiene DACL pero está vacía, se deniega.

En NTFS hay seis permisos básicos (Leer, Escribir, Listar contenido, Leer y ejecutar, Modificar, Control total), que se componen de permisos avanzados como RD (leer datos), WD (escribir datos), AD (anexar), REA/WEA (atributos extendidos), RA/WA (atributos), X (ejecutar/atravesar), DC (eliminar secundario), DE (eliminar), RC (leer control), WDAC (escribir DAC), WO (escribir propietario), S (sincronizar), y los conjuntos genéricos GR/GW/GE/GA. Las máscaras compuestas facilitan asignaciones rápidas (p.ej., M, F, RX) sin perder precisión.

Conceptos de ACL, ACE, DACL y herencia

Cuentas especiales y SIDs habituales que afectan a los permisos

Windows utiliza diferentes identidades con SIDs bien conocidos. Creator Owner (S-1-3-0) y Creator Group son marcadores que, al evaluar permisos, se sustituyen por el propietario actual o su grupo principal. Owner Rights (introducido en Vista/7) permite restringir lo que puede hacer el propietario, por ejemplo, impedir que cambie las ACL de sus propios objetos si así lo decides.

TrustedInstaller (servicio de instalación de componentes; SIDs que comienzan por S-1-5-80) mantiene el control sobre ficheros de sistema y claves críticas para proteger Windows. Otras identidades del sistema incluyen LOCAL SYSTEM (S-1-5-18), NETWORK SERVICE (S-1-5-20), LOCAL SERVICE (S-1-5-19), y grupos como Authenticated Users (S-1-5-11), Interactive (S-1-5-4) o Remote Interactive Logon (S-1-5-14). Conocer estos SIDs te ayuda a escribir reglas portables, evitando problemas de idioma (Administrators/Administradores).

  Guía definitiva: Cómo funcionan los créditos de IA en Microsoft 365 y Copilot (Word, Excel, PowerPoint, Outlook, Designer...)

Para grupos locales bien conocidos, por ejemplo, Administrators es el SID S-1-5-32-544. Si asignas permisos con el SID, evitarás ambigüedades por localización. Los SIDs de cuentas locales comienzan a numerarse desde S-1-5-1000 (usuarios creados), reservando S-1-5-500 para el Administrador y S-1-5-501 para el Invitado.

Identidades y SIDs en Windows

ICACLS y TAKEOWN desde CMD: concesión masiva, herencia y restauración

Concesiones típicas y herencia:

Lectura a un usuario/grupo en una carpeta concreta:

icacls "\\Path\to\share\folder" /grant DOMINIO\USUARIO:R

Modificar heredable a subcarpetas y archivos, recursivo:

icacls "\\Path\to\share\folder" /grant DOMINIO\USUARIO:(OI)(CI)M /T

Herencia y restablecimiento:

Habilitar herencia canónica sobre un árbol:

icacls.exe "%ruta%" /Q /T /inheritance:e

Quitar herencia y sustituir permisos explícitos (ejemplo frecuente para endurecer):

icacls "C:\test" /inheritance:r /grant:r DOM\Todos:(OI)(CI)(F)

Restaurar a permisos heredados por defecto en todos los secundarios:

icacls "C:\test\ejemplo\*" /c /t /reset

Usar SIDs evita problemas de idioma:

Administrators (S-1-5-32-544) y SYSTEM (S-1-5-18) con control total en cada subcarpeta:

for /F "eol=* tokens=*" %%%%i in ('dir "%ruta%" /b /AD') do icacls.exe "%ruta%\\%%%%i" /Q /grant:r *S-1-5-32-544:(OI)(CI)(F) /grant:r *S-1-5-18:(OI)(CI)(F)

Tomar posesión previamente cuando no tienes acceso:

takeown.exe /f "%ruta%" /R /A /D S

Nota: en sistemas en inglés, la confirmación automática es Y en lugar de S.

Más operaciones de ICACLS que conviene dominar:

Guardar DACL para backup:

icacls C:\test\* /save C:\acl-backup\ACL_backup.txt /T

Restaurar DACL desde backup:

icacls C:\test\ /restore C:\acl-backup\ACL_backup.txt

Buscar SIDs en ACL:

icacls nombre /findsid SID

Verificar canonicidad:

icacls nombre /verify

Permisos simples útiles: N (ninguno), F (control total), M (modificar), RX (leer y ejecutar), R (solo lectura), W (solo escritura), D (eliminar). Permisos específicos incluyen DE, RC, WDAC, WO, S, AS, MA, GR, GW, GE, GA, RD, WD, AD, REA, WEA, X, DC, RA, WA. Para herencia: (OI) objeto, (CI) contenedor, (IO) solo herencia, (NP) no propagar, (I) heredado.

Un patrón general muy práctico con ICACLS es:

icacls USUARIO_O_SID:(herencias)(permisos)

Primero piensa en herencia (OI/CI/IO), luego en la máscara de permisos que necesitas, y por último decide si reemplazas (:r) o agregas entradas.

PowerShell con Get-Acl y Set-Acl: copiar, aplicar en masa y granularidad

PowerShell aporta un control fino sobre descriptores de seguridad. Get-Acl obtiene el SD de un elemento (archivo, carpeta, clave de registro) y Set-Acl lo aplica. Este cmdlet está disponible solo en Windows y funciona con los proveedores FileSystem y Registry.

Aplicar un descriptor en masa a muchos archivos:

$model = Get-Acl -Path "C:\temp\File0.txt"

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

Consejo: prueba antes con -WhatIf para ver qué se tocaría.

  ¿Cómo puedo actualizar mi iPhone, iPod o iPad a iOS 5.0?

Deshabilitar herencia conservando ACE heredadas:

$acl = Get-Acl -Path "C:\Pets\Dog.txt"

$acl.SetAccessRuleProtection($true, $true)

Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $acl

Con $isProtected=$true rompes herencia; con $preserveInheritance=$true conviertes heredadas en explícitas.

Conceder control total a Administrators creando una FileSystemAccessRule:

$acl = Get-Acl -Path "C:\Pets\Dog.txt"

$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("BUILTIN\Administrators","FullControl","Allow")

$acl.SetAccessRule($rule)

Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $acl

Parámetros clave de Set-Acl que usarás a menudo:

-Path o -LiteralPath (uno u otro) para señalar el elemento; -AclObject para pasar el SD; -InputObject para trabajar directamente con objetos; -PassThru si quieres que devuelva el SD; -WhatIf y -Confirm para seguridad operativa. Admite filtros, include/exclude y puede limpiar Directivas de Acceso Central (-ClearCentralAccessPolicy) en sistemas con DAC.

Uso de PowerShell Get-Acl y Set-Acl

Mapeo de derechos básicos y avanzados: cómo pensar la máscara correcta

Cuando seleccionas permisos básicos en la GUI (Leer, Modificar, Control total…), en realidad estás activando combinaciones de derechos avanzados. Por ejemplo, Modificar incluye lectura, ejecución, escritura y eliminar; Control total suma además WDAC (cambiar permisos) y WO (cambiar propietario). Entender este mapeo te evita sorpresas y ayuda a escribir reglas precisas en ICACLS, PowerShell o SetACL.

Al documentar o comparar configuraciones, acuérdate de que herramientas de línea de comandos muestran abreviaturas (RD, WD, AD, X, DE, DC, RC, WDAC, WO, etc.). Si normalizas tu documentación con estas siglas, podrás reconocer al vuelo si una DACL concede, por ejemplo, ejecución sin escritura, o si permite eliminar secundarios pero no el objeto en sí.

Trabajar con el Registro y NTFS desde SetACL / SetACL Studio

SetACL (y su versión Studio) es un clásico para administrar permisos tanto en el sistema de archivos como en el Registro. Su ventaja es la uniformidad de sintaxis para distintos objetos y la facilidad para encadenar acciones en una sola línea.

Ejemplos prácticos:

Cambiar permisos en una clave del Registro para dar control total a un usuario del dominio:

SetACLexe -on "HKEY_LOCAL_MACHINE\SOFTWARE\Proveedor\Producto\Clave" -ot reg -actn ace -ace "n:DOMINIO.local\Usuario;p:full"

Conceder control total en una carpeta a un grupo local/AD:

SetACLexe -on "C:\Ruta\Carpeta" -ot file -actn ace -ace "n:usuarios;p:full"

Con SetACL puedes también manipular herencia, eliminar ACE existentes, y operar con SIDs explícitos. Si necesitas reportes y edición interactiva, SetACL Studio proporciona interfaz visual mientras conserva compatibilidad conceptual con la línea de comandos.

Escenarios reales: propietarios, conflictos, permisos efectivos y auditoría

Ser propietario de un objeto no te otorga mágicamente control total, pero sí el derecho a cambiar la DACL. Por eso, en entornos donde no quieres que los creadores se autoeleven, aplica Owner Rights con restricciones (p.ej., denegar WRITE_DAC al propietario) en el directorio raíz. Así el creador no podrá retocarse permisos en los objetos que genere.

Conflictos típicos: un usuario pertenece al grupo Empleados (solo lectura), pero tiene una ACE explícita que le permite escritura. Gana la explícita. Si quieres que prevalezca la denegación, coloca una denegación explícita adecuada. Recuerda siempre el orden de evaluación para evitar huecos.

  Reparación: Uso excesivo de la CPU del revendedor en tiempo actual en Home windows 10 Residence

Romper herencia: cuando desmarcas «incluir permisos heredables» en la GUI, Windows ofrece copiar ACE heredadas como explícitas o quitarlas todas. Quitar todo puede dejar el objeto sin acceso si no añades nuevas ACE inmediatamente. En despliegues masivos, planifica y valida con \-WhatIf o copias de seguridad de DACL.

Permisos efectivos y auditoría: la pestaña de Permisos efectivos permite comprobar qué recibe un usuario o grupo tras evaluar todas las ACE. Para auditar accesos (aciertos/errores), configura SACL en el objeto y habilita en directivas locales la auditoría de acceso a objetos; revisa eventos en eventvwr.msc. Auditar selectivamente reduce ruido y ayuda a diagnosticar.

UAC no cambia permisos de NTFS ni del Registro, pero controla la elevación. En admins con UAC alto, verás más avisos; con UAC bajo, menos fricción pero más superficie de riesgo. Ajusta el nivel según la política de seguridad de tu organización.

Patrones de automatización: de un bat rápido a PowerShell y backups

Para tareas repetitivas, puedes combinar TAKEOWN + ICACLS en un script por lotes. Por ejemplo, una plantilla que pregunte la ruta y permita: establecer propietario Administrators, conceder Administrators/SYSTEM, habilitar herencia, etc. El detalle importante es confirmar automáticamente con /D S en TAKEOWN en sistemas en español (o /D Y en inglés).

Si lo tuyo es PowerShell, encapsula patrones como copiar DACL de un modelo, romper herencia preservando ACE heredadas, o crear reglas con FileSystemAccessRule. Con -Include, -Exclude, -Filter y Get-ChildItem -Recurse, puedes ajustar el alcance con mucha precisión y, por supuesto, probar con -WhatIf antes de aplicar.

No olvides la estrategia de guardar y restaurar DACL con ICACLS para rollback rápido:

icacls C:\ruta\* /save C:\acl-backup\ACL_backup.txt /T

icacls C:\ruta\ /restore C:\acl-backup\ACL_backup.txt

Versiona esos backups si vas a hacer varias oleadas de cambios.

Todo este arsenal (conceptos de ACL, herencia y orden de evaluación; identidades y SIDs; ICACLS/TAKEOWN; PowerShell Get-Acl/Set-Acl; SetACL para NTFS y Registro) te permite definir, aplicar y documentar permisos de forma consistente. Cuando combines recursividad, herencia bien pensada y pruebas con -WhatIf o backups de DACL, verás que incluso despliegues grandes resultan manejables y sin sobresaltos.

ntfs
Artículo relacionado:
Tutorial: Administrar permisos NTFS en Windows