Como evitar que archivos y carpetas sean borrados en Linux

A veces es necesario proteger algunos archivos y/o carpetas para que no puedan ser borrados. Puede ser el caso de pcs compartidas o de sistemas donde se necesite mejorar un poco la seguridad en caso de posibles penetraciones.

El comando que nos ayudara con la tarea sera chattr(change attribute). Este se utiliza para cambiar varios atributos de archivos y puede usarse en carpetas de manera recursiva. Y tambien haremos uso del comando lsattr(list attribute) para ver las modificaciones que hacemos.

El comando es parte del paquete que viene instalado de base en todas las distros de linux.

Se usa asi:

chattr [opciones][operadores][atributos]

En opciones tenemos por ejemplo:

  • -R: Que es para cambios recursivos. Se usa con carpetas

En los operadores tenemos por ejemplo:

  • +: Para añadir atributos
  • -: Para quitar atributos

Y en los atributos podemos poner por ejemplo:

  • a: Establece que el fichero solo se puede abrir en modo de adjuntar para escritura
  • s: 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: Sus contenidos son guardados permitiendo recuperar el fichero con herramientas para tal fin.

Se pueden encontrar mas de todo eso en la pagina man de chattr pero en concreto a nosotros nos interesa el atributo ‘i’ que hace que el archivo no pueda ser renombrado, ni eliminado, ni escribir datos en el. O sea que lo pone en modo de solo lectura.

Supongamos que tenemos el archivo DatosImportantes.txt que queremos proteger. Hacemos asi:

sudo chattr +i DatosImportantes.txt

Y ya no podran borrarlo con un

rm DatosImportantes.txt

Ni siquiera con un

sudo rm DatosImportantes.txt

Y si fuera una carpeta la que queremos proteger de ser borrada, seria asi:

sudo chattr -R +i MiCarpeta

Podemos comprobar que el atributo ha sido agregado usando lsattr en la carpeta que contiene esa otra carpeta o el archivo:

lsattr -a

Y podriamos ver claramente el atributo agregado:

lsattr

Y cuando deseemos poder eliminar ese archivo usaremos

sudo chattr -i DatosImportantes.txt

Espero que les haya gustado el tip

perro

Ingeniero en Informática. Programador en PHP y Angular. Lo que mas adoro en el mundo es el conocimiento. Y el anime....y Japón...y el running...y bloguear claro y algunas otras cientos de cosas. Sigo buscando la manera de hacer mi primer millón.

1
Comenta!

avatar
zipizap
zipizap

El tip es muy interesante

Creo que el chattr no funciona en todos los tipos de filesystem, aunque funciona en ext3 y ext4 que son los mas habituales

El hecho de que se tenga que ser root, es un poco condicionante – para evitar, utilizando «setfacl» y «getfacl» se puede cambiar los permisos de acceso a ficheros de modo mas granular que con chmod, por lo que se puede conseguir el mismo efecto, y sin necesidad de «root»