Nos solemos referir a Las Listas de Control de Acceso por sus siglas en inglés, es decir, como ACL o Access Control List. Las ACLs son una especie de tablas que le dicen al Sistema Operativo qué o quién tiene permiso para acceder a un objeto determinado y son exclusivas de particiones con formato NTFS. Todos estos permisos pueden ser modificados con el comando "cacls". En este artículo veremos cómo hacerlo y definiremos sobre qué objetos y/o contenedores podemos aplicar estos permisos.
Descriptores de seguridad y ACL
Cualquier objeto en un Windows
con núcleo NT y sobre un sistema de archivos NTFS tiene asociados unos
parámetros de seguridad almacenados en los llamados descriptores de seguridad. En un descriptor de seguridad está
guardado quién es el propietario del objeto y a qué grupo de usuarios
pertenece, así como quién tiene acceso al objeto y qué tipo de permisos tiene
de acceso. Estos permisos están guardados en las llamadas ACLs (en inglés, Access Control List) o Listas de Control de Acceso.
En principio, los descriptores de
seguridad no están almacenados concretamente en ninguna carpeta. Lo están en
forma de metadatos en la MFT. Por
tanto, directamente no podemos acceder a dichos descriptores ni editarlos (directamente).
A lo máximo que podemos llegar es a verlos encriptados en el registro de
Windows. Por ejemplo: iniciamos sesión con una cuenta de Administrador y nos
vamos a Inicio > Ejecutar y escribimos regedit.
Si navegamos hasta la clave que aparece en la imagen, veremos el valor Security. Ese es el descriptor de
seguridad asociado al servicio "Registro de sucesos".
Pero mediante la GUI o usando el comando cacls podemos modificarlos.
LAS ACLs
El comando cacls se encarga de gestionar las ya mencionadas Listas de Control de Acceso (en adelante
ACL). Existen dos tipos de ACL: DACL y SACL. Veamos brevemente cada una:
DACL: son las siglas de “Discretionary Access Control List”, es
decir, Lista discrecional de control de
acceso. En ella están almacenados los permisos de acceso al objeto y es
controlada por el propietario de dicho objeto.
SACL: son las siglas de “System Access Control List”, o Lista de control de acceso del sistema.
Está relacionada con las acciones que serán auditadas por el sistema.
Una ACL contiene una ACE (o
“Access Control Entry”, Entrada de
Control de Acceso) que indica qué permisos tiene cada usuario. Es decir,
una ACE para cada usuario o grupo. Los permisos se asignan en forma de permisos
positivos (permite) y negativos (deniega). Como veremos, en una
ACL primero están situados los permisos negativos y a continuación los
negativos. ¿Cómo podemos observar esto visualmente?
Para verlos tenemos que acceder a
la pestaña “Seguridad” que aparece al hacer click derecho sobre una carpeta o
archivo. En esta FAQ número 6 hay información sobre cómo
acceder a dicha pestaña en Windows XP. Si hacemos click dererecho sobre una
carpeta y elegimos Propiedades y luego la pestaña “Seguridad”, veremos que nos
aparecen los distintos usuarios y los permisos que tienen sobre dicha carpeta.
En esta ventana, sin embargo, no veremos más que un resumen de los distintos
permisos, siendo éstos más y más complejos. Para verlos, vamos a hacerlo con un
ejemplo:
Si iniciamos sesión con un usuario limitado, y creamos una carpeta
cualquiera con el nombre que queramos y en la ubicación que queramos. Vamos a
denegarle al usuario administrador el acceso a esa carpeta (denegación que, por
ser el admistrador podría luego quitar…). Click derecho sobre la carpeta >
Propiedades > Seguridad y vemos ahí al usuario administrador. Para quitarle
los permisos, pichamos sobre “Opciones avanzadas” y desmarcamos Heredar del objeto principal las entradas de
permisos relativas a los objetos secundarios. Luego volvemos a la anterior
ventana y seleccionamos el usuario adminstrador y luego sobre las casillas que
hay debajo de “Denegar”. Nos aparecerá el siguiente mensaje:
Está
estableciendo una entrada de denegación de permisos. Las entradas de denegación
tienen precedencia sobre las entradas de permisión. Esto significa que si un
usuario es miembro de dos grupos, uno al que se le da un permiso y otro al que
se le deniega, al usuario se le deniega el permiso. ¿Desea continuar?
Pinchamos sobre “Aceptar” y le
habremos quitado los permisos de acceso. Como claramente dice el mensaje, los
permisos de denegación tienen precedencia sobre los de permisión. Veamos ahora
visualmente esa precedencia. Si volvemos pinchar sobre “Opciones avanzadas”
veremos que aparecen al principio de la lista los permisos titulados “Denegar” y debajo los titulados “Permitir”.
Si no especificamos otros tipos de permisos, aparecerá “Full control”, pero si
los espeficicamos veremos que ahí aparecen permisos más concretos que en la
ventana general.
Estos son los permisos
almacenados en una DACL. Como se ha comentado en una SACL están contenidos los
permisos a auditar por el sistema. Esta característica no está disponible en XP Home y sólo podemos hacerla en Prof. Para
ello, accedemos a la pestaña “Seguridad” y luego pinchamos sobre “Opciones
avanzadas”. Veremos que una de las pestañas que aparecen es Auditoría, es decir, el contenido de la SACL.
El comando CACLS
Como hemos dicho las ACLs determinan que usuarios o grupos
de usuarios pueden tener acceso a un objeto determinado y es una característica
exclusiva de los sistemas de archivos
NTFS.
De hecho este comando puede simplificar bastante la
modificación de permisos mediante el uso de scripts automatizados que
modifiquen estas ACLs y su uso es posible en cualquier sistema con núcleo NT,
es decir, que lo podemos utilizar tanto en xp home como en xp prof.
Debemos recordar que Windows 2000 y Windows XP profesional
ya llevan un editor ACL al cual podemos acceder haciendo clic con el boton
derecho sobre la carpeta o archivos cuyo
permisos deseamos modificar, clic en propiedades, y en el nuevo cuadro de
dialago, seleccionando la pestaña "Seguridad".
Con calcs, en cambio, no es necesario hacer nada adicional
ya que es funcional tanto en WinXP Home como en Prof, simplificando enormemente
la tarea de asignar permisos sobre usuarios, contenedores u objetos. Este
comando es en realidad equivalente a los comandos chmod y chown de linux, que sirven, respectivamente, para variar
los permisos de carpetas y archivos y para modificar el propietario de esas
carpetas.
Cuando
un objeto o archivo es creado este hereda normalmente
los permisos predeterminados de la carpeta o contenedor en el que es
creado
simplificando el proceso de administración sobre los objetos contenidos
en ella. Los permisos básicos que se permiten establecer en cualquier
Sistema Operativo
con núcleo NT, son los siguientes:
Permisos
Leer. Habilita a un Usuario o grupos de
usuarios a ver los archivos y subcarpetas contenidos en el directorio
principal.
Escribir. Habilita a un usuario a crear archivo y
subcarpetas, cambiar los atributos y ver el propietario y los permisos
aplicados sobre la carpeta así como a modificar el contenido del archivo o
carpeta
Mostrar el Contenido de la Carpeta. Este tipo de permiso, habilita a ver el contenido de una
carpeta, y a recorrer su estructura de directorios o ejecutar los archivos que tengan esa
posibilidad, también habilita a leer los atributos del archivo en cuestión y a
leer el contenido de los mismos
Lectura y Ejecución. Este tipo de Permiso aúna los derechos otorgados
por los permisos “Leer” y “Mostrar el contenido de una carpeta”, es decir, que
los permisos otorgados serían similares a los que hemos comentado antes para el
permiso Mostrar Contenido. La única diferencia entre este tipo de permiso
y el de mostrar contenido consiste
en cómo se heredan los permisos. En el caso de Lectura y Ejecución, los permisos son heredados por todos los directorios
y archivos contenidos en la carpeta en la que se aplique el permiso de lectura y ejecución. En el caso de Mostrar el Contenido de la Carpeta, los permisos
se heredan únicamente sobre las carpetas creadas.
Modificar. Este es uno de los permisos que más derechos
otorgan sobre la carpeta o archivos en los que se aplique ya que habilita todos
y cada uno de los permisos explicados anteriormente excepto el de tomar posesión y Eliminar
Subcarpetas y Archivos y Cambiar los
permisos, ya que estos sólo pueden ser llevados a cabo por el permiso Control Total.
Control Total. Como hemos
dicho este permiso digamos que engloba a todos los descritos con anterioridad
da el control total sobre quien se otorgue, incluida la posibilidad de tomar
posesión. Cuyo proceso tenéis definido
en nuestras FAQs y que suele ser una característica exclusiva del grupo de
administradores.
El concepto de Tomar Posesión es
fácilmente comprensible, si entendemos que el sistema de permisos NTFS recuerda
el propietario del archivo. Así, para las carpetas que contienen los perfiles de
usuarios en Documents and Settings, el
propietario siempre es el usuario cuyos archivos se contienen en esas carpetas
y tiene por defecto Control Total, sobre
sus archivos y carpetas, por lo que por defecto siempre podrá modificar sus
permisos para denegar acceso a otros usuarios. Cuando otro usuario Toma Posesión de una carpeta significa
que asume la propiedad de la carpeta y del contenido de la misma, si así lo
indicamos en el proceso de posesión. Se describe en esta FAQ número 7.
El color gris tenue que podemos ver al acceder a la pestaña seguridad de un
archivo en cuestión suele indicarnos que ese permiso está heredado del
contenedor principal, podemos desactivarlo, simplemente tildando la opción contraria, o bien
realizando los cambios en el contenedor principal, con lo que se aplicarán
estos permisos a todo el contenido de la carpeta.
Por defecto, estos permisos pueden ser aplicados sobre usuarios concretos y específicos
de nuestro sistema o bien sobre grupos de usuarios. En Windows XP se definen
una serie de usuarios por defecto, que son los siguientes:
Grupos de Usuarios
Usuarios
Este grupo es el que más restricciones impone en el sistema pero con el que más seguro es trabajar. Al Grupo Usuarios no le está permitido modificar el registro, ni modificar los archivos del sistema operativo, o los Archivos de Programa, en la práctica supone que no pueden instalar software. Aunque tiene Control Total, sobre los archivos que ellos creen y sobre su propia rama del registro, HKEY_CURRENT_USER, también se les permite apagar el PC.
Este grupo es el que más restricciones impone en el sistema pero con el que más seguro es trabajar. Al Grupo Usuarios no le está permitido modificar el registro, ni modificar los archivos del sistema operativo, o los Archivos de Programa, en la práctica supone que no pueden instalar software. Aunque tiene Control Total, sobre los archivos que ellos creen y sobre su propia rama del registro, HKEY_CURRENT_USER, también se les permite apagar el PC.
En la práctica es algo engorroso trabajar con
este tipo de usuario ya que no permite la ejecución de multitud de software
anterior a Windows XP que no soportan los nuevos permisos NTFS y están
diseñados para versiones anteriores de este sistema operativo.
Usuarios
Avanzados
Este grupo impone menos restricciones que el grupo de usuarios pero más que el de administradores. Digamos que está a medio camino entre ambos grupos. En realidad, muchos de los problemas de restricciones que se dan al ejecutar software en nuestro equipo, se solventan con la utilización de este tipo de usuario. Los usuarios Avanzados pueden, por tanto, ejecutar aplicaciones diseñadas para Sistemas Operativos con núcleo NT anteriores a Windows 2000. Iniciar y detener servicios que no sean los basicos y los que se inician de forma predeterminada con el sistema operativo, instalar cualquier programa que no modifique los archivos del sistema operativo y tener acceso a los datos del grupo de usuarios, a no ser que estos les retiren específicamente el permiso de acceso a sus archivos.
Este grupo impone menos restricciones que el grupo de usuarios pero más que el de administradores. Digamos que está a medio camino entre ambos grupos. En realidad, muchos de los problemas de restricciones que se dan al ejecutar software en nuestro equipo, se solventan con la utilización de este tipo de usuario. Los usuarios Avanzados pueden, por tanto, ejecutar aplicaciones diseñadas para Sistemas Operativos con núcleo NT anteriores a Windows 2000. Iniciar y detener servicios que no sean los basicos y los que se inician de forma predeterminada con el sistema operativo, instalar cualquier programa que no modifique los archivos del sistema operativo y tener acceso a los datos del grupo de usuarios, a no ser que estos les retiren específicamente el permiso de acceso a sus archivos.
Operadores
de Copia de Seguridad
Son usuarios destinados a crear y restaurar copias de seguridad, y cuyas acciones se aplican independientemente del sistema de permisos especificado en el sistema operativo. Estos usuarios pueden iniciar sesión en nuestro sistema y también apagarlo.
Son usuarios destinados a crear y restaurar copias de seguridad, y cuyas acciones se aplican independientemente del sistema de permisos especificado en el sistema operativo. Estos usuarios pueden iniciar sesión en nuestro sistema y también apagarlo.
Administradores
Este es el que más poder otorga en el sistema y sólo debería utilizarse para las tareas específicas que estan destinados a ellos, como por ejemplo: instalación de componentes del Sistema Operativo, es decir, drivers, servicios, actualizaciones y Service Packs, reparación del sistema operativo, administración de auditorias y gestión y control de permisos sobre contenedores y objetos, y administración de grupos de usuarios.
Este es el que más poder otorga en el sistema y sólo debería utilizarse para las tareas específicas que estan destinados a ellos, como por ejemplo: instalación de componentes del Sistema Operativo, es decir, drivers, servicios, actualizaciones y Service Packs, reparación del sistema operativo, administración de auditorias y gestión y control de permisos sobre contenedores y objetos, y administración de grupos de usuarios.
Invitados
Los usuarios pertenecientes a este grupo tienen los mismos permisos que el grupo de Usuarios, y está destinado para proporcionar acceso a todo aquel que no tenga una cuenta especifica en el sistema. En Windows XP, por defecto, estos usuarios no pueden apagar el sistema, y además se halla la cuenta deshabilitada ya que no se requiere contraseña para acceder como invitado a nuestro sistema operativo, con los problemas de seguridad que ello podría conllevar.
Los usuarios pertenecientes a este grupo tienen los mismos permisos que el grupo de Usuarios, y está destinado para proporcionar acceso a todo aquel que no tenga una cuenta especifica en el sistema. En Windows XP, por defecto, estos usuarios no pueden apagar el sistema, y además se halla la cuenta deshabilitada ya que no se requiere contraseña para acceder como invitado a nuestro sistema operativo, con los problemas de seguridad que ello podría conllevar.
Básicamente, hemos pasado revista a los grupos de
usuarios que Windows XP /Windows 2000 provee, pero hay todavía una serie de
usuarios especiales que no hemos definido aún y que también son utilizados por
Windows:
Red
Comprende a todos los usuarios que tienen acceso a nuestro equipo a través de la red.
Comprende a todos los usuarios que tienen acceso a nuestro equipo a través de la red.
Usuario
Terminal Server
Cuando hemos habilitado Terminal Server en nuestro equipo para acceder de forma remota a nuestra máquina, este grupo se habilita y comprende a todos los usuarios que han iniciado sesión mediante Terminal Server.
Cuando hemos habilitado Terminal Server en nuestro equipo para acceder de forma remota a nuestra máquina, este grupo se habilita y comprende a todos los usuarios que han iniciado sesión mediante Terminal Server.
Operadores
de Configuración de RedEn este grupo se encuadran todos los usuarios que
pueden modificar la configuración de TCP/IP de las propiedades de red. Por defecto no tiene ningún usuario
predefinido.
- Grupos especiales
DuplicadoresEs
un grupo destinado a integrar los
usuarios que pueden replicar un directorio en el servicio de replicación
de rchivos en un controlador de dominio. En estaciones cliente y en
PC’s que no
estén integrados en un dominio no tiene sentido agregar usuarios a este
grupo.
System
Es uno de los grupos especiales de Windows, y en el no hay ningún usuario predefinido ya que está exclusivamente dedicado al acceso de fichero para que procesos esenciales del sistema operativo se puedan llevar a cabo.
Es uno de los grupos especiales de Windows, y en el no hay ningún usuario predefinido ya que está exclusivamente dedicado al acceso de fichero para que procesos esenciales del sistema operativo se puedan llevar a cabo.
Usuarios
Interactivos
Grupo que identifica al usuario actualmente logueado en nuestro Sistema Operativo.
Grupo que identifica al usuario actualmente logueado en nuestro Sistema Operativo.
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
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.
En resumen:
Si quieres denegar el acceso a un archivo para un usuario simplemente ejecutamos este línea:
cacls ejemplo.exe /d Admin
sintaxis:
cacls : comando
ejemplo.exe : archivo a denegar
/d : denegar
Admin : al usuario que denegamos
Ahora si queremos restablecer los privilegios:
cacls ejemplo.exe” /g Usuario:w User2:f
sintaxis:
cacls: comando
ejemplo.exe : archivo a restablecer permisos
/g permite brindar permisos
Usuarios:w : a este usuario de lectura
User2:f : control total
Saludos roboticos
Fuente:
http://www.fermu.com/es/articulos/windows/articulos-y-tutoriales/408-comando-cacls-y-lista-de-control-de-acceso
1 comentario:
Si es verdad existen muchos tipos de control de acceso no tanto a nivel lógico como el que tratamos en este post sino también físicos entre otros.
Saludos
Publicar un comentario