Vous êtes sur la page 1sur 7

B.3.

Funcionamiento de las ACLs

http://www.cez.com.pe/Linux/manual suse linux 9.1/suselinux-admingu...

SUSE LINUX Manual de Administracin Apndice B. Listas de control de acceso (ACLs) en Linux / B.3. Funcionamiento de las ACLs B.2. Definiciones B.4. Soporte en aplicaciones

B.3. Funcionamiento de las ACLs


En la siguiente seccin se describirn la estructura bsica de una ACL y sus caractersticas. La relacin entre las ACLs y el concepto tradicional de permisos en el sistema de archivos Linux se explicar por medio de varios grficos. Dos ejemplos le servirn para conocer la sintaxis correcta de una ACL y crear sus propias listas de control de acceso. Finalmente, se describir el mtodo usado por el sistema operativo para evaluar las ACLs. B.3.1. Estructura de las entradas ACL Las ACLs pueden dividirse fundamentalmente en dos clases. Una ACL estndar consiste exclusivamente en las entradas de tipo owner (propietario), owning group (grupo propietario) y other (otros) y coincide con los bits de permisos tradicionales para archivos y directorios. Una ACL extendida (extended) contiene adems una entrada mask (mscara) y puede incluir varias entradas del tipo named user (usuario identificado por el nombre) y named group (grupo identificado por el nombre). La tabla B.1, Resumen de tipos de entrada ACL ofrece un resumen de los distintos tipos de entradas ACL. Tabla B.1. Resumen de tipos de entrada ACL Tipo owner named user owning group named group mask other Formato en texto
user::rwx user:name:rwx group::rwx group:name:rwx mask::rwx other::rwx

Los permisos definidos en las entradas owner y other siempre tienen vigencia. Excepto la entrada mask, el resto de entradas (named user, owning group y named group) pueden estar activadas o bien enmascaradas. Si se han definido permisos tanto en las entradas mencionadas en primer lugar como en las mscara, tendrn validez. Los permisos que slo han sido definidos en la mscara o en la propia entrada, no tienen validez. El siguiente ejemplo ilustra este mecanismo (vase la Tabla B.2, Enmascaramiento de permisos de acceso): Tabla B.2. Enmascaramiento de permisos de acceso Tipo Formato en texto Permisos named user user:jane:r-x r-x mask::rwrwmask
r--

B.3.2. Entradas ACL y bits de permiso

1 de 7

19/07/2011 05:10 p.m.

B.3. Funcionamiento de las ACLs

http://www.cez.com.pe/Linux/manual suse linux 9.1/suselinux-admingu...

Los siguientes grficos ilustran respectivamente las posibles variantes de una ACL estndar y una extendida (ver Fig. B.1, ACL estndar: entradas ACL y bits de permiso y B.2, ACL extendida: entradas ACL y bits de permiso). Las figuras estn divididas en tres bloques. A la izquierda aparece la descripcin del tipo de entrada ACL, en el medio un ejemplo de ACL y a la derecha los bits de permiso tal y como los muestra el comando ls -l. En ambos casos, los permisos correspondientes al owner class han sido asignados a la entrada ACL owner. Asimismo, la asignacin de permisos other class a la correspondiente entrada ACL es siempre la misma. En cambio, la asignacin de permisos group class vara segn el caso. Figura B.1. ACL estndar: entradas ACL y bits de permiso

En el caso de una ACL estndar (sin entrada mask), los permisos de la group class se asignan a la entrada ACL owning group (ver Fig. B.1, ACL estndar: entradas ACL y bits de permiso). En el caso de una ACL extendida (con entrada mask), los permisos de la group class se asignan a la entrada mask (ver Fig. B.2, ACL extendida: entradas ACL y bits de permiso). Figura B.2. ACL extendida: entradas ACL y bits de permiso

