1.5. El sistema de ficheros
La memoria de un ordenador almacena temporalmente tanto los programas como sus propios datos durante su ejecución en el procesador. Para evitar la pérdida de información cuando cesa el suministro del fluido eléctrico en el momento del apagado de nuestro ordenador, mantenemos siempre una copia de toda la información en dispositivos diseñados para tal efecto, como discos duros, CD, DVD o lápices de memoria. Esta clase de memoria secundaria comparte un método de organización común denominado sistema de ficheros (filesystem). El tipo de estructuración de cada volumen puede establecerse en el momento de darle formato. Por regla general cada sistema operativo posee una predisposición hacia un determinado formato, tolerando no obstante la compatibilidad con otros sistemas de almacenamiento. En la tabla 2, encontraremos algunos ejemplos de tipos de filesystem por SO.
Tabla 2. Tipos de formatos de sistemas de ficheros.
SO | Formato |
---|---|
Linux | EXT2/3/4, XFS, JFS, Btrfs |
Windows | FAT, NTFS, exFAT |
macOS | HFS, APFS, HFS+ |
El filesystem indexa toda la información en un volumen de almacenamiento, incluyendo el tamaño del archivo, los atributos, la localización y la jerarquía en el directorio. El filesystem también especifica la ruta al archivo mediante la estructura de directorios.

Fuente: linuxfoundation.org
El sistema de ficheros dota al usuario de mecanismos lógicos para localizar los ficheros a través de su nombre y de una ruta de acceso (en inglés, path). En la figura 1 podemos ver qué estructura comparten los sistemas Linux del sistema de ficheros.
Los usuarios tienen su propia partición (espacio dedicado) dentro de «/home». Los discos duros externos y lápices de memoria son automáticamente localizados (montados) dentro del directorio «/media» en Linux o en el directorio «/Volumes» en Mac OS-X. A diferencia de Microsoft Windows, los dispositivos no reciben una única letra como identificador, sino un nombre lógico más comprensible.
Los ficheros son agrupados en carpetas o directorios, conformando una jerarquía que proporciona una organización coherente para el usuario. Para construir una ruta que pase por dos directorios A y B debe introducirse el carácter separador /, formando la ruta A/B. En un instante concreto, el directorio en el que el usuario se encuentra recibe la denominación simbólica de «.», mientras que «..» representa al directorio inmediatamente anterior en el árbol de ficheros. Para acceder a un archivo especificaremos la ruta completa de este (path absoluto), es decir, toda la serie de directorios desde la raíz (root o /) hasta ese punto del sistema de ficheros. Para acceder a cualquier fichero o directorio podemos descender desde este punto a lo largo del sistema de ficheros. Opcionalmente, el usuario puede introducir sencillamente la parte de la ruta necesaria para completar el resto del camino a partir de la ubicación actual (path relativo). Si quisiéramos acceder al fichero /home/uoc/master/notas.txt (path absoluto) y estuviésemos en /home/uoc, simplemente necesitamos indicar ./master/notas.txt (path relativo). Como hemos mencionado anteriormente, el «.» indica el directorio actual que va seguido de la ruta hasta notas.txt.
En UNIX, se accede a los ficheros de una unidad como a cualquier otro dispositivo lógico, requiriendo ciertos permisos de seguridad para poder efectuar cualquier operación sobre estos.
Un programa puede realizar sobre un fichero las siguientes acciones:
- Abrir (en inglés, open). Para acceder a un fichero, el proceso debe abrirlo previamente y obtener un código identificador para referirse a este.
- Cerrar (en inglés, close). Una vez finalizado el acceso, el fichero debe cerrarse para que otro proceso pueda reutilizarlo posteriormente.
- Leer (en inglés, read). El proceso utiliza el identificador de un fichero para acceder secuencialmente a su contenido.
- Escribir (en inglés, write). Un proceso puede escribir nueva información en un fichero, sobrescribiendo el contenido existente anteriormente.
- Añadir (en inglés, append). Un proceso puede escribir nueva información a continuación del contenido registrado con anterioridad.
En UNIX todo se reduce a ficheros. Podemos encontrar tres tipos de ficheros:
- Archivos regulares
- Directorios
- Especiales:
- Block files
- Character device files
- Pipe files
- Socket files
- Symbolic link files
De los tipos especiales nos centraremos en los symbolic link files. Además de los ficheros regulares y de los directorios que todos conocemos, se pueden crear enlaces a los ficheros desde otros puntos del sistema de ficheros (en inglés, links). De este modo, evitamos introducir la ruta completa de acceso en cada ocasión. Estos enlaces en UNIX pueden contener la ruta de acceso del fichero original (en inglés, soft links o symbolic links) o proporcionar un acceso físico compartido a este con un nombre diferente (en inglés, hard links). Los soft links equivaldrían a un acceso directo en Windows. Con este mecanismo, el usuario puede apuntar a un mismo fichero desde varios lugares del sistema, sin la existencia de múltiples copias de este.
UNIX posee un mecanismo característico de seguridad para proteger la integridad del sistema de ficheros. Únicamente los usuarios autorizados pueden realizar operaciones sobre un fichero o directorio. Según su procedencia, cada usuario del sistema pertenece a uno de estos dominios: el usuario (user), el grupo de trabajo (group) o el entorno exterior (others). Las operaciones permitidas sobre archivos son la lectura (read), la escritura/modificación/eliminación (write) y la ejecución (execute). En el caso de los directorios, existen convenciones similares para restringir el acceso a su interior, denotado en este caso con el permiso de ejecución.
Por regla general, el autor de un fichero posee inicialmente todos los derechos, garantizando la lectura y la ejecución de este a los miembros de su grupo de trabajo. Según el grado de privacidad permitido por los tenedores de los derechos, un usuario del entorno exterior puede estar habilitado para ver esos ficheros o no. En cualquier contexto, el administrador de la máquina (en inglés, root) puede revocar los permisos de seguridad de un fichero. Para poder modificar los permisos de ficheros o directorios más adelante veremos la utilización del comando chmod.