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.