Este tipo de asignacin garantiza la correcta interaccin de aplicaciones con y sin soporte ACL. Los permisos de acceso definidos mediante los bits de permiso constituyen el lmite para las opciones de configuracin avanzadas que pueden realizarse va ACL. Todos los permisos que no estn reflejados aqu no han sido definidos en la ACL o no tienen vigencia. Si los bits de permiso se modifican, esto tambin se refleja en la ACL y viceversa. B.3.3. Un directorio con access ACL Por medio del siguiente ejemplo, se explicar en tres pasos el funcionamiento de una access ACL: Crear un objeto del sistema (aqu un directorio) Cambios en la ACL Utilizacin de mscaras

2 de 7

19/07/2011 05:10 p.m.

B.3. Funcionamiento de las ACLs

http://www.cez.com.pe/Linux/manual suse linux 9.1/suselinux-admingu...

1. Antes de crear un directorio, puede emplear el comando umask para definir qu permisos de acceso han de estar enmascarados desde el momento de su creacin.
umask 027

umask 027 define los permisos de cada grupo de usuarios como se describe a continuacin: el propietario del archivo posee todos los permisos (0), el grupo al que pertenece el propietario no tiene permiso de escritura sobre el archivo (2) y el resto de usuarios carece de cualquier permiso sobre el archivo (7). Los nmeros se leen como una mscara de bits. Puede obtener ms informacin sobre umask en la pgina del manual correspondiente (man umask).
mkdir mydir

Se ha creado el directorio mydir que ha obtenido los derechos definidos por medio de umask. Puede comprobar si todos los permisos han sido asignados correctamente con el comando:
ls -dl mydir drwxr-x--- ... tux projekt3 ... mydir

2. Una vez que se ha informado sobre el estado inicial de la ACL, adale una nueva entrada de usuario y otra de grupo.
getfacl mydir # file: mydir # owner: tux # group: projekt3 user::rwx group::r-x other::---

La salida del comando getfacl refleja exactamente la correspondencia entre bits de permiso y entradas ACL descrita en el apartado B.3.2, Entradas ACL y bits de permiso. Las primeras tres lneas de la salida de comando designan el nombre, propietario y grupos pertenecientes del directorio. Las tres lneas siguientes contienen las tres entradas ACL owner, owning group y other. En conjunto, el comando getfacl en el caso de esta ACL estndar no le ofrece ninguna informacin que no hubiese obtenido tambin con el comando ls. Su primera intervencin en la ACL consiste en asignar a un nuevo usuario jane y a un nuevo grupo djungle permisos de lectura, escritura y ejecucin.
setfacl -m user:jane:rwx,group:djungle:rwx mydir

La opcin -m le ordena a setfacl modificar la ACL actual. El siguiente argumento indica qu entradas ACL sern modificadas (muchas estn separadas entre s por comas). Finalmente tiene que introducir el nombre del directorio para el que tendrn validez estos cambios. La ACL resultante se muestra con el comando getfacl.
# file: mydir # owner: tux # group: projekt3 user::rwx user:jane:rwx group::r-x group:djungle:rwx mask::rwx other::---

3 de 7

19/07/2011 05:10 p.m.

B.3. Funcionamiento de las ACLs

http://www.cez.com.pe/Linux/manual suse linux 9.1/suselinux-admingu...

Adems de las entradas para el usuario jane y el grupo djungle creadas por usted, se ha generado una entrada mask. Esta entrada mask se crea automticamente para reducir todas las entradas de group class a un denominador comn. Adems, setfacl adapta automticamente las entradas mask a las opciones que usted modifique (siempre que no haya desactivado esta funcin con -n). mask define los permisos de acceso mximos que tienen validez para todas las entradas de la group class. Entre estas se incluyen named user, named group y owning group. Los bits de permiso de group class mostrados al ejecutar ls -dl mydir equivalen a la entrada mask.
ls -dl mydir drwxrwx---+ ... tux projekt3 ... mydir

