Chattr: establecer atributos de archivos en Linux

Además de los permisos especiales de los que hablamos en posts anteriores, en Linux disponemos -a través del paquete e2fsprogs, disponible por defecto en una instalación inicial- de una herramienta sumamente útil para aumentar la seguridad de nuestro sistema. Mediante un nivel adicional de protección, chattr nos permite poner restricciones en el tipo de modificaciones que se pueden hacer sobre un archivo, e incluso impedirlas por completo.

Uso básico de chattr

Ilustraremos la funcionalidad básica de chattr mediante los siguientes ejemplos:

Ejemplo 1 – Impedir que el archivo selabanca.txt sea borrado o renombrado como otronombre.txt agregando el atributo i (immutable):

touch selabanca.txt
chattr +i selabanca.txt
rm selabanca.txt
mv selabanca.txt otronombre.txt

Si luego quitamos el atributo, podremos borrar o renombrar el archivo sin inconvenientes:

chattr -i selabanca.txt
mv selabanca.txt otronombre.txt

El ejemplo 1 es ilustrado en la Fig. 1 a continuación:

Uso de chattr para impedir que un archivo sea borrado o renombrado
Figura 1 – Uso de chattr para impedir que un archivo sea borrado o renombrado

Ejemplo 2 – Impedir que se borre el contenido del archivo selabanca.txt (pero que sí permita a root agregar contenido al mismo). Podemos lograr este objetivo al agregar el atributo a (append) a dicho archivo:

echo "Hoy es lunes" > selabanca.txt
chattr +a selabanca.txt
echo "y ayer fue domingo" > selabanca.txt
echo "y ayer fue domingo" >> selabanca.txt
cat selabanca.txt

Como podemos ver en la Fig. 2, el archivo selabanca.txt no puede ser sobrescrito (ni siquiera por root), pero sí puede agregarse contenido al mismo.

Usar chattr para impedir la sobrescritura de un archivo
Figura 2 – Usar chattr para impedir la sobrescritura de un archivo

De la misma forma en que lo hicimos en el ejemplo 1, podemos remover el atributo del archivo y así poder realizar la sobrescritura del mismo si es que lo deseamos:

chattr -a selabanca.txt

Antes de seguir con el ejemplo 3, asegurémonos de volver a colocar los atributos agregar (a) e inmutable (i) al archivo selabanca.txt.

Ejemplo 3 – Listar los atributos especiales de un archivo

Si deseamos ver los atributos especiales que fueran aplicados a un archivo con anterioridad, podemos utilizar el comando lsattr (provisto por el mismo paquete, e2fsprogs) tal como vemos en la Fig. 3:

Observar los atributos de un archivo con lsattr
Figura 3 – Observar los atributos de un archivo con lsattr

Aunque estos son ejemplos clásicos del uso de chattr, esta herramienta puede modificar otros atributos especiales de archivos (ver man chattr para mayores detalles). Solamente aplica a sistemas de archivos nativos de Linux (ext2, ext3, ext4, xfs, btrfs, etc).

El uso de los atributos de archivo puede ayudarnos a impedir, por ejemplo, que un intruso que haya obtenido acceso a nuestro sistema pueda modificar o borrar los logs del sistema (¡si es que dichos archivos poseen los atributos correspondientes!)

¡Nos leemos en el próximo post!