Gestión de ACL mediante los comandos Getfacl y Setfacl en Linux

Published:

Listas de control de acceso (también conocidas como ACL’s) son un método flexible para establecer permisos en Linux. Todos los sistemas operativos tienen algún nivel de ACL, que asignan permisos a usuarios y grupos en archivos y directorios.

Entonces, ¿por qué se requieren ACL en cualquier variante de Linux?

Cada archivo que creamos en Linux tiene unos permisos, que se aplican a todos los usuarios del sistema. Veamos esto con un ejemplo creamos un nuevo archivo llamado prueba.txt con el siguiente comando:

touch prueba.txt

Después de crear el archivo, veamos los permisos simplemente listando el archivo usando el siguiente comando:

ls -l

Los permisos en el archivo de muestrán así:

-rw-r--r-- 1 nk1 nk1 0 mar 23 11:41 prueba.txt

Para cambiar los permisos de los usuarios, usaríamos el comando chmod. Por ejemplo:

chmod 744 prueba.txt

Con este comando, obtenemos los siguientes permisos:

-rwxr--r--

Analicemos estos permisos.

  • rwx: el propietario del archivo, alguien que creó el archivo, obtiene los permisos de lectura, escritura y ejecución.
  • r–: Luego vienen los permisos de grupo, que son de lectura. El grupo no puede escribir ni ejecutar el archivo. En este caso el grupo es nk1.
  • r–: Entonces, Otros también tienen permisos de lectura pero no de escritura ni de ejecución.

Entonces, ¿Cuál es el problema con estos permisos? O mejor dicho los limitantes.
El problema con los permisos es que se aplica el mismo conjunto de permisos a todos los usuarios y miembros del grupo, que es nk1.

Otro problema es que si un usuario no es parte del grupo nk1, el usuario no obtiene los permisos asignados al archivo.

1- Verificar que podemos usar ACL’s

Debemos verificar que nuestro sistema admite ACL, esto lo comprobamos:

cat /boot/config-5.10.0-8-amd64 | grep ACL

Nos debería devolver algo como:

CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_9P_FS_POSIX_ACL=y

Podemos verificarlo en Debian o derivadas con:

sudo apt list --installed | grep acl

En caso de no tener el paquete hacemos

sudo apt install acl

2- Uso de Setfacl y Getfacl

Vamos a hacer uso de estos 2 comandos para gestionar los permisos.

2.1- El comando getfacl nos permite saber los permisos actuales.

getfacl prueba.txt

2.2- El comando setfacl

Setfacl es como te estarás imaginando, el comando para establecer los permisos. Vamos a darle permisos al grupo nk2 al archivo prueba.txt

setfacl -m g:nk2:7 prueba.txt

Tengamos en cuenta que g: hace referencia al grupo nk2 y se le han asignado explícitamente los permisos de lectura, escritura y ejecución. En caso de necesitar, usar u para usuarios si no o para otros.
Para entender de donde sale el número 7 son los permisos de lectura, escritura y ejecución:

  • Leer:4
  • Escribir:2
  • Ejecutar:1

Por lo tanto iremos jugando con las combinaciones. Y además podemos darle permisos a otros usuarios o grupos.

3- Eliminar ACL

Puede que necesitemos eliminar las ACL de un archivo o directorio y volver a las ACL predeterminadas.

setfacl -b prueba.txt

Verificamos

getfacl prueba.txt

4- Copiar ACL’s de un archivo a otro

Podemos copiar la configuración de un archivo, prueba.txt a copia.cvs

getfacl prueba.txt | setfacl --set-file=- copia.cvs
- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles