Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Listas de Control de Acceso (ACLs) para ext2/ext3 (II)

Kernel
Por iarenaza
departamento compila-que-te-compila , Sección Tecnología
Puesto a las Sun Oct 20th, 2002 at 04:11:43 PM CET

Vimos en la primera parte de esta serie cuales son los conceptos básicos que se esconden tras las Listas de Control de Acceso o ACLs así como los sistemas de ficheros Linux que son capaces de usar este tipo de control de acceso, y nos centramos en ext2/ext3.

En esta nueva entrega entramos de lleno de lleno en la fase de compilación e instalación de todo el software necesario para poder disfrutar de las ACLs en nuestros sistemas Linux.

 


La pregunta por tanto es: ¿qué debemos hacer para disfrutar de ACLs en nuestros sistemas de ficheros ext2/ext3 ya mismo? Lo que sigue es un resumen de las instrucciones dadas en el propio sitio del proyecto, donde se indica paso a paso todo el proceso a seguir. Voy a presuponer en este caso que nuestro sistema no dispone de sistemas de ficheros con EAs y ACLs, con lo cual me voy a saltar los pasos de copia de respaldo de las ACLs actuales (y la limpieza del sistema).

  1. Lo primero es obtener una copia de e2fsprogs que soporte EAs y ACLs. La version 1.28 o posterior servirá. En caso contrario, hay que obtener los parches mencionados en la primera parte del artículo y las fuentes de nuestra version actual de e2fsprogs (seguramente nuestra distribución tendrá disponibles los fuentes en su repositorio habitual) y construir de nuevo los ejecutables e instalarlos en el sistema. Alternativamente podemos optar por instalar directamente una versión 1.28 o posterior directamente, sin parchear la actualmente usada en nuestra distribución.

  2. A continuación debemos compilar un kernel con soporte para EAs y ACLs. Para ello debemos descargar los parches correspondientes a nuestro núcleo y aplicarlos de la siguiente forma (el directorio linux/ indica la ubicación donde tenemos desempaquetadas las fuentes del núcleo):

    	  $ cd linux/
    	  $ zcat ../linux-a.b.c-xattr-x.y.z.diff.gz | patch -p1
    	  $ zcat ../linux-a.b.c-acl-x.y.z.diff.gz | patch -p1
    	  

    Una vez parcheado es necesario incluir en la compilación las siguientes opciones al menos (disponibles en la categoria File Systems):

    	  CONFIG_FS_POSIX_ACL=y		(POSIX Access Control Lists)
    	  CONFIG_EXT3_FS_XATTR=y	(Ext3 extended attributes)
    	  CONFIG_EXT3_FS_POSIX_ACL=y	(Ext3 POSIX Access Control Lists)
    	  CONFIG_EXT2_FS_XATTR=y	(Ext2 extended attributes)
    	  CONFIG_EXT2_FS_POSIX_ACL=y	(Ext2 POSIX Access Control Lists)
    	

    Los nombres pueden variar ligeramente de una versión del kernel a otra. Las opciones xxx_XATTR son para activar los Atributos Extendidos, y las opciones xxx_POSIX_ACL para activar las ACLs. Los valores xxx_EXT2_xxx son para sistemas de ficheros ext2 y los valores xxx_EXT3_xxx para ext3.

    Existen otras dos opciones más (al menos en el kernel 2.4.19, que es el que estoy usando para escribir esto):

    1. Ext2 extended attribute block sharing (CONFIG_EXT2_FS_XATTR_SHARING): que permite el uso de un mismo bloque común para almacenar los atributos extendidos de varios nodos-i, en el caso de que dichos atributos sean indénticos en todos los nodos-i.

    2. Ext2 extended user attributes (CONFIG_EXT2_FS_XATTR_USER): que permite a los procesos de usuario almacenar atributos extendidos adicionales en los nodos-i. Por ejemplo para almacenar cualquier tipo de información adicional que dichos procesos deseen, como el juego de caracteres usuado en el fichero (o cualquier otra cosa que se nos ocurra).

    Por supuesto, los dos valores anteriores existen de idéntica forma para el sistema de ficherox ext3.

  3. El siguiente paso es construir las utilidades que sirven para gestionar los AEs y las ACLs de los ficheros: getfattr, setfattr, getfacl, setfacl, etc. Tenemos que descargar el paquete attr que es necesario para poder construir despues el paquete acl, que incluye las utilidades de gestión de las ACLs en sí (el paquete attr incluye además algunas utilidades de gestión de atributos extendidos).

    Es conveniente revisar primero si existen versiones ya empaquetas para nuestra distribución de Linux (tanto Debian GNU/Linux como RedHat, entre otras, las tienen), y que sea una versión de las mismas que sea compatible con la revisión del parche aplicada al núcleo que acabamos de construir.

    En caso de no tenerlas en nuestra distribución, no ser compatibles o simplemente querer tener la última versión disponible compilada por nosotros mismos, estos son los pasos a seguir (necesitaremos el entorno de desarrollo autoconf y todas la utilidades de compilación/desarrollo habituales, más algún retoque manual):

    1. Desempaquetar las utilidades de gestión de Atributos Extendidos (attr-2.0.10.src.tar.gz en el momento de escribir esto):

      	      tar xzvf attr-2.0.10.src.tar.gz
      	      cd attr-2.0.10
      	    

      A continuación tenemos que compilar las herramientas en sí. Si nuestra distribución es RedHat o Debian GNU/Linux, las utilidades vienen con los ficheros de especificación y control necesarios para crear paquetes nativos (ver el fichero doc/INSTALL).

      En caso contrario, debemos compilar todo desde cero con las siguientes instrucciones (en el directorio raíz de los ficheros extraídos):

      	      autoconf
      	      ./configure
      	      make
      	      su root
      	      make install install-lib install-dev
      	    

      Este último método dejará todos los ejecutables más las bibliotecas de funciones de manejo de AEs bajo /usr/local. En general el fichero doc/INSTALL da las indicaciones necesarias para obtener los ejecutables en cualquiera de los casos (incluídas algunas indicaciones para deshabilitar el código de depuración, etc).

    2. Desempaquetar las utilidades de gestión de ACLs (acl-2.0.18.src.tar.gz en el momento de escribir esto):

      	      tar xzvf acl-2.0.18.src.tar.gz
      	      cd acl-2.0.18
      	    

      A continuación tenemos que compilar las herramientas en sí. Como en el caso anterior, si nuestra distribución tiene ya compiladas estas utilidades y con compatibles con la versión de los parches incluídos en el núcleo, lo más sencillo es usar los paquetes nativos de la distribución.

      En caso contrario, debemos compilar todo desde cero con las siguientes instrucciones (en el directorio raíz de los ficheros extraídos):

      	      autoconf
      	      ./configure
      	      make
      	      su root
      	      make install install-lib install-dev
      	    

      Este último método dejará todos los ejecutables más las bibliotecas de funciones de manejo de ACLs bajo /usr/local. Como en el caso anterior, el fichero doc/INSTALL da las indicaciones necesarias para obtener los ejecutables en cualquiera de los casos.

  4. Por último debemos obtener una versión del paquete fileutils parcheado para soportar EAs y ACLs. De lo contrario no podremos copiar los ficheros con sus AEs y ACLs, sacar en los listados la indicación de que hay acls adicionales a los permisos tradicionales (ya que se siguen manteniendo los permisos tradicionales), etc.

    En el propio sitio del proyecto se puede encontrar el parche para algunas versiones del paquete fileutils. En general esta es la parte más complicada del proceso, al ser un paquete completamente externo al sistema de ficheros y las utilidades ext2/ext3. Los problemas se presentarán si la versión de fileutils que vamos a utilizar no se corresponden exactamente a las indicadas en los parches, ya que tendremos que integrar parte de los cambios a mano, y eso siempre es más complicado.

