Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

miércoles, 16 de septiembre de 2015

Atributos en los ficheros Linux

En esta ocasión vengo a hablaros de una faceta poco conocida de Linux: Se tratan de los atributos de los ficheros y directorios. Es importante no confundir este concepto con los permisos o con los metadatos, ya que son conceptos complemente distintos; pues los atributos se tratan de comportamientos especiales y limitaciones que se le pueden poner a un fichero; ya sea para mantenerlo más seguro o para impedir que se hagan modificaciones innecesaria en éste. Probablemente nos hayamos encontrado a lo largo de nuestra vida con un fichero que posea ciertos atributos, si bien al ser un concepto muy poco conocido no hayamos tenido constancia de éstos. 

Linux_atributos

Primero es importante conocer qué atributos puede tener un fichero para saber a qué nos atenemos. Generalmente todos los ficheros tienen únicamente el atributo e (cuyo significado veremos más adelante) pero pueden llegar a tener alguno más, con lo que antes de optar a modificar sus atributos es recomendable listar éstos para conocer a fondo nuestro fichero. Para ello se hace uso del comando lsattr (List Attributes) que simplemente consta del nombre del comando seguido del nombre del fichero que queremos consultar. Por ejemplo:

lsattr /usr/src/fichero.txt

Tras dicho comando veremos un listado de caracteres en los cuales aparecerá el carácter - (en caso de no tener asignado ningún atributo) o una letra que representaría un atributo en concreto. Un ejemplo de un listado de atributos sería el resultado otorgado por nuestro último comando.

Lista_atributos

Conociendo dicho dato habría que comenzar a añadir o quitar atributos a dicho fichero, ¿pero qué atributos son éstos y qué función posee cada uno? Cada atributo está representado por un carácter alfabético, y he aquí el listado de los caracteres más usados:
  • a: Gracias a este atributos únicamente se pueden añadir datos al fichero, pero no se pueden modificar los datos existentes, cosa muy útil en ficheros críticos en los que únicamente se tienen que añadir datos, tales como los ficheros de log.
  • A: Este atributo hace que el sistema no modifique la última fecha de lectura de un fichero; cosa útil en sistemas con muy pocos recursos en los queremos ahorrar el máximo trabajo posible a la máquina, pero que también puede ser peligroso ya que en caso de que alguna persona no deseada leyese el fichero, no apreciaríamos ninguna modificación en la fecha en la que se ha leído el fichero por última vez.
  • s: Probablemente uno de los atributos más útiles, ya que al borrar un fichero o directorio con este atributo, el espacio que éste ocupaba sería sustituido por bloques de ceros, haciendo un borrado seguro del archivo.
  • u: Otro atributo realmente útil cuando queremos asegurarnos de la inamovilidad de un fichero... El objetivo de este atributo es exactamente opuesto al de s ya que se asegura de que si un archivo es borrado con este parámetro, éste pueda ser recuperado más adelante.
  • i: Uno de los atributos más usados por los amantes de la seguridad. Éste atributo hace que el fichero SIEMPRE esté en modo lectura, independientemente de los permisos otorgados mediante chmod.
  • I: Este atributo está implantado por defecto en los sistemas de ficheros ext3 y ext4 para la indexación de archivos con lo que por lo que en caso de no trabajar con uno de estos sistemas de ficheros debería estar desactivado.
  • c: Activa la compresión de datos en el fichero que tenga este atributo. Dicho fichero estaría (a nivel de tamaño) comprimido de forma transparente para las aplicaciones.
  • t: Un fichero con este atributo es reticente a sufrir fragmentación, cosa rara en sistemas Linux, pero con este atributo adicional la posibilidad de fragmentación con este archivo es muchísima menor.
  • T: Este atributo se aplica sobre directorios y se denomina Orlov block allocator; dicho atributo tiene como objetivo hacer que todo el contenido de un directorio con dicho atributo se escriba en la parte más rápidas del disco.
  • d: Gracias a este atributo, el fichero o directorio serán excluidos de cualquier copia de seguridad realizada con dumpcap.
  • D: Hace que una carpeta sea síncrona; es decir que el contenido del directorio se sincronice de forma automática.
  • e: Se trata de un atributo que está implementado por defecto en todos los ficheros y/o directorios y significa que utilizan extents para el mappeo de bloques en el disco... Se trata de un parámetro que es muy recomendable no alterar a menos que sea estrictamente necesario.
A sabiendas de la mayoría de la opciones que nos pueden ofrecer estos estupendos atributos, solamente faltaría proceder a añadir o quitar éstos a un fichero o directorio... Esto es tan sencillo como hacer uso del comando chattr, seguido del operador + (para añadir un atributo) o - (para eliminarlo) seguido del carácter que corresponde al atributo que deseamos modificar...

Supongamos que deseamos hacer que nuestro fichero (llamado fichero.txt) sea únicamente de lectura, independientemente de lo que digan los permisos de los usuarios... Esto es tan sencillo como escribir:

chattr +i /usr/src/fichero.txt

En cambio si deseásemos eliminar un atributo, habría que escribir:

chattr -i /usr/src/fichero.txt

Como podéis ver, aunque este concepto no es demasiado conocido, es innegablemente útil y puede servirnos para satisfacer un buen número de necesidades.

Espero que os haya resultado útil.

Saludos.

No hay comentarios :

Publicar un comentario