Chattr y Lsattr
chattr
y lsattr
son comandos en sistemas Linux utilizados para manipular y visualizar los atributos de los archivos en sistemas de archivos ext4 y otros similares. A continuación, te explicaré en detalle ambos comandos, cómo funcionan y qué atributos pueden manejar.
chattr
(Change Attribute)
El comando chattr
se utiliza para cambiar los atributos de los archivos. Estos atributos afectan cómo los archivos pueden ser modificados, eliminados y gestionados por el sistema.
Uso Básico
chattr [opciones] [atributos] archivo
Opciones Comunes
+
: Añade los atributos especificados al archivo.-
: Elimina los atributos especificados del archivo.=
: Establece los atributos del archivo exactamente como se especifica (sobreescribe los atributos existentes).
Atributos Comunes
a
(append only): El archivo solo puede ser abierto en modo de anexar. Solo se pueden agregar datos, no se pueden modificar ni eliminar los existentes.i
(immutable): Hace que el archivo sea inmutable. No se puede modificar, eliminar, renombrar o enlazar.d
(no dump): Evita que el archivo sea incluido en los backups realizados con el comandodump
.e
(extent format): Este atributo indica que el archivo está en formato de extensión.s
(secure deletion): Los bloques del archivo se sobrescriben con ceros cuando se elimina.u
(undeletable): Mantiene una copia del archivo cuando se elimina, permitiendo su recuperación.
Ejemplos
-
Hacer un archivo inmutable:
sudo chattr +i archivo.txt
-
Permitir solo la anexión de datos a un archivo:
sudo chattr +a log.txt
-
Eliminar el atributo inmutable:
sudo chattr -i archivo.txt
lsattr
(List Attributes)
El comando lsattr
se utiliza para listar los atributos de los archivos. Esto es útil para verificar qué atributos están establecidos en un archivo o directorio.
Uso Básico
lsattr [opciones] archivo
Opciones Comunes
-a
: Lista todos los archivos en un directorio, incluyendo los archivos ocultos.-d
: Muestra los atributos del directorio en sí, en lugar de los atributos de los archivos dentro del directorio.-R
: Lista recursivamente los atributos de todos los archivos y subdirectorios.
Ejemplos
-
Listar atributos de un archivo:
lsattr archivo.txt
-
Listar atributos de todos los archivos en un directorio:
lsattr -a
-
Listar atributos de todos los archivos y subdirectorios recursivamente:
lsattr -R /ruta/al/directorio
Ejemplos Prácticos
1. Proteger un archivo de cambios
Supongamos que tienes un archivo de configuración que no quieres que sea modificado:
sudo chattr +i /etc/important.conf
Para verificar que el atributo inmutable ha sido establecido:
lsattr /etc/important.conf
La salida podría ser algo como:
----i--------e----- /etc/important.conf
2. Permitir solo la anexión de datos a un archivo de registro
Si tienes un archivo de registro al que solo deseas agregar datos:
sudo chattr +a /var/log/append-only.log
Verificar el atributo:
lsattr /var/log/append-only.log
La salida podría ser:
----a--------e----- /var/log/append-only.log
Atributos Especiales y su Significado
a
(append only): Solo permite agregar datos al archivo.c
(compressed): El archivo está marcado para compresión automática.d
(no dump): El archivo no será incluido en backups condump
.e
(extent format): Usa el formato de extensión para archivos grandes.i
(immutable): El archivo no puede ser modificado de ninguna forma.s
(secure deletion): Los bloques del archivo se sobrescriben con ceros cuando se elimina.u
(undeletable): Mantiene una copia del archivo cuando se elimina.
Conclusión
chattr
y lsattr
son herramientas poderosas en Linux para gestionar y visualizar atributos especiales de archivos y directorios. Estos atributos proporcionan un nivel adicional de control sobre cómo los archivos pueden ser manipulados, lo que es útil para la seguridad y la integridad del sistema de archivos.
Vamos a explorar cada uno de los atributos especiales en Linux, su significado y cómo se pueden usar con ejemplos prácticos utilizando los comandos chattr
y lsattr
.
Atributos Especiales y su Significado
1. a
(append only)
-
Significado: El archivo solo puede ser abierto en modo de anexar. Esto significa que puedes agregar datos al final del archivo, pero no puedes modificar o eliminar los datos existentes.
-
Ejemplo Práctico:
-
Crear un archivo y agregar el atributo
append only
:echo "Línea inicial" > log.txt sudo chattr +a log.txt
-
Intentar agregar datos al archivo:
echo "Nueva línea" >> log.txt
-
Intentar modificar el archivo (esto fallará):
echo "Intento de modificación" > log.txt # Resultado: Permiso denegado
-
Verificar los atributos del archivo:
lsattr log.txt # Salida: ----a--------e----- log.txt
2. c
(compressed)
-
Significado: El archivo está marcado para compresión automática por el sistema de archivos. Este atributo solo es soportado en ciertos sistemas de archivos, como
btrfs
. -
Ejemplo Práctico:
-
Marcar un archivo para compresión automática:
sudo chattr +c archivo.txt
-
Verificar los atributos del archivo:
lsattr archivo.txt # Salida: ----c--------e----- archivo.txt
3. d
(no dump)
-
Significado: El archivo no será incluido en backups realizados con el comando
dump
. -
Ejemplo Práctico:
-
Agregar el atributo
no dump
a un archivo:sudo chattr +d archivo_no_dump.txt
-
Verificar los atributos del archivo:
lsattr archivo_no_dump.txt # Salida: ----d--------e----- archivo_no_dump.txt
4. e
(extent format)
-
Significado: Usa el formato de extensión para almacenar archivos grandes de manera más eficiente. Este atributo es manejado automáticamente por el sistema de archivos y no suele ser modificado manualmente.
-
Ejemplo Práctico:
-
Crear un archivo grande (el sistema de archivos puede asignar automáticamente este atributo):
dd if=/dev/zero of=archivo_grande.txt bs=1M count=100
-
Verificar los atributos del archivo:
lsattr archivo_grande.txt # Salida: ----e--------e----- archivo_grande.txt
5. i
(immutable)
-
Significado: El archivo no puede ser modificado, eliminado, renombrado o enlazado.
-
Ejemplo Práctico:
-
Hacer un archivo inmutable:
sudo chattr +i importante.conf
-
Intentar modificar el archivo (esto fallará):
echo "Intento de modificación" >> importante.conf # Resultado: Permiso denegado
-
Verificar los atributos del archivo:
lsattr importante.conf # Salida: ----i--------e----- importante.conf
6. s
(secure deletion)
-
Significado: Los bloques del archivo se sobrescriben con ceros cuando se elimina, asegurando que los datos sean irrecuperables.
-
Ejemplo Práctico:
-
Agregar el atributo
secure deletion
a un archivo:sudo chattr +s secreto.txt
-
Eliminar el archivo:
rm secreto.txt
-
Verificar los atributos del archivo antes de eliminarlo:
lsattr secreto.txt # Salida: ----s--------e----- secreto.txt
7. u
(undeletable)
-
Significado: Mantiene una copia del archivo cuando se elimina, permitiendo su recuperación.
-
Ejemplo Práctico:
-
Agregar el atributo
undeletable
a un archivo:sudo chattr +u recuperable.txt
-
Eliminar el archivo:
rm recuperable.txt
-
Verificar los atributos del archivo antes de eliminarlo:
lsattr recuperable.txt # Salida: ----u--------e----- recuperable.txt
Resumen de Comandos
-
Agregar un atributo:
sudo chattr +atributo archivo
-
Eliminar un atributo:
sudo chattr -atributo archivo
-
Verificar atributos de un archivo:
lsattr archivo
Estos ejemplos muestran cómo se pueden usar los atributos especiales de chattr
y lsattr
para gestionar el comportamiento de los archivos en Linux.