En la primera columna de la salida aparece un signo + que hace referencia a una ACL extendida. 3. Segn la salida del comando ls, los permisos de la entrada mask incluyen tambin permiso de escritura. Normalmente, estos bits de permiso tambin indicaran que el owning group (aqu: projekt3) tendra asimismo derechos de escritura para el directorio mydir. No obstante, los permisos de acceso realmente vlidos para para el owning group consisten en la interseccin de los permisos definidos para el owning group y mask, es decir, r-x en nuestro ejemplo (ver la tabla B.2, Enmascaramiento de permisos de acceso). Aqu tampoco se han modificado los permisos de owning group despus de aadir las entradas ACL. La entrada mask puede modificarse con setfacl o con chmod.
chmod g-w mydir ls -dl mydir drwxr-x---+ ... tux projekt3 ... mydir getfacl mydir # file: mydir # owner: tux # group: projekt3 user::rwx user:jane:rwx group::r-x group:djungle:rwx mask::r-x other::---

# effective: r-x # effective: r-x

Despus de haber retirado el permiso de escritura a la group class por medio del comando chmod, la salida del comando ls ya le indica que los bits de mask han sido adaptados en consecuencia a travs del comando chmod. Como se puede ver, el nico que posee permiso de escritura sobre el directorio mydir es el propietario. Esto se ve an ms claramente en la salida del comando getfacl. Adems, getfacl aade a cada entrada un comentario informando de que los bits de permiso realmente vlidos no son los definidos inicialmente, ya que la entrada mask se encarga de filtrarlos. Por supuesto, se puede volver a en cualquier momento al estado original con el comando chmod correspondiente:
chmod g+w mydir ls -dl mydir drwxrwx---+ ... tux projekt3 ... mydir getfacl mydir # file: mydir

4 de 7

19/07/2011 05:10 p.m.

B.3. Funcionamiento de las ACLs

http://www.cez.com.pe/Linux/manual suse linux 9.1/suselinux-admingu...

# owner: tux # group: projekt3 user::rwx user:jane:rwx group::r-x group:djungle:rwx mask::rwx other::---

B.3.4. Directorios con ACLs predeterminadas Los directorios pueden ser equipados con un tipo especial de ACLs, las ACLs predeterminadas. Estas definen los derechos que heredan los subobjetos de estos directorios en el momento de su creacin. La ACL predeterminada tiene vigencia tanto sobre subdirectorios como sobre archivos. B.3.4.1. Efecto de una ACL predeterminada Los permisos de acceso en la ACL predeterminada son heredados de forma distinta por archivos y subdirectorios: Un subdirectorio hereda la ACL predeterminada del directorio superior como propia default ACL y adems como access ACL. Un archivo hereda la ACL predeterminada como propia access ACL. Todas las llamadas del sistema (system calls) que crean objetos del sistema utilizan un parmetro Este parmetro se encarga de definir los permisos de acceso sobre el nuevo objeto del sistema:
mode.

Si el directorio superior carece de ACL predeterminada, los permisos resultantes son los introducidos en el parmetro mode menos los permisos asignados en umask. Si existe una ACL predeterminada para el directorio superior, se asignan al objeto los bits de permiso resultantes de la interseccin de los permisos del parmetro mode y de los que contiene la ACL predeterminada. En este caso no se tiene en cuenta umask. B.3.4.2. ACLs predeterminadas en la prctica Los tres ejemplos siguientes ilustran las ACLs predeterminadas y describen las operaciones ms importantes que pueden efectuarse en directorios: Crear una ACL predeterminada para un directorio ya existente. Crear un subdirectorio en un directorio con ACL predeterminada. Crear un archivo en un directorio con ACL predeterminada. 1. A continuacin se aade una ACL predeterminada al directorio mydir ya existente:
setfacl -d -m group:djungle:r-x mydir

La opcin -d del comando setfacl hace que setfacl realice las siguientes modificaciones en (opcin -m) en la ACL predeterminada. Observe el resultado de este comando detenidamente:
getfacl mydir

5 de 7

19/07/2011 05:10 p.m.

B.3. Funcionamiento de las ACLs

http://www.cez.com.pe/Linux/manual suse linux 9.1/suselinux-admingu...

# file: mydir # owner: tux # group: projekt3 user::rwx user:jane:rwx group::r-x group:djungle:rwx mask::rwx other::--default:user::rwx default:group::r-x default:group:djungle:r-x default:mask::r-x default:other::---

