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 — 9 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

  3. Hola, necesito un .bat para que se ejecute en el StartUp y que el mismo le deniegue el permiso de eliminar/modificar a un usuario local X a una carpeta específica en el equipo, pero el usuario debe tener permiso de lectura/escritura.
    Que sólo el Administrador local pueda eliminar información de ese directorio.
    Quién me ayuda…

  4. Fantastic post һowever , І waѕ wanting to know if you
    coսld write а litte mοre on ths subject? Ι’ⅾ be veгy grateful іf you could elaborate a little Ƅit more.
    Ꭲhank yߋu!

  5. I truly loe your website.. Pleasant colors & theme. Did you develop this amazing site yourself?
    Please reply back as I’m attempting to create my own blog and want to learn where you got this from or just what the theme is called.
    Appreciate it!

  6. Helo this is somewhat of off topic but I was wondering if blogs use WYSIWYG editors
    or if you have to manually code with HTML. I’m starting a blog
    soon but have no coding experience so I wanted to get guidance from someone with experience.
    Any help would be greatly appreciated!

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>