inicio mail me! sindicaci;ón

Atributos en ext2/3

Si hace unos días comentaba acerca de los atributos de los ficheros en la implementación de OpenBSD del Unix File System (o Fast File System), ahora mismo estaba viendo su equivalente en ext2, el que fuera hasta hace un par de años sistema de ficheros por defecto de Linux, sucedido por ext3 (que es compatible hacia atrás con ext2) y que dentro de poco será sucedido por ext4 (que de momento y por lo general sí es compatible con ext3).

Los dos comandos que permiten trabajar con los atributos de un fichero son lsattr y chattr, respectivamente para mostrarlos o cambiarlos. Ambos forman parte del paquete e2fsprogs.

Los susodichos atributos son 15, a saber:

  • ‘A’ evita que se modifique el campo atime (accesed time, última vez que fue accedido un fichero) del fichero cada vez que se accede a él. Puede reducir la carga de I/O del sistema.
  • ‘a’ indica que el fichero sólo se puede abrir para añadir si se abre para escritura. Tan sólo root o un proceso con el flag CAP_LINUX_INMUTABLE pueden activar o desactivar esta opción.
  • ‘c’ indica que el fichero se guardará comprimido. Por supuesto, la compresión será transparente al acceso al fichero. A la hora de acceder uno no tiene que preocuparse si el fichero está comprimido o no, eso es cosa del kernel. En las versiones actuales del kernel no está implementado, pero se prevee para versiones futuras.
  • ‘D’ implica actualizaciones síncronas de los directorios cada vez que son accedidos. Sólo es útil a partir de la rama 2.6.
  • ‘d’ excluye al fichero de los programas seleccionados por dump para ser copiados.
  • ‘E’ indica que un fichero tiene un error de compresión (los ficheros de la ‘c’). Es usado por los compresores en etapa experimental, y tan sólo puede ser visualizado mediante lsattr, no puede ser cambiado mediante chattr.
  • ‘i’ impide que se modifique el fichero o que se cree un enlace hacia él, que se elimine o se renombre. Sólo root o procesos CAP_LINUX_INMUTABLE pueden cambiar este flag.
  • ‘j’ hace que todos el fichero sea escrito primero en el journal de ext3 y luego en disco en caso de que el sistema de ficheros esté montado con los modos data=ordered o con data=writeback (con data=journal siempre se hace esto). Sólo root o procesos con la capability CAP_SYS_RESOURCE pueden trastear con esto. Sólo tiene sentido con ext3, no con ext2.
  • ‘s’ se asegura de que al borrar un fichero, todos sus bloques son rellenados con ceros en el disco. Esta forma de borrado segura presenta varias limitaciones. En las versiones actuales del kernel no está implementado, pero se prevee para versiones futuras.
  • ‘S’ actualiza los ficheros de forma síncrona. Similar a la opción sync de mount.
  • ‘T’ manda un directorio a la cima de la jerarquía de directorios. Está relacionado con el asignador de bloques de Orlov presente en la rama 2.6 del kernel desde que se portó la idea de BSD.
  • ‘t’ evita el tail-merging. A excepción de una serie de parches ext3 no cuenta con soporte para tail-merging.
  • ‘u’ guarda el contenido de un fichero cuando éste es borrado, permitiendo así la recuperación del fichero. En las versiones actuales del kernel no está implementado, pero se prevee para versiones futuras.
  • ‘X’, al igual que ‘E’ es usado por los compresores experimentales e indica (y sólo indica, por que no es modificable) que el fichero pese a estar comprimido puede ser accedido directamente.
  • ‘Z’ es similar al anterior, salvo porque indica que el fichero comprimido está sucio.

Desde luego, la variedad de opciones que presentan estos atributos es mayor que la del UFS de OpenBSD, y no sólo mayor si no también diferente. Lástima que Linux no cuente con los Secure Levels de OpenBSD porque a nivel de seguridad (más que de usabilidad) le confieren gran potencia.

Leave a Comment