Comandos chattr y lsattr en Linux: una guía de atributos de archivo

Introducción

En Linux, ciertos atributos de archivos y directorios solo se pueden consultar o modificar con comandos específicos. Estos atributos permiten restringir las operaciones con archivos, como impedir la eliminación o modificación, incluso por parte del usuario root. Esta funcionalidad es especialmente útil para proteger archivos y directorios críticos.

En esta guía, trataremos dos comandos esenciales:

  • chattr: se usa para establecer o quitar atributos de archivo.
  • lsattr: se usa para ver los atributos de archivo.

Estos comandos se usan habitualmente en sistemas de archivos ext2, ext3 y ext4 y son herramientas fundamentales para los administradores de sistemas.


¿Qué es el comando chattr ?

El comando chattr te permite cambiar los atributos de archivo en un sistema de archivos Linux. Usa modos simbólicos para añadir, quitar o establecer atributos específicos. Estos atributos pueden controlar cómo se comportan los archivos, por ejemplo, haciéndolos inmutables o de solo adición.

Características principales de chattr:

  • Proteger archivos contra eliminaciones o modificaciones accidentales.
  • Restringir las operaciones con archivos, incluso para usuarios root.
  • Permitir una gestión de archivos y una seguridad avanzadas.

Documentación oficial de chattr

Para más detalles, consulta la documentación oficial de chattr :
Linux Man Pages – chattr


¿Qué es el comando lsattr ?

El comando lsattr muestra los atributos de archivos y directorios en un sistema de archivos ext2, ext3 o ext4 . Es especialmente útil para solucionar problemas cuando encuentras problemas de acceso a archivos.

Características principales de lsattr:

  • Ver los atributos de archivo en un formato fácil de leer.
  • Solucionar problemas de acceso y modificación causados por los atributos de archivo.

Documentación oficial de lsattr

Para más detalles, consulta la documentación oficial de lsattr :
Linux Man Pages – lsattr


Sintaxis de los comandos

chattr Sintaxis del comando

chattr [ -RVf ] [ -v version ] [ -p project ] [ + | - | = [attributes] ] files...

Explicación:

  • -R: cambiar recursivamente los atributos de los directorios y su contenido.
  • -V: mostrar la salida detallada y la versión del programa.
  • -f: suprimir la mayoría de los mensajes de error.
  • -v version: establecer el número de versión/generación del archivo.
  • -p project: establecer el número de proyecto del archivo.
  • +: añadir los atributos especificados.
  • -: quitar los atributos especificados.
  • =: establecer los atributos exactamente como se especifica.
  • attributes: una combinación de indicadores de atributo (por ejemplo, i, a, etc.).
  • files...: archivos o directorios de destino.

Ejemplos:

  • Añadir el atributo inmutable:chattr +i filename
  • Quitar el atributo de solo adición:chattr -a filename
  • Establecer los atributos exactamente (por ejemplo, inmutable y de solo adición):chattr =ia filename

lsattr Sintaxis del comando

lsattr [ -RVadlpv ] [ files... ]

Explicación:

  • -R: listar recursivamente los atributos de los directorios y su contenido.
  • -V: mostrar la versión del programa.
  • -a: listar todos los archivos, incluidos los archivos ocultos (los que empiezan por .).
  • -d: listar los directorios como archivos normales, en lugar de listar su contenido.
  • -l: imprimir las opciones con nombres largos en lugar de abreviaturas de una sola letra.
  • -p: listar el número de proyecto del archivo.
  • -v: listar el número de versión/generación del archivo.
  • files...: archivos o directorios de destino.

Ejemplos:

  • Mostrar los atributos de un archivo:lsattr filename
  • Mostrar los atributos de todos los archivos de un directorio:lsattr /path/to/directory

Atributos de archivo comunes y sus indicadores

La siguiente tabla resume los atributos de archivo más comunes y sus significados:

AtributoIndicadorDescripción
Solo adiciónaEl archivo solo se puede abrir en modo de adición para escritura.
InmutableiEl archivo no se puede modificar, eliminar ni renombrar.
Sin atimeALa hora de acceso al archivo (atime no se actualiza para reducir la E/S de disco.
Sin volcadodEl archivo se excluye de las copias de seguridad realizadas con el programa dump .
Registro de datosjLos datos del archivo se escriben en el diario antes de escribirse en el propio archivo.
Actualizaciones síncronasSLas actualizaciones del archivo se escriben de forma síncrona en el disco.
ImborrableuCuando se elimina el archivo, sus datos se guardan para una posible recuperación.

Para ver la lista completa de atributos, consulta la página de manual de chattr :
Linux Man Pages – chattr


Solución de problemas con chattr y lsattr

Problema: no se puede modificar ni eliminar un archivo

Si encuentras un error como este:

E212: Can't open file for writing

Sigue estos pasos:

  1. Comprobar los permisos del archivo
    Verifica los permisos del archivo con:ls -l filename
  2. Comprobar los atributos del archivo
    Usa el comando lsattr para comprobar si hay atributos que puedan restringir las modificaciones:lsattr filename
  3. Quitar los atributos restrictivos
    Si el archivo tiene el atributo i (inmutable) o a (solo adición), quítalo con el comando chattr :chattr -i filename chattr -a filename
  4. Verificar los cambios
    Vuelve a ejecutar el comando lsattr para confirmar que los atributos se han eliminado:lsattr filename

Ejemplo práctico: a Atributo

Escenario:

No puedes modificar ni renombrar el archivo /etc/ssh/known_hosts.

Pasos para resolverlo:

  1. Comprueba los atributos del archivo:lsattr /etc/ssh/known_hosts
  2. Si el atributo a está establecido, quítalo:chattr -a /etc/ssh/known_hosts
  3. Verifica que el atributo se ha eliminado:lsattr /etc/ssh/known_hosts
  4. Ahora deberías poder guardar o renombrar el archivo.

Conclusión

El comando chattr y lsattr son herramientas inestimables para gestionar los atributos de archivo en Linux. Proporcionan una capa adicional de protección para archivos y directorios críticos, lo que los hace esenciales para los administradores de sistemas. Tanto si proteges archivos de configuración como si solucionas problemas de acceso a archivos, dominar estos comandos mejorará tu experiencia con Linux.

Deja un comentario