Linux para novatos: haz intocables tus archivos importantes en Linux

Hoy toca hablar de chattr, una utilidad para nuestra terminal que sirve para asignar diferentes atributos a nuestros archivos en Linux. Uno de los objetivos principales de esta herramienta es el de proteger nuestros archivos de cambios involuntarios o borrados accidentales y lo mejor de todo, te protegerá incluso aunque ejecutes comandos de borrado o modificación siendo superusuario (root).

Hard drive disk toning in blue color close-up

Los atributos de los que vamos a hablar hoy son soportados por los sistemas de archivos de Linux nativos como ext2, ext3, ext4, btrfs, etc… Uno no podrá eliminar ni modificar los archivos con los atributos que usemos, aunque tenga todos los permisos para hacerlo.

La sintaxis de este comando es la siguiente:

chattr [operador] [atributo] [archivo]

Algunos de los atributos disponibles

Aquí os dejo una lista traducida de las opciones y atributos que podemos usar para asignárselos a los archivos mediante chattr y mi resumen básico:

Opcion para tratar carpetas

  • -R Cambia de manera descendente los atributos de directorios y sus contenidos.

Operadores de asignación

  • + Hace que se añadan los atributos especificados a los atributos existentes de un archivo.
  • Hace que se eliminen los atributos especificados de los atributos existentes de un archivo
  • = Hace que se reemplacen los atributos existentes por los atributos especificados.

Atributos más interesantes

  • a   Establece que el archivo sólo se puede abrir en modo de adjuntar para escritura.
  • i   Establece que el archivo será inmutable. Es decir, se impide que el archivo sea eliminado, renombrado, que se pueden apuntar enlaces simbólicos hacia éste o escribir datos en el archivo.
  • s   Cuando un archivo tiene este atributo, los bloques utilizados en el disco duro son escritos con ceros, de modo que los datos no se puedan recuperar por medio alguno. Es la forma más segura de eliminar datos.
  • u   Cuando un archivo con este atributo es eliminado, sus contenidos son guardados permitiendo recuperar el archivo con herramientas para tal fin.

Práctica: hagamos archivos intocables

Para realizar el ejemplo sin miedo a dañar nada, usaremos unos archivos de prueba llamados carpeta-prueba y archivo-prueba.txt. Procedamos a crearlos:

    $ mkdir carpeta-prueba
    $ touch archivo-prueba.txt

Ahora, lo único que tenemos que hacer es usar la sintaxis antes descrita para proteger nuestros archivos.

    $ sudo chattr +i carpeta-prueba/
    $ sudo chattr +i archivo-prueba.txt 

Es importante saber que [ i] solo puede ser asignada por un usuario con privilegios de superusuario. Si lo intentas como usuario «normal» recibirás el siguiente mensaje:

chattr: Operación no permitida mientras se ponían las banderas en archivo-prueba.txt

Ahora podremos comprobar los atributos mediante el siguiente comando:

    $ lsattr
....
----i--------e-- ./archivo-prueba.txt
...

Si intentamos borrar los archivos no nos dejará ni siendo superusuario:

     $ rm prueba.txt 
rm: ¿borrar el fichero regular vacío «prueba.txt»  protegido contra escritura? (s/n) s
rm: no se puede borrar «prueba.txt»: Operación no permitida

Para volver a la normalidad el estado de los archivos:

    $ sudo chattr -i carpeta-prueba/
    $ sudo chattr -i archivo-prueba.txt 

Y con esto ya podremos eliminarlos o modificarlos. Echadle un vistazo a los demás atributos, seguro que encontráis algo útil.