Notes d’apprentissage§

Pour comprendre les liens, il faut d’abord comprendre l’inode : la structure qui contient les métadonnées d’un fichier (permissions, propriétaire, taille, pointeurs vers les blocs de données). Le nom du fichier n’est qu’une étiquette dans un répertoire qui pointe vers un inode.

Modèle mental : nom → inode → données.

répertoire           inode (n°1234)          blocs de données
"passwd"  ─────────► [ métadonnées +  ─────► [ contenu réel ]
"hard-passwd" ─────►   nb de liens ]
                       (2 noms → même inode)

Lien dur (hard link) vs lien symbolique (symlink) — la distinction fondamentale :

Lien durLien symbolique
Pointe versle même inodeun chemin (texte)
lnln cible nomln -s cible nom
Traverse les systèmes de fichiersnonoui
Peut viser un dossiernonoui
Survit si l’original est suppriméoui (les données restent tant qu’un lien existe)non (devient cassé)

Un lien dur est un second nom pour les mêmes données : supprimer l’original ne détruit rien tant qu’il reste un lien (le compteur de liens de l’inode). Un symlink n’est qu’un panneau indicateur : si la cible disparaît, il pointe dans le vide.

Les attributs étendus avec chattr vont au-delà des permissions : ils modifient le comportement du système de fichiers lui-même.

chattr +i fichier      # immuable : même root ne peut PAS modifier/supprimer/renommer
chattr -i fichier      # retirer
lsattr fichier         # afficher les attributs

L’attribut i (immuable) protège un fichier critique (/etc/resolv.conf régénéré sans cesse) : il faut explicitement retirer +i avant toute modification, même en root. a (append-only) est utile pour des logs inviolables.

Pièges :

Énoncé§

Solve this question on: terminal

  1. Create a hard link /opt/course/29/hard-passwd pointing to /etc/passwd.
  2. Create a symbolic link /opt/course/29/soft-passwd pointing to /etc/passwd.
  3. Make /etc/resolv.conf immutable so even root cannot edit it without removing the attribute.
  4. Write the inode number of /etc/hostname into /opt/course/29/inode.

Solution§

sudo ln /etc/passwd /opt/course/29/hard-passwd
ls -li /etc/passwd /opt/course/29/hard-passwd
# both entries share the same inode and link count goes up

Hard link properties:

ln -s /etc/passwd /opt/course/29/soft-passwd
ls -l /opt/course/29/soft-passwd
# lrwxrwxrwx ... soft-passwd -> /etc/passwd

Symbolic link properties:

Useful flags:

Step 3 — File attributes with chattr§

sudo chattr +i /etc/resolv.conf       # immutable
lsattr /etc/resolv.conf
# ----i---------e----- /etc/resolv.conf
sudo chattr -i /etc/resolv.conf       # remove

Common attributes:

AttrMeaning
iimmutable — no edit, rename, delete, link
aappend-only — only appends, no rewrite/delete
Ano atime updates
ccompressed (filesystem dependent)
dexcluded from dump
eextent format (informational, ext4)
jdata journaling
ssecure deletion (zeroed on delete)
Ssynchronous writes
uundeletable — content kept after rm

Step 4 — Inode number§

stat -c %i /etc/hostname > /opt/course/29/inode
# or:
ls -i /etc/hostname | awk '{print $1}' > /opt/course/29/inode

Extended attributes (xattr)§

Separate from chattr; used by SELinux, ACLs, custom metadata:

getfattr -d -m '.*' file              # show all
setfattr -n user.note -v "hello" file
setfattr -x user.note file