Les commandes 'ln' et 'rm' fonctionnent exactement comme ceci dans tous les systèmes de fichiers UNIX depuis le début des années 1970. Mac OSX, BSD et Linux héritent tous de cette conception originale.
En soi, un fichier UNIX n'a pas de nom, seulement un numéro d' inode ou un inum. Mais vous ne pouvez y accéder que par une entrée dans un fichier "répertoire" spécial qui associe un nom à l'inum en question; vous ne pouvez pas spécifier directement l'inum.
Un répertoire est lui - même un fichier, vous devez donc également accéder à ce travers (un autre) annuaire et ainsi de suite, à travers une série de noms de répertoires délimités par des barres obliques vers l' avant (/) connu sous le nom d' un « nom de chemin ». Un chemin commence dans le "répertoire de travail actuel" du processus, sauf si le nom commence par un "/", auquel cas il commence par le répertoire racine du système de fichiers. Par exemple, si le nom du chemin ne contient aucun caractère "/", il devrait être une entrée dans le répertoire courant.
Un fichier non répertoire peut avoir n'importe quel nombre de noms de chemin d'accès, appelés «liens matériels», et il continuera d'exister jusqu'à ce que tous ses noms de chemin d'accès aient été supprimés et que le dernier processus ait fermé le fichier. Ensuite, le fichier est réellement supprimé et son espace marqué comme disponible pour une réutilisation. Autrement dit, vous pouvez créer () ou ouvrir () un fichier lié individuellement, puis le dissocier () pour qu'il n'apparaisse plus dans l'espace de nom du système de fichiers, mais le fichier continuera d'exister jusqu'à ce que vous le fermiez. Ceci est utile pour les fichiers de travail temporaires qui ne seront lus par aucun autre programme.
Bien que les répertoires aient des numéros d'inode, la plupart des systèmes de fichiers interdisent les liens durs vers eux; ils ne peuvent apparaître que dans un autre répertoire. (Une exception inhabituelle est le système de fichiers Mac OSX HFS +; cela permet aux sauvegardes Time Machine de fonctionner.) Vous pouvez toujours créer des "liens logiciels" vers des répertoires (ou tout autre fichier). Un lien logiciel ressemble à une entrée de répertoire, sauf qu'il contient un autre nom de chemin plutôt qu'un inum.
Chaque fichier UNIX possède un propriétaire, un groupe et des autorisations d'accès. Il est nécessaire mais pas suffisant qu'ils vous permettent d'ouvrir le fichier; vous devez également avoir au moins l'autorisation d'exécution pour chaque répertoire du nom de chemin que vous utilisez pour vous y référer. C'est pourquoi il n'existe aucun moyen standard d'ouvrir un fichier UNIX par son numéro d'inode; cela contournerait un mécanisme de sécurité important et largement utilisé.
Mais cela n'explique pas pourquoi il ne peut pas y avoir de moyen standard pour un utilisateur root (privilégié) d'ouvrir un fichier par numéro d'inode, car la vérification des autorisations est de toute façon contournée. Cela serait très utile pour certaines fonctions de gestion du système telles que les sauvegardes. À ma connaissance, de tels mécanismes existent, mais ils sont tous spécifiques au système de fichiers; il n'y a aucun moyen général de le faire pour n'importe quel système de fichiers UNIX.