Linux atributos ficheros y directorios

En linux es posible asignarle atributos a los ficheros, esto permite incrementar el nivel de seguridad. Es posible por ejemplo proteger un archivo para que no se pueda eliminar.

Para ver los atributos de un fichero:

Source   
[root@tester1 prueba]# lsattr
-------------e- ./fich.txt
-------------e- ./fich2.txt

La modificación de los atributos se puede realizar con la ayuda de:

Source   
chattr [ -RVf ] [ -v version ] [ mode ] files...

Para obtener la documentación completa lo mejor es recurrir al man que para eso está. Los atributos que me paracen más interesantes son:

  • a, No se puede borrar el fichero, solo hacer un append.
  • i, Inmutable, no se puede borrar, modificar ni crear hard links sobre el.

Para activar un atributo se antepone un + a la opción y para desactivarlo un -.

Por ejemplo evitar la eliminación de un fichero pero si append:

Source   
[root@tester1 prueba]# ls -l
total 24
-rw-r-xr--. 1 root root 9376 mar 6 16:50 fich2.txt
-rw-r-xr--. 1 root root 9376 mar 6 16:51 fich.txt
[root@tester1 prueba]# lsattr
-------------e- ./fich.txt
-------------e- ./fich2.txt
[root@tester1 prueba]# chattr +a fich.txt
[root@tester1 prueba]# lsattr
-----a-------e- ./fich.txt
-------------e- ./fich2.txt
[root@tester1 prueba]# rm fich.txt
rm: ¿borrar el fichero regular «fich.txt»? (s/n) s
rm: no se puede borrar «fich.txt»: Operación no permitida
[root@tester1 prueba]# cat fich2.txt >> fich.txt
[root@tester1 prueba]# ls -l
total 32
-rw-r-xr--. 1 root root 9376 mar 6 16:50 fich2.txt
-rw-r-xr--. 1 root root 18752 mar 6 16:52 fich.txt

Proteger un fichero:

Source   
[root@tester1 prueba]# chattr -a fich.txt
[root@tester1 prueba]# lsattr
-------------e- ./fich.txt
-------------e- ./fich2.txt
[root@tester1 prueba]# chattr +i fich.txt
[root@tester1 prueba]# lsattr
----i--------e- ./fich.txt
-------------e- ./fich2.txt
[root@tester1 prueba]# rm fich.txt
rm: ¿borrar el fichero regular «fich.txt»? (s/n) s
rm: no se puede borrar «fich.txt»: Operación no permitida
[root@tester1 prueba]# cat fich2.txt >> fich.txt
-bash: fich.txt: Permiso denegado
[root@tester1 prueba]# ln fich.txt lfich.txt
ln: creating hard link «lfich.txt» => «fich.txt»: Operación no permitida
[root@tester1 prueba]# ln -s fich.txt lfich.txt

El posible proteger directorios enteros de forma recursiva con:

Source   
chattr -R +i prueba

Yo lo veo bastante útil para proteger ficheros de configuración de aplicaciones.

Deja un comentario