icacls - Ver y cambiar permisos

Mantenido el

A veces, al abrir una carpeta aparece “No tiene permiso para obtener acceso a esta carpeta”, o al eliminar un archivo aparece “Acceso denegado”.

La causa son los permisos (ACL: lista de control de acceso) del archivo o la carpeta. En el Símbolo del sistema puede ver y cambiar los permisos con el comando icacls y tomar la posesión con el comando takeown.

Este artículo explica cómo usar ambos comandos, centrándose en los procedimientos más habituales.

Sintaxis básica del comando icacls

icacls <archivo o carpeta> [opciones]

Sin opciones, muestra los permisos actuales.

icacls "C:\work"
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>icacls "C:\work"
C:\work NT AUTHORITY\SYSTEM:(OI)(CI)(F)
BUILTIN\Administrators:(OI)(CI)(F)
DESKTOP-ABC123\taro:(OI)(CI)(F)
Se procesaron correctamente 1 archivos; error al procesar 0 archivos
C:\users\user>

Cada línea es la configuración de un usuario (o grupo), con el formato usuario:(permiso).

Tipos de permisos

Códigos como (F) y (M) indican el permiso concedido. Estos cinco son los más usados (los “derechos simples”).

CódigoSignificado
FControl total (todas las operaciones, incluido cambiar permisos)
MModificar (leer, escribir y eliminar)
RXLectura y ejecución
RSolo lectura
WSolo escritura

Existen también derechos individuales, como D (eliminar), pero con estos cinco basta para empezar.

Códigos de herencia

Si los permisos de una carpeta se transmiten a los archivos y subcarpetas que contiene, se indica con códigos antes del permiso.

CódigoSignificado
(OI)Herencia de objeto. Se transmite a los archivos de la carpeta
(CI)Herencia de contenedor. Se transmite a las subcarpetas de la carpeta
(IO)Solo herencia. No se aplica a la propia carpeta
(NP)Sin propagación. Solo se transmite un nivel, no más abajo
(I)La configuración se heredó de la carpeta superior

Para dar permisos a toda una carpeta, lo normal es añadir (OI)(CI) a la vez.

Conceder permisos (/grant)

Use /grant para añadir permisos a un usuario o grupo.

icacls "C:\work" /grant "Users:(OI)(CI)M"

Esto concede al grupo Users el permiso “Modificar” sobre C:\work y todo su contenido.

Para el usuario actual puede usar la variable de entorno %USERNAME%.

icacls "C:\work" /grant "%USERNAME%:(OI)(CI)F"

/grant añade a la configuración existente. Para reemplazarla, use /grant:r.

icacls "C:\work" /grant:r "%USERNAME%:(OI)(CI)RX"

Con /grant:r, los permisos de tipo “permitir” que ya tuviera el usuario indicado se reemplazan por los nuevos (las entradas heredadas y las de denegación no se reemplazan).

Los nombres de grupo cambian según el idioma de Windows

Los nombres de los grupos integrados pueden mostrarse de forma distinta según el idioma del sistema. Para mayor seguridad, indique el SID precedido de *. Por ejemplo, Administrators es *S-1-5-32-544 y Everyone es *S-1-1-0.

icacls "C:\work" /grant "*S-1-5-32-544:(OI)(CI)F"

Denegar y quitar permisos

Para bloquear a un usuario concreto, use /deny.

icacls "C:\work\secret.txt" /deny "Guest:(R)"

Para eliminar por completo la entrada de un usuario, use /remove.

icacls "C:\work\secret.txt" /remove "Guest"
Las entradas de denegación tienen prioridad sobre las de permiso

Una entrada de denegación (/deny) establecida en el mismo nivel suele tener prioridad sobre una de permiso. Si se deniega a sí mismo o al grupo Users, podría quedarse sin acceso. Úsela solo cuando sea realmente necesario.

Cambiar también subcarpetas y archivos (/T)

Con /T, la operación se aplica a todos los archivos y subcarpetas de la carpeta indicada. Con /C, el proceso continúa aunque se produzcan errores.

icacls "C:\work" /grant "%USERNAME%:F" /T /C

Controlar la herencia (/inheritance)

OpciónComportamiento
/inheritance:eActiva la herencia
/inheritance:dDesactiva la herencia y copia las entradas heredadas como entradas explícitas
/inheritance:rDesactiva la herencia y elimina todas las entradas heredadas

/inheritance:r elimina todas las entradas heredadas, por lo que, si no hay entradas explícitas, puede que después nadie tenga acceso. Si tiene dudas, use /inheritance:d.

Para devolver los permisos a su estado inicial (heredados de la carpeta superior), es útil /reset.

icacls "C:\work" /reset /T /C
/reset borra todas las entradas establecidas explícitamente

Se pierden los permisos que concedió a usuarios y las denegaciones, y se reemplazan por los heredados de la carpeta superior. Con /T afecta a todo el contenido, así que haga antes una copia con /save.

Resolver “Acceso denegado”

Cuando no puede acceder a una carpeta creada por otro usuario o a datos traídos de un PC anterior, el procedimiento básico es tomar posesión y después concederse permisos. Hágalo en un Símbolo del sistema ejecutado como administrador.

1. Tomar posesión (takeown)

takeown /f "D:\old-data" /r /d y
OpciónSignificado
/fEl archivo o carpeta de destino (se admiten comodines)
/rIncluye subcarpetas y archivos
/d ySi no tiene permiso para listar el contenido de una carpeta, responde “sí” y continúa
/aHace propietario al grupo Administrators (sin esta opción, el propietario es el usuario actual)

Al usar /r, indique también /d y (o /d n) para que el proceso continúe sin preguntas.

2. Conceder permisos (icacls)

Ser propietario no concede acceso automáticamente. A continuación, use icacls para concederse permisos.

icacls "D:\old-data" /grant "%USERNAME%:(OI)(CI)F" /T /C

Con estas dos líneas, normalmente podrá abrir o eliminar la carpeta.

No lo ejecute en carpetas del sistema

Cambiar la posesión o los permisos de C:\Windows, C:\Program Files o la raíz de una unidad (C:\) puede impedir que Windows funcione correctamente. Cambie solo las carpetas que contengan sus propios datos.

Copia de seguridad y restauración de permisos

Conviene guardar la configuración actual antes de cambiarla.

icacls "C:\work\*" /save "%USERPROFILE%\work-acl.txt" /T

Para volver atrás, ejecute /restore indicando la carpeta que contiene los elementos guardados.

icacls "C:\work" /restore "%USERPROFILE%\work-acl.txt"
Qué ruta indicar en /save y /restore

En /restore, indique la carpeta que contenía los elementos guardados. En el ejemplo anterior se guardó el contenido de C:\work\*, por lo que se indica C:\work.

Uso en un archivo por lotes

icacls y takeown establecen ERRORLEVEL en 0 si tienen éxito y en un valor distinto de cero si fallan, por lo que puede actuar según el resultado. if errorlevel 1 solo comprueba el comando anterior, así que compruébelo tras cada uno. Además, > nul oculta solo la salida normal; los mensajes de error siguen mostrándose.

@echo off
setlocal

set "TARGET=D:\old-data"

takeown /f "%TARGET%" /r /d y > nul
if errorlevel 1 (
  echo No se pudo tomar posesión. Compruebe que se ejecuta como administrador.
  exit /b 1
)

icacls "%TARGET%" /grant "%USERNAME%:(OI)(CI)F" /T /C > nul
if errorlevel 1 (
  echo No se pudieron cambiar los permisos.
  exit /b 1
)

echo Permisos cambiados.

endlocal

Pregunta de práctica

Problema de práctica

¿Qué comando concede control total al usuario actual sobre la carpeta C:\work y los archivos y subcarpetas que contiene?

Elige una respuesta.

  1. icacls “C:\work” /grant “%USERNAME%:F”
  2. icacls “C:\work” /grant “%USERNAME%:(OI)(CI)F”
  3. takeown /f “C:\work”
#Símbolo del sistema #Archivos por lotes #Línea de comandos #Comando #Permisos #Permisos de administrador