Una vez compilado e instalado todo lo mencionado en los puntos anteriores ya tenemos todos los elementos necesarios para poder disfrutar de los EAs y las ACLs en nuestros sistemas de ficheros ext2/ext3. Sólo nos queda un último paso, indicar al núcleo que en un determinado sistema de ficheros deseamos usar ACLs (y EAs).

Para ello debemos editar el fichero /etc/fstab y añadir una opción adicional a la de aquellos sistemas de ficheros a los que queremos activar las ACLs : acl. También podemos añadir una opción para indicar explícitamente que no queremos usar las ACLs en un sistema de ficheros, aun si dicho sistema de ficheros contiene ACLs: noacl. Por ejemplo, si queremos activar las ACLs en el sistema de ficheros /dev/hdc12 que tenemos montado en /samba, tendremos una línea similar a la siguiente en /etc/fstab:

     /dev/hdc12   /samba   ext2   acl,rw      0 2
    

Existe un juego de opciones adicional para activar o desactivar el uso de los AEs de usuario (si hemos optado por compilarlos en nuestro núcleo): user_xattr y nouser_xattr. Por cierto, que los valores por defecto para todos los sistemas de ficheros ext2/ext3 en caso de no especificar nada son noacl y nouser_xattr.

Una vez hecho lo anterior, sólo nos resta arrancar con el nuevo núcleo que acabamos de compilar y voilá!, ya tenemos nuestras ACLs disponibles y listas para usar.

