![](https://static.isu.pub/fe/default-story-images/news.jpg?width=720&quality=85%2C50)
5 minute read
4.4.- Administración de Listas de Control de Acceso (ACLs): acl
Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo
Advertisement
En esta parte de la presente práctica aprenderemos a gestionar las listas de control de acceso (ACLs) en un sistema GNU/Linux, con la finalidad de administrar de una manera más adecuada los permisos concedidos a usuarios sobre el sistema de archivos entre las distintas cuentas de usuario dadas de alta en la máquina.
Una de las mayores limitaciones que presenta GNU/Linux es la correspondiente a la administración de la seguridad y gestión de los permisos asociados a los archivos y directorios del sistema de ficheros. Por defecto, esta gestión se reduce a poder controlar los permisos de lectura (r, read), escritura (w, write), y ejecución (x, execute) correspondientes al usuario, al grupo de usuarios propietarios asignado a un fichero o directorio y al resto de usuarios. Estos permisos pueden consultarse ejecutando el comando "ls" en formato largo "ls -l": [root@linux]# ls -l -rw-rw---- 1 arturo administradores 51470 2009-07-20 09:34 archivo.conf drwxrwxr-x 2 arturo usuarios 4096 2009-07-22 12:29 videos/ lrwxrwxrwx 1 arturo usuarios 7 2009-10-22 08:21 enlace1 -> /tmp/tmp.txt tipo permisos enlaces duros propietario grupo tamaño fecha/hora nombre
- rw-rw---- 1 arturo administradores 51470 2009-07-20 09:34 archivo.conf
d rwxrwxr-x 2 arturo usuarios 4096 2009-07-22 12:29 videos/
l rwxrwxrwx 1 arturo usuarios 7 2009-10-22 08:21 enlace1
Para gestionar estos permisos en GNU/Linux se hace uso de los comandos del sistema "chmod", "chown" y "chgrp". A modo de ejemplo:
Por ejemplo, para modificar los permisos de un archivo de tal forma que el usuario propietario pueda leer y escribir (modificar) sobre él, el grupo de propietarios tan sólo leer, y el resto de usuarios ni siquiera leer su contenido (con el símbolo "+" se concede ese permiso, y con un "-" se deniega): [root@linux]# chmod u+rw-x,g+r-wx,o-rwx "nombre fichero"
En el caso de no indicar o omitir en el comando "chmod" a quien queremos que afecte el cambio de permisos "u" (usuario propietario), "g" (grupo propietario) o "o" (otros), por defecto el cambio se producirá para todos. Por ejemplo, si queremos que cualquier usuario pueda ejecutar un determinado fichero, o acceder al contenido de un determinado directorio:
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 163
Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo
[root@linux]# chmod +x "nombre fichero/directorio"
En el siguiente ejemplo se muestra como modificar los permisos de un directorio de tal forma que únicamente pueda acceder a su contenido (permiso de ejecución, x), ver su contenido (permiso de lectura, r), y escribir en él (permiso de escritura o modificación, w) el propietario del directorio únicamente, pero nadie más, ejecutaríamos el siguiente comando: [root@linux]# chmod -R u+rwx,g-rwx,o-rwx "nombre directorio"
La opción "-R" nos permitirá que los permisos asignados sean recursivos, es decir, sean heredados por todos los archivos y subcarpetas que contenga el directorio afectado.
Para cambiar de usuario propietario o grupo de propietarios de un archivo o directorio: [root@linux]# chown "nombre usuario" "nombre fichero/nombre directorio" [root@linux]# chgrp "nombre grupo" "nombre fichero/nombre directorio"
En el caso de que queramos que el cambio sea recursivo, de tal forma que afecte al directorio indicado y todo lo que este contenga, se hará uso de la opción "-R": [root@linux]# chown -R "nombre usuario" "nombre directorio" [root@linux]# chgrp -R "nombre grupo" "nombre directorio"
Como se puede advertir a través de los ejemplos anteriores, la concesión de privilegios a usuarios y grupos sobre archivos y directorios de manera nativa esta muy limitada. Es decir, si quisiéramos especificar que sobre un archivo o directorio diferentes usuarios y grupos, tuvieran a su vez distintos privilegios, por defecto en GNU/Linux sería imposible. Para suplir esta carencia se hace uso de "Listas de Control de Acceso", ACL. Estas nos van a permitir asignar una lista de nombres de usuarios y grupos con sus privilegios de manera individualizada.
Para saber como hacer uso de las ACLs seguiremos los siguientes pasos: 4.4.1.- Comprobación de que nuestro Kernel admite Listas de Control de Acceso, ACLs, dentro de nuestro sistema de archivos (p.e. ext4). En concreto, el siguiente comando nos informará de la posibilidad de gestionar ACLs en los distintos sistemas de archivos soportados por GNU/Linux (ext3, ext4, jfs, xfs, nfs, etc): [root@linux]# more /boot/config-`uname -r` | grep ACL CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_REISERFS_FS_POSIX_ACL=y CONFIG_JFS_POSIX_ACL=y ... 4.4.2.- Instalar el paquete software "acl", el cual nos permitirá gestionar ACLs dentro de nuestro sistema de archivos. De esta forma dispondremos de las utilidades de gestión de las listas de control
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 164
Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo
de acceso "getfacl" y "setfacl". [root@linux]# apt-get install acl
4.4.3.- Editar el fichero "/etc/fstab" para activar la gestión de Listas de Control de Acceso, ACLs, en las particiones deseadas de manera permanente. De esta forma, cuando nuestro equipo se reinicie consultará el archivo fstab y advertirá que la unidad de almacenamiento especificada tiene soporte para ACLs: [root@linux]# nano /etc/fstab ... /dev/particion /punto/de/montaje ext4 defaults,acl 0 0 ¡¡Advertencia!! Otra opción sería montar la partición manualmente. Si quisiéramos activarlos únicamente de manera temporal para la sesión en en que nos encontramos ejecutaríamos el siguiente comando: [root@linux]# mount -t ext4 /dev/particion -o defaults,acl /punto/de/montaje
Por último, si no queremos reiniciar el equipo deberemos rehacer el montaje para que surtan efectos los cambios realizados en "/etc/fstab" (sólo en el caso de que no hayamos realizado el montaje manualmente mediante "mount"): [root@linux]# mount –o remount /punto/de/montaje
A partir de este momento, la unidad de almacenamiento especificada ya estará preparada para soportar ACLs. Por tanto, a continuación se mostrará como utilizar las herramientas de gestión de ACLs: "getfacl" y "setfacl". Advertir que no es necesario que sea el usuario "root" el que haga uso de estas herramientas de gestión, sino el mero propietario del archivo o directorio.
Comando y Descripción Ejemplos de Uso setfacl Permite asignar una ACL a un directorio (con -R de manera recursiva a todos sus subdirectorios) [usuario@linux]$ setfacl -m user:nombre_usuario:r-x \ nombre_directorio|nombre_archivo [usuario@linux]$ setfacl -Rm user:nombre_usuario:r-x \ nombre_directorio [usuario@linux]$ setfacl -m u:nombre_usuario:r-x \ nombre_directorio|nombre_archivo [usuario@linux]$ setfacl -Rm group:nombre_grupo:r-x \ nombre_directorio [usuario@linux]$ setfacl -Rm g:nombre_grupo:r-x nombre_directorio [usuario@linux]$ setfacl -Rm \ user:nombre_usuario:r-x,user:otro_nombre:rwx,... \ nombre_direc [usuario@linux]$ setfacl -x user:nombre_usuario nombre_directorio [usuario@linux]$ setfacl -Rx user:nombre_usuario \ nombre_directorio [usuario@linux]$ setfacl -b nombre_directorio
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 165