1. Introducció als entorns de treball UNIX

1.5. El sistema de fitxers

La memòria d’un ordinador emmagatzema temporalment tant els programes com les seves pròpies dades durant la seva execució en el processador. Per evitar la pèrdua d’informació quan cessa el subministrament del fluid elèctric en el moment de l’apagat del nostre ordinador, mantenim sempre una còpia de tota la informació en dispositius dissenyats per a tal efecte, com discos durs, CD, DVD o llapis de memòria. Aquesta classe de memòria secundària comparteix un mètode d’organització comuna denominat sistema de fitxers (filesystem). El tipus d’estructuració de cada volum es pot establir en el moment de donar-li format. Per regla general cada sistema operatiu té una predisposició cap a un determinat format, tolerant no obstant la compatibilitat amb altres sistemes d’emmagatzematge. A la taula 2, hi trobarem alguns exemples de tipus de filesystem per SO.

Taula 2. Tipus de formats de sistemes de fitxers.

SO Format
Linux EXT2/3/4, XFS, JFS, Btrfs
Windows FAT, NTFS, exFAT
macOS HFS, APFS, HFS+

Font: elaboració pròpia.

El filesystem indexa tota la informació en un volum d’emmagatzematge, incloent-hi la mida de l’arxiu, els atributs, la localització i la jerarquia en el directori. El filesystem també especifica la ruta a l’arxiu mitjançant l’estructura de directoris.

Figura 1. Estructura del filesystem de Linux.
Font: linuxfoundation.org

El sistema de fitxers proporciona a l’usuari mecanismes lògics per localitzar els fitxers a través del seu nom i d’una ruta d’accés (en anglès, path). A la figura 1 podem veure-hi quina estructura comparteixen els sistemes Linux del sistema de fitxers.

Els usuaris tenen la seva pròpia partició (espai dedicat) dins de «/home». Els discos durs externs i llapis de memòria es localitzen automàticament (es munten) dins del directori «/media» a Linux o al directori «/Volumes» a Mac OS-X. A diferència de Microsoft Windows, els dispositius no reben una única lletra com a identificador, sinó un nom lògic més comprensible.

Els fitxers s’agrupen en carpetes o directoris, conformant una jerarquia que proporciona una organització coherent per a l’usuari. Per construir una ruta que passi per dos directoris A i B s’ha d’introduir el caràcter separador /, formant la ruta A/B. En un instant concret, el directori en el qual l’usuari es troba rep la denominació simbòlica de «.», mentre que «..» representa el directori immediatament anterior en l’arbre de fitxers. Per accedir a un arxiu especificarem la seva ruta completa (path absolut), és a dir,  tota la sèrie de directoris des de l’arrel (root o /) fins a aquest punt concret del sistema de fitxers. Per accedir a qualsevol fitxer o directori podem descendir des d’aquest punt al llarg del sistema de fitxers. Opcionalment, l’usuari pot senzillament introduir la part de la ruta necessària per completar la resta del camí a partir de la ubicació actual (path relatiu). Si volguéssim accedir al fitxer /home/uoc/master/notes.txt (path absolut) i estiguéssim a /home/uoc, simplement necessitem indicar ./master/notes.txt (path relatiu). Com hem esmentat anteriorment, el «.» indica el directori actual que va seguit de la ruta fins a notes.txt.

A UNIX, s’accedeix als fitxers d’una unitat com a qualsevol altre dispositiu lògic, requerint certs permisos de seguretat per poder efectuar qualsevol operació sobre aquests.

Un programa pot realitzar sobre un fitxer les següents accions:

  • Obrir (en anglès, open). Per accedir a un fitxer, el procés l’ha d’obrir prèviament i obtenir un codi identificador per referir-s’hi.
  • Tancar (en anglès, close). Un cop finalitzat l’accés, el fitxer s’ha de tancar perquè un altre procés pugui reutilitzar-lo posteriorment.
  • Llegir (en anglès, read). El procés utilitza l’identificador d’un fitxer per accedir seqüencialment al seu contingut.
  • Escriure (en anglès, write). Un procés pot escriure nova informació en un fitxer i sobreescriure el contingut existent anteriorment.
  • Afegir (en anglès, append). Un procés pot escriure nova informació a continuació del contingut registrat amb anterioritat.

A UNIX tot es redueix a fitxers. Podem trobar tres tipus de fitxers:

  • Arxius regulars
  • Directoris
  • Especials:
    • Block files
    • Character device files
    • Pipe files
    • Socket files
    • Symbolic link files

Dels tipus especials ens centrarem en els symbolic link files. A més dels fitxers regulars i dels directoris que tots coneixem, es poden crear enllaços als fitxers des d’altres punts del sistema de fitxers (en anglès, links). D’aquesta manera, evitem introduir la ruta completa d’accés en cada ocasió. Aquests enllaços a UNIX poden contenir la ruta d’accés del fitxer original (en anglès, soft links o symbolic links) o proporcionar un accés físic compartit a aquest amb un nom diferent (en anglès, hard links). Els soft links equivaldrien a un accés directe a Windows. Amb aquest mecanisme, l’usuari pot apuntar a un mateix fitxer des de diversos llocs del sistema i sense l’existència de múltiples còpies.

UNIX té un característic mecanisme de seguretat per protegir la integritat del sistema de fitxers. Únicament els usuaris autoritzats poden efectuar operacions sobre un fitxer o directori. Segons la seva procedència, cada usuari del sistema pertany a un d’aquests dominis: l’usuari (user), el grup de treball (group) o l’entorn exterior (others). Les operacions permeses sobre arxius són la lectura (read), l’escriptura/modificació/eliminació (write) i l’execució (execute). En el cas dels directoris, hi ha convencions similars per restringir l’accés al seu interior, denotat en aquest cas amb el permís d’execució.

Per regla general, l’autor d’un fitxer en posseeix inicialment tots els drets, i en garanteix la lectura i l’execució als membres del seu grup de treball. Segons el grau de privacitat permès pels tenidors dels drets, un usuari de l’entorn exterior pot estar habilitat per veure aquests fitxers o no. En qualsevol context, l’administrador de la màquina (en anglès, root) pot revocar els permisos de seguretat d’un fitxer. Per poder modificar els permisos de fitxers o directoris més endavant veurem la utilització de l’ordre chmod.