Tipos de archivo

De doc.ubuntu-es
Revisión a fecha de 13:28 21 abr 2007; Kelp (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Contenido

Enlaces

El Sistema de Archivos

¿Que es un archivo?

Para conocer las propiedades de un Sistema de Archivos, comencemos por definir que es un archivo:

Con frecuencia, se define a un archivo informático, como una entidad lógica formada por un conjunto de bytes, ubicados sobre un sistema de almacenamiento (temporal o permanente), que responde a las características de unicidad,ubicación y reglas de manipulación.

  • La propiedad de unicidad de un archivo, radica en que éste es en si mismo una entidad, con una asignación de espacio finito, susceptible de ser modificado internamente en tamaño y contenido
  • Su localización exacta, determina la existencia del mismo, incluso vacío de contenido, pero con límites de propiedad inherente al espacio físico asignado por las variables ortogonales en cuanto a su asentamiento en el soporte que lo contiene.Un fichero no puede existir sin esta cualidad.
  • Y unas reglas de manipulación. Es decir, tendrá un propietario, asignación de lecto_escritura y ejecución, compartibles/no compartibles, variables/ no variables, aspectos que podrán modificarse, de acuerdo con las reglas que puedan establecerse en la vida útil del archivo.

La función "vital" de un archivo es poder ser leído, y como tal debe de ser localizado lo mas fácilmente posible dentro de la unidad de soporte que lo contiene.

Esta unidad, que puede ser un disco duro, una cinta, un CD o cualquier unidad susceptible de almacenar información, necesita un Sistema de Ficheros,para organizar la información y tener acceso a ella de forma eficiente y rápida.

No entraremos aquí en los detalles de almacenamiento volátil, o sea en memoria de semiconductores como la memoria RAM, que mantiene la información mientras dure el flujo eléctrico. Dedicaremos un apartado para esta información. Nos centraremos en el mas común, es decir el disco duro

La denominación archivo es equivalente a fichero.

Tipos de Archivos

La letra que precede a la descripción es el indicador, o sea identifica el tipo de archivo cuando hacemos un listado de ellos con el comando ls


- --->Archivos sencillos u ordinarios
d -->Directorios
l --->Vínculos simbólicos (flexibles, blandos)
c -->Dispositivo de caracteres
b -->Dispositivos de bloques
p -->Tuberías (pipe) con nombre (FIFO)
s -->Socket (conector para comunicación TCP/IP)

A modo de ejemplo:

$ ls -ila udev
total 20
7897186 drwxr-xr-x   3 root root 4096 2006-08-06 01:20 .
7897089 drwxr-xr-x 128 root root 8192 2007-04-21 03:04 ..
7899187 drwxr-xr-x   2 root root 4096 2006-11-28 22:30 rules.d
7899188 -rw-r--r--   1 root root  226 2006-05-22 16:25 udev.conf

Los archivos sencillos

Se emplean para almacenar información y datos en dispositivos de almacenamiento secundario, que por regla general es el disco duro. (obviamente, también pueden ser almacenado en cintas, memorias..etc).
Un archivo sencillo puede contener desde un programa (Java, C++, C, Perl), como imágenes, textos, sonido, gráficos, etc. En Unix/Linux no existe diferencia a la hora de clasificar estos archivos por su contenido, para el núcleo, todos son iguales, sólo es un flujo de :bytes. Otra cosa es el tratamiento que hacen de los mismos la aplicaciones. Estas sí se encargan de verificar la naturaleza de los archivos a :procesar y obrar en consecuencia al contenido de los mismos.Los nombres de los archivos puede asignarse de manera arbitraria. El nombre asociado a un archivo sólo representa una función lógica, no de dependencia física. Sólo existen unas pequeñas restricciones:
  • nombre no mayor de 255 caracteres
  • no usar meta-caracteres del SHELL
  • evitar comenzar con un número
  • tener en cuenta que un nombre comenzado con un punto, significa un archivo oculto.
Los archivos en Unix/Linux no necesitan extensión, al ser ser tratados en principio sin formato predeterminado, aunque puede hacerse como recurso referencial, con una o mas extensiones que indiquen la naturaleza del contenido. Por ej: los archivos pertenecientes al lenguaje C, suelen llevar la extensión .c. Los imágenes; .gif ; textos, .txt..etc.

Los directorios

son archivos que contienen a su vez otros archivos que a veces también pueden ser otros directorios. En Unix/Linux, los directorios tienen una forma determinada
número de i-nodo + nombre del directorio
El número i-nodo tiene 2 Bytes, siendo siempre un número entero.ReInstalar_aplicacionespresenta el valor de un índice que opera dentro de una lista en el disco.Su propósito es facilitar la búsqueda de los archivos, ya que en la lista que forma, se almacenan características de los archivos representados, como tamaño, fecha de creación, bloque asignado, permisos, enlaces, pero no el nombre. Físicamente, un archivo no se almacena de forma contínua en el dispositivo de almacenamiento, es decir, puede estar repartido en varios bloques, (fragmentación). A diferencia de Windows, Linux tiende a la continuidad del espacio físico en el reparto de los bloques de asignación. Debido a esto, es necesario la existencia de una estructura adicional que "reúna" los distintos fragmentos del archivo para ser leído.Ésta es la función principal de la lista de i-nodos. En todos los directorios aparecen dos ficheros ocultos representados por " . " y " .. " El primero " . " se refiere al directorio actual y el segundo " .. " al directorio padre, es decir al directorio al que cuelga en orden de jerarquía del Sistema de Ficheros. Obviamente el directorio / (root) principal, carece de este fichero oculto.

Enlaces

Es un fichero cuya función es permitir enlaces a elementos del sistema de archivos desde cualquier punto de la jerarquía del mismo.Un enlace no es mas que un nombre que apunta a un determinado recurso del sistema de ficheros, físico o lógico.Dependiendo de su función los clasificamos en,
  • Fuertes o duros.Son aquellos enlaces que no se diferencian en nada del archivo original. Debemos de entender que un fichero, es un conjunto de Bytes que ocupa una zona en algún dispositivo, y su nombre no es mas que un enlace fuerte a él. Es decir, un enlace fuerte es otro nombre para un mismo fichero, ya que apunta a un inodo específico. Todos los enlaces fuertes que apuntan a un mismo archivo, mantienen su estructura de permisos, propiedad, etc. Si creamos varios enlaces fuertes sobre un fichero, tendríamos varias copias lógicas del mismo, pero sólo existiría una copia física del mismo, ya que todos apuntan a zona "física" que es el espacio que ocupa el fichero original.Esto da como resultado que un fichero no desaparece hasta que no se borran todos los enlaces que apuntan a él. Los enlaces fuertes a un fichero se almacenan en la estructura del inodo que lo representa.No se pueden crear enlaces fuertes a directorios ni a ficheros que estén en una partición diferente. A diferencia de los enlaces simbólicos, los enlaces fuertes no se rompen cuando se mueve uno de los archivos a otra ubicación.Con los enlaces fuertes, se mantiene un contador de enlaces en el inodo de cada archivo, de forma que, cuando el contador cae a " 0 ", se borra el inodo y los bloques de datos son liberados para su nuevo uso.De esta forma, una vez que un archivo posee un enlace fuerte, cualquier "copia" que se borre, no afecta a las demás que quedarán intactas. Por regla general, los archivos tienen un único enlace. Los directorios tendrán tantos enlaces como subdirectorios tenga.
  • Débiles o simbólicos.Son enlaces que apuntan al nombre del fichero, no a su contenido. En el caso de borrado de un fichero original ( y lógicamente todos los enlaces fuertes asociados a él), los enlaces simbólicos quedan inconsistentes o perdidos. Estos enlaces son articulados en Linux como ficheros independientes, conteniendo una referencia, el inodo, la cual apunta a la ubicación real del archivo. Estos enlaces usan un path_name (ruta) que puede ser absoluta, cuando comienza en " / " o relativa de acuerdo con la ubicación del enlace. Un enlace simbólico, no puede moverse una vez creado porque se romperá, a diferencia de los enlaces fuertes.Otra carcterística es carecen de permisos o estado por su cuenta. En su defecto usan los permisos del fichero al que apuntan. En si mismo, se considera que el enlace propiamente dicho tiene todos los permisos activados.Los cantidad bytes ocupados por el enlace es igual a la longitud de la ruta que contiene, mas el carácter nulo del final.

Dispositivos de caracteres y bloques

Son archivos especiales cuya principal función es la comunicación con un dispositivo de hardware. De acuerdo con la naturaleza del hardware, se denominan de caracteres, (consola, puertos de serie etc) o de bloques, (discos, memorias, ..etc).Estos archivos pueden entenderse como puntos de unión entre el núcleo y los controladores (drivers) de dispositivos como pueden ser /dev/tty0, /dev/null, /dev/hda

Tuberías con nombre

Archivos localizados para la comunicación entre procesos, son una via de intercambio de datos. Se gestionan mediante el método FIFO (First In-First Out), el primer byte introducido por el emisor será el primero en ser extraído por el receptor. Su comunicación es unidireccional.Este tipo de fichero es localizado mediante una ruta, como cualquier fichero normal. Puede ser borrado como cualquier archivo. Por supuesto puede verse con el comando ls.Otra de sus características es que pueden intercomunicar procesos de especies diferentes, es decir, pueden comunicar y sincronizar procesos de la misma máquina, sin necesidad de que lo hereden por medio de la llamada fork.

Socket

son archivos para comunicación entre procesos locales. Se pueden ver como archivos, pero no pueden ser leídos y escritos salvo por los procesos directamente relacionados con la comunicación de la que son objeto.

Atributos de los archivos

La necesidad de establecer atributos a los archivos para su operativa, es particularmente intensa en Unix/Linux. De esto deriva la seguridad del Sistema y la posibilidad del trabajo multiusuario debidamente compartimentado. Es decir, cada usuario está "protegido" en su espacio asignado dentro del Sistema. Por extensión esto también deriva en la seguridad en general, lo que hace que en Unix/Linux,sea menos fácil la propagación de virus y demás código malicioso. Para ver algunos atributos del archivo vnc.conf hacemos:
$ ls -ila vnc.conf
7897276 -rw-r--r-- 1 root root 4622 2006-02-20 13:05 vnc.conf
El primer número corresponde al i-nodo. Se muestra en el listado porque hemos usado la opción "i" (ila, la "l" y la "a" corresponden a las otras dos opciones).
El segundo carácter es el bit asignado para el tipo de archivo, en este caso un guión ( - ), que nos dice que se trata de un archivo simple. Si en lugar de un guión, apareciera una " d ", sabríamos que se trata de un directorio. Y así con todas las definiciones de archivos que hemos visto en el apartado tipos de archivos. Esta asignación evita tener que asignarle una extensión para su clasificación, por lo menos para la máquina. Otra cosa es que, el creador del archivo quiera ponerle una extensión para su comodidad, pero no será mas que parte del nombre del archivo y nada tendrá que ver con su clasificación.
La secuencia que sigue, rw-r--r--, es la asignación de permisos para la manipulación del fichero por parte del usuario, el grupo, (al que pertence el usuario) y otros. Esto lo veremos detalladamnte en el apartado Permisos.
El " 1 " que aparece seguidamente, hace referencia a que este archivo tiene un enlace.
Le sigue el nombre del propietario, root en este caso, y el grupo al que pertenece el usuario, en este caso también root
4622 es el tamaño del fichero en bytes, seguido de la fecha de creación y la hora.
Por último, el nombre del archivo, en este caso, vnc.conf.

Otros atributos especiales

el siguiente listado representa otro tipo de atributo de ficheros,aplicables en condiciones especiales, principalmnte a la hora de compartir permisos con usuarios de sistemas "muy poblados" en el que los privilegios de cada usuario o de cada grupo, necesitan especificaciones especiales.
Para dar cabido a éstos, se habilitan bits especiales dentro del rango de permisos del fichero conocidos conocidos como SETUID y SETGID. Corrientemente, el primero se nombra como SUID. El nombre está formado por la abreviatura de Set User ID y Set Group ID.
Su función tiene como objetivo proporcionar a los usuarios del sistema la posibilidad de ejecutar binarios con privilegios superiores a los normales, por regla general con función temporal de acuerdo a tareas concretas.
Para hacernos una idea de la potencia de esta activación de los bits de permisos, los enumeraremos en la siguiente tabla,
  A         Cuando se accede al archivo, la fecha del mismo no se modifica

  a         Sólo se puede agregar contenido al archivo

  D         Se aplica al Directorio, los cambios efectuados en él, se aplican sincrónicamente.

  d         La herramienta  dump para backup omitirá el archivo.

  E         Muestra que un archivo comprimido, tiene un error de compresión

  I         Se usa en directorios para indicar que estos están indexados con en árbol de hash.

  i         El archivo queda sin modificarse

  j         Los datos se escriben primero al journal del sistema ext3 antes de escribirse en el propio archivo 

  s         Cuando se borre el archivo, se llenará con ceros

  S         Igual que D pero para archivos simples

  T         Sirve para considerar a un directorio como si estuviera en el primer nivel de directorios.

  t         Hace que el archivo no posea un fragmento al final combinado con otro archivo.

  u         Cuando se elimina un archivo se guarda el contenido del mismo

  X         El contenido crudo se un archivo comprimido se puede acceder directamente.

  Z         El archivo está sucio


Permisos

En construcción. Seguirá con Permisos, atributos especiales, Descripción de los directorios asociados a root. Interioridades del sistema de archivos (Bloques lógicos, Volumenes lógicos, fragmentación interna y externa), Sistemas transacionales, Montaje y desmontaje. Configuración fstab, Umask, etc.

Herramientas personales