Lsattr y chattr: leer y establecer atributos especiales

Además de los permisos de lectura, escritura, y de ejecución asociados con el dueño, el grupo propietario y el resto de los usuarios del sistema, Linux nos permite establecer otros atributos en archivos y directorios. Estas propiedades son específicas del tipo de sistema de archivos. En este post hablaremos de algunas de las que podemos encontrar en filesystems del tipo extended (utilizaremos como ejemplo ext4). A continuación, mostraremos cómo utilizar lsattr y chattr para leer y cambiar estos atributos especiales.

Lsattr y chattr

Para empezar, crearemos dos archivos llamados prueba1.txt y prueba2.txt en nuestro directorio actual. En cada uno de ellos agregaremos luego el siguiente contenido:

echo "Yo soy el archivo prueba1.txt" > prueba1.txt
echo "Yo soy el archivo prueba2.txt" > prueba2.txt

En primer lugar, veamos cómo ver la lista de atributos especiales que fueron asignados a estos nuevos archivos:

lsattr prueba*
Lsattr y chattr: ver atributos con lsattr
Figura 1 – Lsattr y chattr: ver atributos con lsattr

La Fig. 1 nos muestra la lista de atributos especiales que fueron asignados a estos nuevos archivos. La letra e que podemos ver en la salida del comando anterior indica que estos archivos utilizan extents para reducir la fragmentación.

Ahora nos interesa setear los siguientes atributos especiales

  • append only, representado con una a, y
  • immutable, representado con una i.

Estos atributos nos permiten:

  • solamente agregar contenido al archivo pero no borrar nada, y
  • evitar que sea borrado, renombrado, editado, o que se agregue un enlace al mismo,

respectivamente.

Para ver la lista completa de atributos podemos consultar el man page de chattr.

Establecer atributos con chattr

Con una cuenta con permisos de superusuario, agreguemos el atributo append only a prueba1.txt y también el immutable a prueba2.txt:

chattr +a prueba1.txt
chattr +i prueba2.txt

Ahora regresemos a nuestra cuenta de usuario común. A continuación, veamos en la Fig. 2 qué sucede cuando 1) tratamos de agregar y borrar contenido de prueba1.txt, 2) hacer lo mismo con prueba2.txt, 3) borrar, renombrar, editar, o crear un enlace a prueba2.txt.

Lsattr y chattr: establecer y quitar atributos especiales con chattr
Figura 2 – Lsattr y chattr: establecer y quitar atributos especiales con chattr

Las operaciones que fallaron no podrán realizarse mientras los atributos mencionados estén presentes. Finalmente, para quitarlos, deberemos hacer (también como root):

chattr -a prueba1.txt
chattr -i prueba2.txt

Espero que este post les haya resultado útil. ¡Nos leemos en breve!

¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!