Esta pagina se ve mejor con JavaScript habilitado

ACLs sistemas de ficheros Linux

 ·  🎃 kr0m

Hay ocasiones en las que los permisos en un sistema de ficheros se nos pueden quedar cortos, mediante ACLs se consigue un control mas granular sobre el acceso a cada fichero.

Los requisitos necesarios para poder utilizar ACLs son

  • e2fsprogs >= 1.28 eix e2fsprogs
  • Soporte en el kernel File Systems –> Extended attributes
  • Paquete sys-apps/attr: emerge -av sys-apps/attr
  • /etc/fstab con las opciones acl, user_xattr

Ahora ya podemos empezar a definir ACLs, las herramientas para ello son:

  • getfacl: Consultar las ACLs de un fichero dado
  • setfacl: Modificar las ACLs de un fichero dado

Vamos a poner un caso real en el que se verá todo mas fácil, supongamos que disponemos de un directorio donde queremos que cierto grupo de usuarios tengan acceso de lectura y ejecución y otro grupo con permisos de lectura, escritura y ejecución.

Con este escenario nos sería imposible cumplir con las condiciones con el sistema de permisos tradicional de Linux, para resolverlo vamos a crear ACLs:

mkdir prueba
useradd -s /bin/bash user1
useradd -s /bin/bash user2
useradd -s /bin/bash user3
useradd -s /bin/bash user4
groupadd group_1
groupadd group_2
gpasswd -a user1 group_1
gpasswd -a user2 group_1
gpasswd -a user3 group_2
gpasswd -a user4 group_2

setfacl -m g:group_1:r-x prueba
setfacl -m g:group_2:rwx prueba

getfacl prueba
# file: prueba
# owner: root
# group: root
user::rwx
group::r-x
group:group_1:r-x
group:group_2:rwx
mask::rwx
other::r-x

Los permisos de user, group y other donde no se indica el usuario o grupo son los permisos mostrados por ls -la
Ahora si hacemos un ls -la veremos un + indicando que tiene ACLs extendidas:

drwxrwxr-x+ 2 root root 4096 sep 7 17:22 prueba

Para borrar las ACLs:

setfacl -x g:group_1 prueba
setfacl -x g:group_2 prueba

getfacl prueba
# file: prueba
# owner: root
# group: root
user::rwx
group::---
mask::---
other::---

Si queremos configurar las acls extendidas a nivel de usuario se aplican del mismo modo pero cambiando el indicador g: por u:

setfacl -m u:user1:r-x prueba

getfacl prueba
# file: prueba
# owner: root
# group: root
user::rwx
user:user1:r-x
group::---
mask::r-x
other::---
Si te ha gustado el artículo puedes invitarme a un RedBull aquí