Está en la página 1de 8

Comando CACLS (Windows

)

Muestara o modifica listas de control de acceso de archivos ACL (Acces control list)

Hay 2 tipos de ACL, las DACL (Discretionary Acceso Control List) y las SACL (System control
list). Las DACL son manejadas por los propietarios para el control de los archivos y carpetas, las
SACL son manejadas directamente por el sistema operativo

ACL: son unas tablas que le dicen al sistema operativo que o quien tiene permiso para acceder a
los diferentes archivos y carpetas del sistema de archivos NTFS propios de Windows. Los ACL
guardan unas unos descriptores de seguridad que son unos metadatos que almacenan permisos
de los diferentes archivos
Estructura del comando
cacls [ruta del archivo] [atributos] [grupo/usuarios:Permisos]

Atributos
archivo Muestra las ACL.
/T Cambia las ACL de archivos especificados en
el directorio actual y todos los subdirectorios.
/L Trabaja en el propio vínculo simbólico en lugar del destino.
/M Cambia las ACL de los volúmenes montados en un directorio.
/S Muestra la cadena SDDL para la DACL.
/S:SDDL Reemplaza las ACL por las especificadas en la cadena SDDL
(no válido con /E, /G, /R, /P ni /D).
/E Edita la ACL en vez de remplazarla.
/C Continúa, omitiendo los errores de acceso denegado.
/G usuario:perm Concede derechos de acceso del usuario.
Perm puede ser: R Leer
W Escribir
C Cambiar (escribir)
F Control total
/R usuario Revoca derechos del usuario (sólo válida con /E).
/P usuario:perm Reemplaza derechos de acceso del usuario.
Perm puede ser: N Ninguno
R Leer
W Escribir
C Cambiar (escribir)
F Control total
/D usuario Deniega acceso al usuario especificado.

Ejemplos
 cacls "C:\Users\sena\Documents\ls.txt" --- para ver los permisos del archivo
 cacls "C:\Users\sena" /T --- para ver los permisos archivos en carpetas y subcarpetas
 cacls "C:\Users\sena\Documents" /E /R sena:R --- da al usuario sena permisos de lectura
 cacls %windir%\*.exe /D Sena --- Deniega permisos al usuario sena de los ejecutables del
directorio de windows, aca se usan comodines como el % y *
Sintaxis de Xcacls.exe syntax
xcacls nombre de archivo [/T] [/E] [/C] [/G usuario:perm;espec] [/R usuario] [/P usuario:perm;espec [...]]
[/D usuario [...]] [/Y]
donde nombre de archivo indica el nombre del archivo o carpeta a la que la ACL o la entrada de
control de acceso (ACE) se suele aplicar. Se pueden utilizar todos los caracteres comodín estándar.

/T recorre de forma recursiva la carpeta actual y todas sus subcarpetas, aplicando los derechos de
acceso elegidos a los archivos o carpetas correspondientes.

/E modifica la ACL en lugar de reemplazarla. Por ejemplo, sólo el administrador tendrá acceso al
archivo Test.dat si se ejecuta el comando XCACLS test.dat /G Administrator:F . Todas las ACE
aplicadas anteriormente se pierden.

/C hace que Xcacls.exe continúe si se produce un mensaje de error "Acceso denegado". Si no se
especifica /C, Xcacls.exe se detiene en este error.

/G usuario:perm;espec concede acceso al usuario al archivo o carpeta correspondiente.
 La variable perm (permiso) aplica el derecho de acceso especificado a los archivos y
representa la máscara de los derechos de acceso especial a archivos para las carpetas. La
variable perm acepta los valores siguientes:
o R Lectura
o C Cambiar (escribir)
o F Control total
o P Permisos de modificación (acceso especial)
o O Tomar posesión (acceso especial)
o X Ejecutar (acceso especial)
o E Lectura (acceso especial)
o W Escritura (acceso especial)
o D Eliminar (acceso especial)
 La variable espec (acceso especial) se aplica sólo a las carpetas y acepta los mismos valores
que perm, además del valor especial siguiente:
o T Sin especificar. Establece una ACE para el propio directorio sin especificar una ACE
que se aplique a los nuevos archivos que se crearon en ese directorio. Después debe
haber al menos un derecho de acceso. Las entradas entre un punto y coma (;) y T se
pasan por alto. Notas
 Las opciones de acceso para los archivos (para carpetas, archivo especial y
acceso a la carpeta) son idénticas. Para obtener una explicación detallada de
estas opciones, consulte la documentación del sistema operativo de Windows
2000.
 Todas las demás opciones, que también se pueden establecer en el Explorador
de Windows, son subconjuntos de todas las posibles combinaciones de los
derechos de acceso básicos. Debido a esto, no hay ninguna opción especial
para los derechos de acceso de las carpetas, como MOSTRAR o LECTURA.
/R usuario revoca todos los derechos de acceso para el usuario especificado.

/P usuario:perm;espec reemplaza todos los derechos de acceso del usuario especificado. Las reglas
para especificar perm y espec son las mismas que para la opción /G. Vea la sección "Ejemplos de
Xcacls.exe" de este artículo.

/D usuario deniega al usuario el acceso al archivo o directorio.

/Y deshabilita la confirmación al reemplazar los derechos de acceso del usuario. De forma
predeterminada, CACLS pide confirmación. Debido a esta característica, cuando CACLS se utiliza en
una rutina por lotes, la rutina deja de responder hasta que se escriba la respuesta correcta. La
opción /Y se introdujo para evitar esta confirmación, para que Xcacls.exe se pueda utilizar en modo
de lote.


Utilizar Xcacls.exe para ver los permisos
También puede utilizar Xcacls.exe para ver los permisos de un archivo o carpeta. Por ejemplo,
escriba xcacls C:\winnt en el símbolo del sistema y, después, presione ENTRAR. Lo siguiente es un
resultado típico:
c:\WINNT BUILTIN\Users:R BUILTIN\Users:(OI)(CI)(IO)(special access:)
GENERIC_READ GENERIC_EXECUTE

BUILTIN\Power Users:C BUILTIN\Power Users:(OI)(CI)(IO)C
BUILTIN\Administrators:F BUILTIN\Administrators:(OI)(CI)(IO)F NT
AUTHORITY\SYSTEM:F NT AUTHORITY\SYSTEM:(OI)(CI)(IO)F BUILTIN\Administrators:F
CREATOR OWNER:(OI)(CI)(IO)F

Los marcadores de las ACL tienen los significados siguientes:
 IO: (Inherit Only) sólo heredar - Este marcador indica que esta ACE no se aplica al objeto
actual.
 CI: (Container Inherit) el contenedor hereda - Este marcador indica que los contenedores
subordinados heredarán esta ACE.
 OI: (Object Inherit) el objeto hereda - Este marcador indica que los archivos subordinados
heredarán la ACE.
 NP: (Non-Propagate) no propagar - Este marcador indica que el objeto subordinado no
propagará la ACE heredada más allá.
La letra al final de cada línea indica el permiso. Por ejemplo:
 F: Control total
 C: Cambiar
 W: Escritura
Ejemplos de cacls.exe
Ejemplo 1
Escriba XCACLS *.* /G administrator:RW /Y en el símbolo del sistema y, a continuación, presione
ENTRAR para reemplazar la ACL de todos los archivos y carpetas de la carpeta actual sin examinar
las subcarpetas y sin pedir confirmación.
Ejemplo 2
Las ACE que se agregan a la carpeta en este ejemplo también heredan la ACE de los archivos
nuevos que se crean en esta carpeta. El comando proporciona a usuarioDePrueba derechos de
lectura, escritura, ejecución y eliminación en todos los archivos nuevos creados en esta carpeta,
pero sólo los permisos de lectura y escritura en la propia carpeta. Escriba XCACLS *.* /G
usuarioDePrueba:RWED;RW /E en el símbolo del sistema y, después, presione ENTRAR.
Ejemplo 3
El ejemplo siguiente concede permisos de lectura y escritura en una carpeta sin crear una entrada
heredada para los archivos nuevos. Por consiguiente, en este ejemplo, los archivos nuevos que se
crean en esta carpeta no reciben ninguna ACE para usuarioDePrueba. Para los archivos existentes,
se crea una ACE con permisos de lectura. Escriba XCACLS *.* /G usuarioDePrueba:R;RW /E en el
símbolo del sistema y, después, presione ENTRAR.


Instrucciones de los permisos NTFS
A continuación se proporcionan instrucciones para asignar los permisos NTFS:
 Use permisos NTFS para controlar el acceso a los archivos o carpetas.
 Asigne los permisos a los grupos en lugar de a los usuarios individuales.
 Los permisos de archivos NTFS tienen prioridad sobre los permisos de carpetas NTFS.
 Los administradores y el propietario de un archivo o de una carpeta controlan los permisos
que se pueden establecer para ese objeto.
 Al cambiar los permisos de las carpetas, tenga en cuenta los programas que están instalados
en los servidores. Los programas crean sus propias carpetas que tienen activada la
configuración Hacer posible que los permisos heredables de un objeto primario
se propaguen a este objeto. Si los permisos se cambian en la carpeta primaria, estos
cambios podrían crear problemas en el programa.

ADVERTENCIA
Recuerde que muchos archivos y carpetas reciben sus permisos a través de la herencia. Por
consiguiente, cuando piense que está cambiando sólo una carpeta, puede estar cambiando
muchas más.
Volver arriba | Enviar comentarios
Sintaxis del comando cacls
La sintaxis del comando es bien sencilla, aunque tiene varios modificadores o parámetros.
Antes de seguir comentar que todo lo que sigue se tecleará desde la consola de comandos. Es
decir, Inicio > Ejecutar y escribimos cmd y ahí podemos teclear todo lo que sigue.
La sintaxis más inmediata del comando cacls es la siguiente:
cacls nombre_de_archivo
Por ejemplo, si tenemos en el escritorio un archivo llamado ejemplo.exe pues tecleamos:
cacls escritorio\ejemplo.exe
y nos saldrán los permisos que tiene asignado ese archivo. Igualmente podemos podemos usar
variables de entorno o la ruta completa del archivo. Por ejemplo, si queremos consultar los
permisos del archivo explorer.exe que está en la carpeta WINDOWS, podemos escribir:
cacls %windir%\explorer.exe
o bien
cacls c:\windows\explorer.exe

Como siempre, si la ruta contiene espacios, hay que introducir comillas:
cacls “%userprofile\mi carpeta\exam.exe”
Como casi todos los comandos de Windows, éste también cuenta con una serie de modificadores,
que son:
/T Con este modificador podemos cambiar los permisos a todos los archivos de una carpeta y
subcarpetas.
/E Con él podemos modificar la ACL sin cambiarla.
/C Es, digamos, el modo silencionso. Si al modificar las ACLs encuentra algún error, lo omite y sigue
modificándola.
/G Este es el comando para conceder permisos a un usuario en particular. Los permisos son los
siguiente:
N ningún permiso
W permiso de escritura
C permiso de cambiar
F control total
Por ejemplo, para concederle al usuario Usuario permisos de escritura sobre el
archivo ejemplo.exe que está en la carpeta “Carpeta personal” del escritorio, podríamos hacerlo de
la siguiente forma:
cacls “%userprofile%\escritorio\carpeta personal\ejemplo.exe” /g Usuario:w
/R Este comando suspende los permisos a un usuario y actúa conjuntamente con /E (ya que /E
modifica la ACL pero no la cambia)
/P Este comando sustituye los permisos del usuario
/D deniega a un usuario el acceso.

Por ejemplo, para denegar al usuario User el acceso al archivo anterior, escribimos:
cacls “%userprofile%\escritorio\carpeta personal”\ejemplo.exe /d User
Si nos equivocamos al escribir el nombre del usuario nos aparecerá un mensaje como este:
No se ha efectuado ninguna asignación entre los nombres de cuenta y los identificadores de
seguridad.

Cuando se consulten permisos sobre carpetas podemos obtener las siguientes abreviaturas:
OI que se refiere a que los objetos creados bajo el directorio heredarán el permiso
CI que se refiere a que los subdirectorios creados bajo este directorio heredarán el permiso
IO que hace referencia a que el permiso no afectará al directorio y por tanto sólo lo herederán los
subdirectorios
(IO)(CI) los permisos lo tomará la carpeta y lo herederán las subcarpetas y archivos
(OI)(CI)(IO) los permisos sólo lo heredarán subcarpetas y archivos
(CI)(IO) el permiso sólo lo heredarán las subcarpetas
(IO)(IO) el permiso sólo lo heredarán los archivos
Ninguna salida se refiere sólo a esta carpeta
A la hora de consultar y modificar permisos podemos usar caracteres comodines para hacerlo a
varios a la vez. Por ejemplo:
cacls %windir%\*.exe
Nos daría todos los permisos de los archivos con extensión exe de la carpeta Windows. También
podemos asignar a varios usuarios permisos sobre un mismo archivo con un solo comando:
cacls “%userprofile%\escritorio\carpeta personal\ejemplo.exe” /g Usuario:w /d
User2
le daría al usuario Usuario permisos de escritura sobre el archivo y a User2 se los denegaría.
cacls “%userprofile%\escritorio\carpeta personal\ejemplo.exe” /g Usuario:w User2:f
le daría al usuario Usuario permisos de escritura sobre el archivo y al usuario User2 control total.
Finalmente, veremos que al ejecutar alguna acción de permisos se nos pregunta si estamos
seguros o no de lo que vamos a hacer. Para evitar este mensaje tecleamos lo siguiente:

echo Y|cacls “%userprofile%\escritorio\carpeta personal\ejemplo.exe” /g Usuario:w
User2:f
teniendo en cuenta de que entre la “Y” y el símbolo | no hay ningún espacio.
La herramienta XCACLS, un Cacls mejorado
Xcacls es una herramienta por línea de comandos que puede mostrar información en pantalla que
la herramienta sucedánea CACLS no puede mostrar. La herramienta que citamos se puede
descargar desde aquí.
Esta herramienta es especialmente útil para mostrar y establecer permisos NTFS especiales, y
sobre todo para automatizar scripts por línea de comandos que establezcan los permisos iniciales
de carpetas y archivos en instalaciones desatendidas.
Su sintaxis es parecida a la del comando Cacls y están descritas en este artículo de la KB.