Informació del sistema LinuxLinux

L’estructura de directoris de Linux: què hi ha a cada carpeta



A Linux tot penja d’un únic directori arrel, /: no hi ha unitats C: ni D: com a Windows, i els discos, els USB o les carpetes de xarxa es «munten» en algun punt d’aquest arbre. L’organització dels directoris segueix un estàndard, el FHS (Filesystem Hierarchy Standard), de manera que tant si fas servir Debian com Ubuntu, Fedora o un Raspberry Pi, les coses són més o menys al mateix lloc. En aquest article t’explico què hi ha a cada directori principal i quins subdirectoris convé conèixer.

Pots veure el resum oficial al teu sistema amb man hier i, a les distribucions amb systemd, amb man file-hierarchy.

Directoris principals

$ ls /
bin   dev  home  lost+found  mnt  proc  run   srv  tmp  var
boot  etc  lib   media       opt  root  sbin  sys  usr
DirectoriQuè hi ha
/binComandes bàsiques per a tots els usuaris (ls, cp, mv…). Avui és un enllaç a /usr/bin (vegeu més avall)
/bootEl nucli (vmlinuz-…), l’initramfs i la configuració del gestor d’arrencada (GRUB)
/devFitxers de dispositiu: discos (/dev/sda, /dev/nvme0n1), terminals, /dev/null… Els crea el nucli automàticament
/etcFitxers de configuració del sistema i dels serveis (/etc/passwd, /etc/fstab, /etc/ssh/…). Només text, sense programes
/homeEls directoris personals dels usuaris (/home/joan)
/lib, /lib64Biblioteques compartides i mòduls del nucli. També són enllaços a /usr/lib i /usr/lib64 (/lib64 només existeix en alguns sistemes de 64 bits)
/mediaPunts de muntatge automàtics de dispositius extraïbles: un USB apareix a /media/usuari/NOM
/mntPunt de muntatge per a muntatges manuals i temporals de l’administrador
/optProgramari de tercers que s’instal·la sencer en un directori propi (/opt/google/chrome…)
/procSistema de fitxers virtual: informació dels processos i del nucli en temps real (/proc/cpuinfo, /proc/meminfo)
/rootDirectori personal de l’usuari root (no és a /home)
/runDades d’execució des de l’arrencada (fitxers PID, sockets). És a la memòria i es buida a cada reinici
/sbinComandes d’administració del sistema (fdisk, ip, shutdown…). També és un enllaç, a /usr/sbin
/srvDades dels serveis que ofereix la màquina (webs, FTP…), segons el criteri de cada administrador
/sysSistema de fitxers virtual amb informació del maquinari i dels controladors
/tmpFitxers temporals. Es buida en reiniciar (a Debian 13 és a la memòria RAM, amb tmpfs)
/usrLa major part del sistema: programes, biblioteques, documentació… Es pot compartir i, en principi, només es modifica en instal·lar paquets
/varDades que canvien mentre el sistema funciona: registres, memòria cau, cues de correu, bases de dades…

Alguns aclariments

  • /sbin no és només per a root: qualsevol usuari pot executar-ne els programes (per exemple, /sbin/ip addr), però la majoria fan coses que necessiten privilegis i fallaran sense sudo. Simplement, als usuaris normals sovint no els surt al PATH.
  • /usr ja no té res a veure amb els usuaris: el nom ve de user, perquè als primers Unix hi havia els directoris dels usuaris, però avui conté el sistema. Els fitxers personals són a /home.
  • /proc i /sys no ocupen espai al disc: els fitxers es generen al moment quan els llegeixes.

La «fusió de /usr»: per què /bin és un enllaç

Antigament, /bin, /sbin i /lib contenien el mínim per arrencar, i /usr (que podia estar en un altre disc) tenia la resta. Avui aquesta separació no té sentit i totes les distribucions principals (Debian des de la 12, Ubuntu, Fedora, RHEL des de la 7…) han fusionat aquests directoris dins de /usr:

$ ls -ld /bin /sbin /lib
lrwxrwxrwx 1 root root 7 /bin -> usr/bin
lrwxrwxrwx 1 root root 7 /lib -> usr/lib
lrwxrwxrwx 1 root root 8 /sbin -> usr/sbin

Per això /bin/bash i /usr/bin/bash són el mateix fitxer, i els scripts antics continuen funcionant.

Subdirectoris que convé conèixer

DirectoriQuè hi ha
/etc/systemd/system/Serveis i temporitzadors de systemd creats o modificats per l’administrador
/etc/cron.d/, /etc/crontabTasques programades del sistema amb cron
/etc/default/Opcions per defecte de serveis i programes (per exemple, /etc/default/grub)
/etc/apt/Repositoris i configuració d’APT (Debian, Ubuntu)
/usr/local/Programes instal·lats a mà per l’administrador, fora dels paquets: /usr/local/bin és el lloc ideal per als teus scripts per a tots els usuaris
/usr/share/Dades independents de l’arquitectura: documentació (/usr/share/doc), pàgines del manual, icones…
/var/log/Registres del sistema i dels serveis. A les distribucions amb systemd, gran part dels registres es consulten amb journalctl
/var/lib/Dades d’estat dels programes: bases de dades de MySQL/MariaDB, paquets instal·lats, contenidors de Docker…
/var/cache/Memòria cau que es pot esborrar sense perdre res important (per exemple, /var/cache/apt/archives)
/var/tmp/Fitxers temporals que sí que es conserven en reiniciar
/var/www/Directori habitual de les webs d’Apache i Nginx a Debian i Ubuntu
~/.config/, ~/.local/Configuració i dades dels programes de cada usuari, dins del seu directori personal

Coses que han canviat

L’original d’aquest article esmentava alguns directoris i eines que avui ja no són d’actualitat:

  • /var/run i /var/lock ara són enllaços a /run i /run/lock.
  • /etc/network/ només el fa servir el sistema clàssic ifupdown de Debian. Ubuntu fa servir Netplan (/etc/netplan/) i moltes altres distribucions, NetworkManager (/etc/NetworkManager/). Ho tens explicat a la configuració de xarxa a Linux.
  • /media/floppy, /mnt/cdrom i companyia: les disqueteres han desaparegut i els CD i USB es munten automàticament a /media/usuari/.
  • ifconfig, que l’original posava com a exemple de /sbin, és obsolet: el substitut és ip (ip addr, ip route).

Comandes relacionades