Conjuntamente con los permisos, los
atributos de ficheros en Unix es una opción muy válida para restringir
aún más, las operaciones a realizar con nuestros ficheros y directorios.
En sistemas Linux, se usa el comando chattr
para cambiar estos atributos. Una vez “dominado” es uno de los comandos
mas útiles en linux para salvaguardar la integridad de muchos de sus
ficheros importantes conjuntamente con los permisos.
Es un comando poco conocido por muchos
usuarios e incluso administradores de sistemas. Con chattr, y en
sistemas de ficheros ext2 o posteriores, es posible asignarle atributos a
los ficheros y directorios que residan en los mismos. El uso del
comando está restringido naturalmente a root y en algunos casos al
propietario del fichero (consultar la página man)
La tabla con los atributos y sus significados, la podemos ver aqui:
Atributo | Significado | Ejemplo de uso |
A | El valor de la fecha de acceso no será cambiado en cada lectura del fichero. | Puede incrementar los tiempos de lectura al ahorrarse la actualización de este dato. |
s | El espacio que ocupaba el fichero, será rellenado por bloques de ceros cuando el fichero sea eliminado. | Muy util para realizar un borrado pseudoseguro de forma rápida. No obstante, es recomendable el uso de srm. |
a | El fichero únicamente podrá ser abierto para añadir datos al mismo. | Este atributo está pensado principalmente para usarlo con logs. Podemos modificarlos para añadir líneas pero no modificar más. |
c | Activa la compresión de los datos del fichero. | En kernels con soporte de compresión, se comprime el espacio del fichero en disco de forma transparente para las aplicaciones. |
D | Este atributo hace que los datos escritos en un directorio, se sincronicen en el discto de forma automática. | Es muy util en el caso de discos en memoria RAM o bien en aquellos que la escritura sea en formato raw. No es muy seguro para equipos de uso habitual. |
d | Elimina el fichero o directorio de las copias de seguridad realizadas con la utilidad dump. | Util para directorios como /tmp o aquellos de los que no queramos hacer backup o se hagan con otras herramientas. |
I | Suele venir por defecto en ext4 y ext3. Está relacionado con la utilización de la indexación vía htree de estos sistemas. | Desactivando este atributo, podemos ahorrar tiempo de acceso en el caso de estar utilizando otros sistemas de indexación, aunque rara vez se dará el caso. |
i | Pone el fichero en modo solo lectura y no es posible crear enlaces hacia el. | Interesante atributo para activarlo en ficheros que rara vez son escritos. Binarios, ficheros de un servidor web, repositorios de consulta, o incluso ficheros de BBDD que no son accedidos vía web para su modificación. |
j | En sistemas con ext3 o superior, es posible realizar el “journaling” de los ficheros con este atributo en el caso de que la partición no sea montada con tal opción. | Puede ahorrar tiempos de acceso a disco montar un sistema de estas caracterìsticas y activar el journaling solo para determinados ficheros. No es muy recomendable. |
S | Este atributo tiene el mismo significado para los ficheros, que el D para los directorios. | Es muy util en el caso de discos en memoria RAM o bien en aquellos que la escritura sea en formato raw. No es muy seguro para equipos de uso habitual. |
T | Activa el denominado Orlov block allocator en un directorio. Esto es, que el directorio con este atributo, se escribirá en las partes mas “rápidas” del disco. | Este atributo es muy util para utilizarlo con algunos directorios con gran número de accesos como un directorio de un servidor web, el servidor de ficheros, etc. |
t | Los ficheros con este atributo, no presentan fragmentación en el sistema de ficheros. | Realmente, no tiene mucho uso salvo para antiguos sistemas. Actualmente, los sistemas modernos, cuentan con FS resistentes a la fragmentación. |
La forma de asignar un atributo es con
el signo “+” y retirarlo es con el signo “-”. Para listar los atributos
de los ficheros, se puede utilizar el comando lsattr.
Vamos a ver un ejemplo:
-bash-3.2# touch prueba -bash-3.2# chattr +i prueba -bash-3.2# rm prueba rm: remove write-protected regular empty file `prueba'? y rm: cannot remove `prueba': Operation not permitted -bash-3.2#id uid=0(root) gid=0(root) groups=0(root)....
En este ejemplo, hemos activado el flag i, inmutable, y como vemos, ni siquiera el propio root puede eliminar el fichero. Otro ejemplo muy interesante:
-bash-3.2# chattr +a prueba -bash-3.2# rm prueba rm: remove regular empty file `prueba'? y rm: cannot remove `prueba': Operation not permitted -bash-3.2# echo HOLA > prueba -bash: prueba: Operation not permitted -bash-3.2# echo HOLA >> prueba
En este segundo ejemplo, activando el atributo a, append,
no nos permite enviar datos al fichero para cambiar su contenido
completamente, pero sí que nos permite la escritura para añadir datos al
mismo.
En Unix, e incluyo naturalmente a OSX, el comando el cuestión es chflags
y la utilidad del mismo es muy similar. Como siempre, recomiendo
muchísima precaución a la hora de usar estos comandos ya que pueden
dejar el sistema operativo totalmente inutilizable e inaccesible.
Saludos,
Fuente:
http://www.flu-project.com/atributos-de-ficheros-en-linux-y-unix-chattr-y-chflags.html
No hay comentarios:
Publicar un comentario