La salida de getfacl contiene tanto la access ACL como la ACL predeterminada. Todas las lneas que comienzan por default forman la ACL predeterminada. Aunque en el comando setfacl usted slo haba indicado una entrada para el grupo djungle en la ACL predeterminada, setfacl ha copiado automticamente el resto de entradas del la access ACL para construir una ACL predeterminada vlida. Las ACLs predeterminadas no influyen de manera directa en los permisos de acceso, sino que slo tienen efecto durante la creacin de objetos del sistema. En trminos de herencia, slo se tiene en cuenta la ACL predeterminada del directorio superior. 2. En el siguiente ejemplo cree con mkdir un subdirectorio en mydir que heredar la ACL predeterminada.
mkdir mydir/mysubdir getfacl mydir/mysubdir # file: mydir/mysubdir # owner: tux # group: projekt3 user::rwx group::r-x group:djungle:r-x mask::r-x other::--default:user::rwx default:group::r-x default:group:djungle:r-x default:mask::r-x default:other::---

Como era de esperar, el subdirectorio recin creado mysubdir tiene los permisos de la ACL predeterminada ACL del directorio superior. La access ACL de mysubdir es una rplica exacta de la ACL predeterminada de mydir. Lo mismo sucede con la ACL predeterminada, que a su vez se pasar a los subobjetos de este directorio. 3. Ahora cree un archivo en el directorio mydir por medio de touch:
touch mydir/myfile ls -l mydir/myfile -rw-r-----+ ... tux projekt3 ... mydir/myfile getfacl mydir/myfile # file: mydir/myfile # owner: tux # group: projekt3 user::rwgroup::r-x # effective:r--

6 de 7

19/07/2011 05:10 p.m.

B.3. Funcionamiento de las ACLs

http://www.cez.com.pe/Linux/manual suse linux 9.1/suselinux-admingu...

group:djungle:r-x mask::r-other::---

# effective:r--

Lo ms importante de este ejemplo es que touch pasa el parmetro mode con un valor de 0666, lo que significa que los nuevos archivos se crean con permisos de lectura y escritura para todas las clases de usuario, a no ser que existan otras restricciones por parte de umask o de la ACL predeterminada (ver la seccin B.3.4.1, Efecto de una ACL predeterminada). En nuestro ejemplo esto significa que todos los permisos que no estn incluidos en mode sern eliminados de las entradas ACL correspondientes. Aunque no se ha eliminado ningn permiso de la entrada ACL de group class, la entrada mask ha sido adaptada para que los bits de permiso definidos por mode no sean enmascarados. De este modo se garantiza que un compilador, por ejemplo, pueda funcionar sin problemas con ACLs. Puede crear archivos con permisos de acceso restringidos y a continuacin marcarlos como ejecutables. El mecanismo mask se ocupa de que slo los usuarios y grupos adecuados puedan ejecutar los archivos. B.3.5. Evaluacin de una ACL Una vez explicado el funcionamiento de las herramientas de configuracin ms importantes de las ACLs, a continuacin se describe brevemente el algoritmo de evaluacin al que se somete cualquier proceso o aplicacin antes de que se le proporcione acceso a un objeto del sistema protegido por ACLs. Las entradas ACL son analizadas en el siguiente orden: owner, named user, owning group o named group y other. El acceso se regula a travs de la entrada que mejor se ajuste al proceso. El mecanismo se complica cuando un proceso pertenece a ms de un grupo, ya que potencialmente podr ajustarse a varias entradas group. En este caso se selecciona una de las entradas adecuadas con los permisos requeridos. Para el resultado final acceso autorizado es irrelevante cul de estas entradas ha sido seleccionada. Si ninguna de las entradas group apropiadas contiene los permisos correctos, se selecciona una cualquiera que provocar el resultado final acceso denegado.

B.2. Definiciones

B.4. Soporte en aplicaciones

7 de 7

19/07/2011 05:10 p.m.

Vous aimerez peut-être aussi