Permisos con ACL

enero 27, 2008 at 2:01 am (1, linux, Redes, Seguridad, Unix)

Los permisos de linux están bien siempre que no dispongamos de un grupo muy grande de usuarios , si es asi se haria muy lioso ya que tendríamos un /etc/group muy grande. Una forma Elegante de arreglar este problema es usando las ACL (Listas de Control de Acceso)

A groso modo una ACL es una lista de usuarios o grupos Linux y sus correspondientes permisos de acceso que tienen a un fichero o directorio.

Instalando y activando las ACL

Para aumentar la granularidad de los permisos en tu sistema debes tener en cuenta:

  • El nucleo debe soportar y estar compilado para soportar atributos extendidos y ACL
  • El sistema de ficheros tiene de montarse con atributos extendidos y ACL
  • Se tienen de instalar las utilidades de espacio de usuario (chacl,getfacl y setfacl) para establecer el ACL.

Una vez claros estos conceptos pasamos a activar ACL.

Soporte ACL del núcleo de sistema

La gran mayoría de distros actuales ya soportan ACL puedes comprobar si tienes soporte con este comando.

# grep POSIX_ACL /boot/config-`uname -r`
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
# CONFIG_TMPFS_POSIX_ACL is not set

Como podéis tenemos activados en el kernel si no es asi recompilamos el kernel marcando estas opciones.

File systems —>

[*] ReiserFS extended attributes

[*] ReiserFS POSIX Access Control Lists

Soporte ACL en /etc/fstab

Una vez que tengamos soporte ACL necesitaremos configurar /etc/fstab para activar los susodichos permisos .

Los sistemas de ficheros montados con acl tendrán la palabra clave “acl” en las porciones de opciones de montaje de sus entradas en el fichero.

Ejemplo

/dev/sda6 /usr reiserfs noatime,acl,user_xattr 1 2

/dev/hda1 /opt ext3 defaults 0 0

Como podéis ver sda6 tiene soporte acl en el punto de montaje , si quisiéramos dar soporte acl a hda1 seria tan fácil como al punto de montaje acl

/dev/hda1 /opt ext3 defaults,acl 0 0

Una vez actualizado el fichero /etc/fstab debemos remontar el sistema de fichero.

Ejemplo para hda1

# mount -o remount,acl /dev/hda1

Soporte ACL en el espacio de usuario

El último paso para usar ACL asegurarse de que las aplicaciónes de espació de usuario estén presentes en el sistema

En Debian o Ubuntu puedes comprobar asi

# dpkg -l |grep acl
ii acl 2.2.42-1ubuntu1 Access control list utilities
ii libacl1 2.2.42-1ubuntu1

Tambien puedes comprobar buscando las herramientas

# type -a getfacl

getfacl is /usr/bin/getfacl

Si ACL no esta instalado puedes instalarlo desde el manejador de paquetes de tu distribución en debian por ejemplo.

# apt-get install acl

Formato ACL

Linux soprta 2 tipos básicos de ACL:

  • ACL de control de directorios y ficheros
  • ACL de directorio (Mascaras) ACL que toman por defecto los ficheros creados en ese directorio.

La ACL se representa por tres campos separados por “:”

Campo 1

Entrada

  • “u” Ususario
  • “g” Grupo
  • “o” Otro
  • “m” Mascara

Campo 2

El segundo campo esta formado por:

  • UID (ID numérico de usuario)
  • GID (ID numérico de grupo)
  • Vacío (Asume UID,GID del Creador)

Campo 3

  • El tercer campo es el de acceso y puede ser representado de 2 maneras.
  • Cadena estándar RWX (las cadenas se pueden remplazar por – sino queremos dar acceso de ese tipo)
  • Cadena simbólica + ^

Herramientas

  • chacl : Permite cambiar,examinar o eliminar ACL
  • getfacl : Permite examinar acl para encontrar archivos o directorios
  • setfacl : Establece ACL a fichero o directorio.

Mostrar ACL

Para el ejemplo usare un directorio con archivos que he creado con touch.

> ls -l
total 0
-rw-r–r– 1 tuxed tuxed 0 2008-01-26 03:03 lerele
-rw-r–r– 1 root root 0 2008-01-26 03:03 pass
-rw-r–r– 1 root root 0 2008-01-26 03:02 user

La acl para el directorio siguiente es

> getfacl .
# file: .
# owner: root
# group: root
user::rwx
group::rwx
other::rwx

La acl por defecto para el fichero lerele es esta

> getfacl lerele
# file: lerele
# owner: tuxed
# group: tuxed
user::rw-
group::r–
other::r–

La acl para el directorio el qual no se le ha asignado coje los de umask.

Establecer ACL

Hay tres maneras de establecer un ACL

  1. Usando el comando setfacl el qual sobrescribe qualquier ACL anterior.
  2. Usando el comando setfacl con la opción -m (Modifica ACL)
  3. Usando chacl para modificar una ACL existente.

En esta ocasión mostrare como se cambian las acl con chacl , ya que este no sobrescribe la ACL existente, y ademas proporciona algo mas de información de como realmente funcionan las acl

Ejemplo

Añadiremos al usuario aitor como alguien que puede leer el fichero lerele , usaría chacl (cambiar la ACL) del siguiente modo:

$ chacl u::rw-,g::r–,o::—,u:aitor:r–,m::rw- lerele

Esta es la forma en la que se ve una acl en la vida real , el hecho de que sea una comando tan largo es que se debe definir los puntos ya nombrados anteriormente el propietario de fichero, grupo propietario y otros

para entendernos mejor la porción u::rw,g::r–,o::— es la ACL existente y la porción u:aitor:r–,m::rw- especifica el nuevo usuario el nuevo usuario que quiero añadir a dicha acl y la mascara de derechos efectivos cuando se añada.

La mascara de derechos efectivos es la unión de todos los permisos ya existentes de UGO para un fichero o directorio. esta se tiene al añadir un usuario a la ACL.

Para comprobar que hemos sido añadidos a la acl usaremos

$ getfacl lerele
# file: lerele
# owner: tuxed
# group: tuxed
user::rwx
group::r–
other::—
user:aitor:r–
mask::rw-

Ahora que ya sabemos como funciona acl podriamos poner que aitor tenga permisos de lectura y escritura a lerele

$ chacl u::rw-,g::r–,o::—,u:aitor:rw-,m::rw- lerele

como veis le hemos añadido permisos de escritura

$ getfacl lerele
# file: lerele
# owner: tuxed
# group: tuxed
user::rwx
group::r–
other::—
user:aitor:rw-

Pues espero que hos guste.

About these ads

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: