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







