ICACLS -h cambiar los permisos de acceso a un fichero en Windows desde la línea de comandos

Modificar permisos de sistema de archivos NTFS en Windows 7 con un ejecutable desde la consola cmd

Los sistemas Linux y Unix vienen con la utilidad chmod para cambiar permisos de acceso desde el intérprete de comandos / shell. Sin embargo, en Windows chmod no está disponible, la utilidad de línea de comandos que se puede usar en Windows 7 es ICACLS. Esta es su página de ayuda (manual) la que llamaríamos haciendo icacls -h en la consola:

ICACLS nombre /save archivoACL [/T] [/C] [/L] [/Q]
almacena las DACL para los archivos y carpetas cuyos nombres coinciden
en archivoACL para su uso posterior con /restore. Tenga en cuenta que no
se guardan las SACL, el propietario ni las etiquetas de identidad.

ICACLS directorio [/substitute SidOld SidNew [...]] /restore archivoACL
[/C] [/L] [/Q]
aplica las DACL almacenadas a los archivos del directorio.

ICACLS nombre /setowner usuario [/T] [/C] [/L] [/Q]
cambia el propietario de todos los nombres coincidentes. Esta opci¢n
no fuerza un cambio de propiedad; use la utilidad takeown.exe
con esta finalidad.

ICACLS nombre /findsid Sid [/T] [/C] [/L] [/Q]
busca todos los nombres coincidentes que contienen una ACL
que menciona el SID de forma expl¡cita.

ICACLS nombre /verify [/T] [/C] [/L] [/Q]
busca todos los archivos cuya ACL no est  en formato can¢nico o cuyas
longitudes no son coherentes con los recuentos de la ACE.

ICACLS nombre /reset [/T] [/C] [/L] [/Q]
reemplaza las ACL con ACL heredadas predeterminadas para todos
los archivos coincidentes.

ICACLS nombre [/grant[:r] Sid:perm[...]]
[/deny Sid:perm [...]]
[/remove[:g|:d]] Sid[...]] [/T] [/C] [/L] [/Q]
[/setintegritylevel nivel:directiva[...]]

/grant[:r] Sid:perm concede los derechos de acceso al usuario
especificado. Con :r, los permisos reemplazan cualquier permiso
expl¡cito concedido anteriormente. Sin :r, los permisos se agregan a
cualquier permiso expl¡cito concedido anteriormente.

/deny Sid:perm deniega de forma expl¡cita los derechos de acceso al
usuario especificado. Se agrega una ACE de denegaci¢n expl¡cita
para los permisos indicados y se quitan los mismos permisos de
cualquier concesi¢n expl¡cita.

/remove[:[g|d]] Sid quita todas las repeticiones del SID en la ACL. Con
:g, quita todas las repeticiones de derechos concedidos a ese SID. Con
:d, quita todas las repeticiones de derechos denegados a ese SID.

/setintegritylevel [(CI)(OI)]nivel agrega de forma expl¡cita una ACE de
integridad a todos los archivos coincidentes. El nivel se debe
especificar como:
L[ow] – para bajo
M[edium] – para medio
H[igh] – para alto
Las opciones de herencia para la ACE de integridad pueden preceder al
nivel y se aplican s¢lo a los directorios.

/inheritance:e|d|r
e – habilita la herencia
d – deshabilita la herencia y copia las ACE
r – quita todas las ACE heredadas

Nota:
Los SID pueden tener un formato num‚rico o de nombre descriptivo. Si se da
un formato num‚rico, agregue un asterisco (*) al principio del SID.

/T indica que esta operaci¢n se realiza en todos los archivos o
directorios coincidentes bajo los directorios especificados en el
nombre.

/C indica que esta operaci¢n continuar  en todos los errores de archivo.
Se seguir n mostrando los mensajes de error.

/L indica que esta operaci¢n se realiza en el v¡nculo simb¢lico en s¡
en lugar de en su destino.

/Q indica que icacls debe suprimir los mensajes de que las operaciones
se realizaron correctamente.

ICACLS conserva el orden can¢nico de las entradas ACE:
Denegaciones expl¡citas
Concesiones expl¡citas
Denegaciones heredadas
Concesiones heredadas

perm es una m scara de permiso que puede especificarse de dos formas:
una secuencia de derechos simples:
N – sin acceso
F – acceso total
M – acceso de modificaci¢n
RX – acceso de lectura y ejecuci¢n
R – acceso de s¢lo lectura
W – acceso de s¢lo escritura
D – acceso de eliminaci¢n
una lista separada por comas entre par‚ntesis de derechos espec¡ficos:
DE – eliminar
RC – control de lectura
WDAC – escribir DAC
WO – escribir propietario
S – sincronizar
AS – acceso al sistema de seguridad
MA – m ximo permitido
GR – lectura gen‚rica
GW – escritura gen‚rica
GE – ejecuci¢n gen‚rica
GA – todo gen‚rico
RD – leer datos/lista de directorio
WD – escribir datos/agregar archivo
AD – anexar datos/agregar subdirectorio
REA – leer atributos extendidos
WEA – escribir atributos extendidos
X – ejecutar/atravesar
DC – eliminar secundario
RA – leer atributos
WA – escribir atributos
los derechos de herencia pueden preceder a cualquier forma y se
aplican s¢lo a directorios:
(OI) – herencia de objeto
(CI) – herencia de contenedor
(IO) – s¢lo herencia
(NP) – no propagar herencia
(I) – permiso heredado del contenedor principal

Ejemplos:

icacls c:\windows\* /save archivoACL /T
- Guardar  todas las ACL para todos los archivos en c:\windows
y sus subdirectorios en archivoACL.

icacls c:\windows\ /restore archivoACL
- Restaurar  todas las ACL para cada archivo dentro de
archivoACL que exista en c:\windows y sus subdirectorios.

icacls file /grant Administrador:(D,WDAC)
- Conceder  al usuario permisos de administrador para eliminar y
escribir DAC en el archivo.

icacls file /grant *S-1-1-0:(D,WDAC)
- Conceder  al usuario definido por el SID S-1-1-0 permisos para
eliminar y escribir DAC en el archivo.


Comentarios

ICACLS -h cambiar los permisos de acceso a un fichero en Windows desde la línea de comandos — 3 comentarios

  1. Hola, gracias por el artículo, realmente creo que MS siempre intenta complicar las cosas, en Linux cambiar permisos y herencias es la cosa más simple con chmod y umask.
    Ando buscando como poder cambiar permisos a una carpeta (e hijos) para que sólo un usuario tenga control total y el resto (grupo usuarios) sólo puedan leer y ejecutar, sin embargo no encuentro la forma de hacerlo.

    Mencionas SID, pero tal vez ni Dios sabe lo que es a menos que haga un puto curso de Micro$oft, de igual manera para ACE ?¿?¿?¿?.. etc.

    Sería más entendible si explicaras esos términos y/o pusieras un glosario para los mismos, caso contrario es otro artículo más nadando a la dreriva en la infinidad de la web.

    Lo dicho, gracias y saludos

  2. Hola yo tenia el problema que al tratar de abrir un archivo no tenia permiso alguno, no me dejaba abrir, copiar o borrar y eran carpetas con mas de 100 archivos cada una
    buscando encontre que habriendo una ventana de ms-dos como administrador, podia arreglarlo con dos comandos

    me puse en la carpeta que tenia mis archivos Wn este caso
    g:\videos\musica
    y al ejecutar lo siguiente se compuso todo

    Este da la posecion del archivo

    takeown /F *

    y este te da los permisos de control total
    icacls * /grant USER:F /T

    Cambia USER por tu nombre de usuario en mi caso quedo asi

    icacls * /grant Marcos:F /T

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>