Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org
Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.
La herramienta chattr es fundamental para la protección de la integridad del sistema de archivos, ofreciendo un nivel adicional de seguridad más allá de los permisos tradicionales.
Puede utilizar chattr para cambiar los atributos de los sistemas de archivos ext2, ext3, ext4 y Xfs. Desde cierto punto de vista, es análogo a chmod, pero con diferente sintaxis y opciones. Utilizado adecuadamente, dificulta las acciones en el sistema de archivos por parte de un intruso que haya logrado suficientes privilegios en un sistema.
En la mayoría de los casos, cuando un intruso consigue suficientes privilegios en un sistema, lo primero que hará será eliminar los registros de sus actividades modificando estructuras de los archivos de bitácoras del sistema y otros componentes. Utilizar chattr ciertamente es un obstáculo fácil de librar para un usuario experto, pero afortunadamente la gran mayoría de los intrusos potenciales distan mucho de serlo, dependiendo enormemente de diversos programas o guiones ―los denominados rootkits y zappers― para eliminar aquello que permita descubrir sus actividades.
Utilizar chattr, incluido en el paquete e2fsprogs, que se instala de forma predeterminada en todas las distribuciones de GNU/Linux por tratarse de un componente esencial, hace más difícil borrar o alterar bitácoras, archivos de configuración y componentes del sistema. Theodore Ts'o es el desarrollador y quien se encarga de mantener e2fsprogs, mismo que se distribuye bajo los términos de la licencia GNU/GPL, e incluye otras herramientas como e2fsck, e2label, fsck.ext2, fsck.ext3, fsck.ext4, mkfs.ext2, mkfs.ext3, mkfs.ext4, tune2fs y dumpe2fs, entre muchas otras.
El manual con la descripción completa del uso de chattr puede consultarse ejecutando lo siguiente:
man 1 chattr
URL: https://e2fsprogs.sourceforge.net
A continuación se presentan las opciones principales del mandato chattr:
-R: Cambia de manera descendente los atributos de directorios y sus contenidos. Los enlaces simbólicos que se encuentren, son ignorados.-V: Salida de chattr más descriptiva, mostrando además la versión del programa.-v versión: Establece la versión del archivo en el sistema de archivos.Los operadores determinan la acción a realizar sobre los atributos de un archivo o directorio:
+: Añade los atributos especificados a los atributos existentes de un archivo.-: Elimina los atributos especificados de los atributos existentes de un archivo.=: Reemplaza los atributos existentes por los atributos especificados.Los atributos modificables con chattr proporcionan controles avanzados sobre el comportamiento de los archivos en el sistema de archivos.
A: Impide la modificación de la fecha del último acceso (atime).a: Establece que el archivo sólo se puede abrir en modo de adjuntar para escritura. Es imposible sobrescribirlo o eliminarlo.c: Establece que el archivo es comprimido automáticamente en el disco por el núcleo del sistema operativo. Al realizar lectura de este archivo, se descomprimen los datos. La escritura de dicho archivo comprime los datos antes de almacenarlos en el disco.D: Cuando se trata de un directorio, establece que los datos se escriben de forma sincrónica en el disco. Es decir, los datos se escriben inmediatamente en lugar de esperar la operación correspondiente del sistema operativo. Es equivalente a la opción dirsync de mount, pero aplicada a un subconjunto de archivos.d: Establece que el archivo no sea candidato para respaldo al utilizar la herramienta dump.e: Indica que el archivo o directorio utiliza extensiones (extents) para la cartografía de bloques en la unidad de almacenamiento, particularmente de sistemas de archivos Ext4. Cabe señalar que chattr es incapaz de eliminar este atributo en sistemas de archivos Ext4.i: Establece que el archivo será inmutable. Es decir, se impide que el archivo sea eliminado, renombrado, que se puedan apuntar enlaces simbólicos hacia éste o escribir datos en el archivo.j: En los sistemas de archivos ext3 y ext4, cuando se montan con las opciones data=ordered o data=writeback, se establece que el archivo será escrito en el registro por diario (Journal). Si el sistema de archivos se monta con la opción data=journal (opción predeterminada), todo el sistema de archivos se escribe en el registro por diario y por lo tanto el atributo carece de efecto.s: Cuando un archivo tiene este atributo y es eliminado, los bloques que utilizaba en el disco duro son sobrescritos con ceros, de modo que los datos originales sean irrecuperables.S: Cuando el archivo tiene este atributo, sus cambios son escritos de forma sincrónica en el disco duro. Es decir, los datos se escriben inmediatamente en lugar de esperar la operación correspondiente del sistema operativo. Es equivalente a la opción sync de mount.u: Cuando un archivo con este atributo es eliminado, sus contenidos son guardados, permitiendo la recuperación del archivo con herramientas diseñadas para tal fin.La sintaxis general del mandato es la siguiente:
chattr [-RV] +-=[AacDdijsSu] [-v versión] archivo(s)
A continuación se presentan ejemplos prácticos del uso de chattr para proteger archivos.
Genere un archivo de prueba denominado algo.txt:
touch algo.txt
Agregue el atributo inmutable al archivo algo.txt ejecutando lo siguiente:
chattr +i algo.txt
Verifique que se ha establecido dicho atributo ejecutando lsattr utilizando algo.txt como argumento:
lsattr algo.txt
Si intenta sobrescribir el archivo:
echo "Hola mundo" > algo.txt
El sistema devolverá un error debido a que el archivo se ha convertido en inmutable y por lo tanto se impide su modificación.
Elimine el atributo inmutable del archivo algo.txt ejecutando lo siguiente:
chattr -i algo.txt
Verifique que se ha eliminado el atributo ejecutando lsattr:
lsattr algo.txt
Añada el atributo sólo-adjuntar al archivo algo.txt:
chattr +a algo.txt
Verifique el atributo que ha sido establecido:
lsattr algo.txt
Si intenta nuevamente sobrescribir el contenido:
echo "Hola mundo" > algo.txt
Al igual que con el atributo i, será imposible reemplazar contenido. Sin embargo, si ejecuta lo siguiente para adjuntar texto:
echo "Hola mundo" >> algo.txt
El sistema debió permitir adjuntar datos al final del archivo algo.txt.
Elimine el atributo sólo-adjuntar al archivo algo.txt:
chattr -a algo.txt
Verifique que se ha eliminado el atributo:
lsattr algo.txt
En sistemas de archivos Ext3 y Xfs, ejecutar lo siguiente establece que el archivo algo.txt sólo tendrá los atributos a, A, s y S:
chattr =aAsS algo.txt
En sistemas de archivos Ext4, lo anterior siempre fallará porque es imposible eliminar el atributo e con chattr. En su lugar, ejecute lo siguiente:
chattr =eaAsS algo.txt
Verifique los atributos que han sido establecidos:
lsattr algo.txt
Los atributos descritos son compatibles con los sistemas de archivos ext4 y Xfs utilizados de forma predeterminada en distribuciones modernas como AlmaLinux, Rocky Linux y RHEL 8/9/10. El atributo e (extents) es nativo y permanente en ext4, por lo que cualquier operación con chattr debe incluirlo en la lista de atributos al utilizar el operador =.