En la próxima entrega de la serie (yups, pensaba que todo iba a caber en dos partes, pero la cosa se alarga y se alarga) hablaremos de como se consultan las ACLs, como se modifican, como se evaluan (y cual es el resultado en caso de haber varias ACEs aplicables en una misma ACLs), que es la máscara de ACLs, y como fijar las ACLs por defecto para los nuevos objetos creados.

Puede que, dependiendo de la longitud de la tercera entrega, haya una cuarta donde se indique como usar las ACLs en una aplicación real de producción: Samba.

Saludos. Iñaki.

< Redes P2P GNUtella al descubierto (0 comments) | Linux con KDE en acesso a internet en hotel (9 comments) >
Enlaces Relacionados
· las instrucciones
· parches correspondientes a nuestro núcleo
· paquete attr
· paquete acl
· parche
· Samba
· More on Kernel
· Also by iarenaza

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Listas de Control de Acceso (ACLs) para ext2/ext3 (II) | 5 comentarios (5 temáticos, editoriales, 0 ocultos)
Como disfrutar de las ACL en mandrake (none / 0) (#1)
por luca a las Sun Oct 20th, 2002 at 07:32:44 PM CET
(Información Usuario)

urpmi acl

Y ya está. El kernel de mandrake ya trae soporte para ACL (en la 9.0 el kernel ya viene compilado con las opciones expuestas en el articulo, en la 8.2 no, así que supongo que solo funcionará con xfs, con el cual lo he podido comprobar personalmente, y no con ext3, que no uso)



No sólo de kernel vivien las ACLs ;) (none / 0) (#3)
por iarenaza a las Sun Oct 20th, 2002 at 10:15:46 PM CET
(Información Usuario) http://www.escomposlinux.org/

Como comento en mi artículo, no basta con que el kernel esté compilado con soporte para ACLs y tener las utilidades de gestión de estas.

Además es necesario que tanto e2fsprogs como fileutils tengan soporte para AEs y ACLs. De lo contario las operaciones más basicas con los ficheros (copia, moviento, comprobación del sistema de ficheros, etc) harán que nuestras ACLs se pierdan en /dev/null.

Saludos. Iñaki.

[ Padre ]


Bug de mandrake (none / 0) (#4)
por luca a las Mon Oct 21st, 2002 at 12:50:15 AM CET
(Información Usuario)

He comprobado y el paquete fileutils suministrado con Mandrake no soporta acl. A estas alturas (mandrake ha sido la primera distribución a integrar soporte para acl con xfs) lo considero un bug.

[ Padre ]


 
Llego tarde al "topical post" (none / 0) (#2)
por gonzotba a las Sun Oct 20th, 2002 at 08:44:44 PM CET
(Información Usuario)

Pero me gustaría alabar la calidad y el el trabajo del artículo. Mejor que muchos How-To's.

Con contenidos así, Libertonia tiene un largo y próspero futuro.



 
Acl´s para samba (none / 0) (#5)
por LuisPa a las Wed Mar 12th, 2003 at 08:55:09 AM CET
(Información Usuario)

Iñaki, primero felicitarte por tus dos artículos anteriores. Para cuando prevés que nos podrías echar una mano publicando la tercera parte el articulo donde podríamos utilizar las acl con samba. Tengo problemas para parchear el fileutils, podrias detallar un poco los paso. Gracias y un saludo a todos. Luis.



 
Listas de Control de Acceso (ACLs) para ext2/ext3 (II) | 5 comentarios (5 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda