Dentro del sistema Unix todo son archivos: desde la memoria física del
equipo hasta el ratón, pasando por módems, teclado, impresoras o terminales.
Esta filosofía de diseño es uno de los factores que más éxito y
potencia proporciona a Unix ([KP84]), pero también uno de los que
más peligros entraña: un simple error en un permiso puede permitir a un
usuario modificar todo un disco duro o leer los datos tecleados desde una
terminal. Por esto, una correcta utilización de los permisos, atributos y
otros controles sobre los ficheros es vital para la seguridad de un sistema.
En un sistema Unix típico existen tres tipos básicos de archivos:
ficheros planos, directorios, y ficheros especiales (dispositivos)
5.1; generalmente,
al hablar de ficheros nos solemos referir a todos ellos si no se
especifica lo contrario. Los ficheros
planos son secuencias de bytes que a priori no poseen ni estructura
interna ni contenido significante para el sistema: su significado depende de
las aplicaciones que interpretan su contenido. Los directorios son
archivos cuyo contenido son otros ficheros de cualquier tipo (planos, más
directorios, o ficheros especiales), y los ficheros especiales son
ficheros que representan dispositivos del sistema; este último tipo se divide
en dos grupos: los dispositivos orientados a carácter y los orientados a
bloque. La principal diferencia entre ambos es la forma de realizar operaciones
de entrada/salida: mientras que los dispositivos orientados a carácter las
realizan byte a byte (esto es, carácter a carácter), los
orientados a bloque las realizan en bloques de caracteres.
El sistema de ficheros es la parte del núcleo más visible por los
usuarios; se encarga de abstraer propiedades físicas de diferentes
dispositivos para proporcionar una interfaz única de almacenamiento: el
archivo. Cada sistema Unix tiene su sistema de archivos nativo (por ejemplo,
ext2 en Linux, UFS en Solaris o EFS en IRIX), por lo que
para acceder a todos ellos de la misma forma el núcleo de Unix incorpora una
capa superior denominada VFS (Virtual File System) encargada de
proporcionar un acceso uniforme a diferentes tipos de sistema de ficheros.
Un inodo o nodo índice es una estructura de datos que relaciona un
grupo
de bloques de un dispositivo con un determinado nombre del sistema de ficheros.
Internamente, el núcleo de Unix no distingue a sus archivos por su nombre
sino por un número de inodo; de esta forma, el fichero con número de inodo
23421 será el mismo tanto si se denomina /etc/passwd como si se
denomina /usr/fichero. Mediante la orden ln(1) se pueden asignar a
un mismo inodo varios nombres de fichero diferentes en el sistema de archivos.
© 2002 Antonio Villalón Huerta