Listas de control de acceso en ficheros Linux

El uso de las ACL nos permite determinar si una entidad (usuario, grupo) puede acceder o no a un objeto, y qué acciones puede realizar contra dicho objeto, de una forma totalmente granular mejorando la seguridad de acceso a los ficheros o directorios de Linux.

Hay que tener presente que en todas las distribuciones no tienen instalado el paquete “acl”, si no es así se procedería a instalarlo como primera instancia. Para poder usar las ACL deberemos informar al sistema de ficheros que debe montarse con la opción “acl”:

Mostrar ACL en ficheros o directorios

Para poder ver las ACL aplicadas a un archivo usaremos el comando getfacl

# getfacl fichero2.txt

Una de las características de usar ACL es que en los permisos del fichero aparecerá el símbolo “+” para indicar que el fichero contiene reglas ACL:

Antes de configurar las ACL sobre un fichero conviene cambiar los permisos a 600 ya que podíamos incurrir en permisos que se contradijesen.

Añadir ACL en ficheros o directorios

Para configurar permisos utilizaremos el comando setfacl con el siguiente formato, que es válido para usuarios y grupos:

# setfacl -m "[u/g]:[user/group]:permissions" <file/dir>

Por ejemplo si queremos que el usuario lionel tenga solo permisos de escritura sobre el archivo fichero1.txt

# setfacl -m u:lionel:r-- fichero1.txt

Si consultamos los permisos concedidos con el siguiente comando:

# getacl fichero1.txt

En el caso de querer que dentro de un directorio todos los ficheros o subdirectorios hereden los permisos del padre deberemos utilizar el parámetro “d”. Por ejemplo si queremos que el directorio “dirprueba” tenga el usuario “frank”  con los permisos de lectura para todos los ficheros y directorios que contenga el comando sería el siguiente:

# setfacl –m d:u:frank:r dirprueba

Si quisiéramos establecer una máscara para cualquier usuario utilizaríamos el parámetro “m”:

# setfacl –m m:u::r dirprueba

Borrar  ACL en ficheros o directorios

Si queremos borrar un permiso utilizamos “-x”, por ejemplo eliminar los permisos para el usuario “Frank” en el directorio “dirprueba”:

# setacl –x u:frank dirprueba

Y finalmente si queremos eliminar todas las ACLs del directorio “dirprueba” utilizaremos el parámetro “-b”:

# setacl -b dirprueba

Debemos tener en cuenta que si usamos el comando tar las ACL se perderán por lo que deberemos añadir la opción   “–acls” al comando para que las mantenga.