Die Befehle 'ln' und 'rm' haben seit Anfang der 1970er Jahre in jedem UNIX-Dateisystem genau so funktioniert. Mac OSX, BSD und Linux erben alle dieses ursprüngliche Design.
Eine UNIX-Datei selbst hat keinen Namen, nur eine Inode- Nummer oder eine Inum. Sie können jedoch nur über einen Eintrag in einer speziellen "Verzeichnis" -Datei darauf zugreifen, die der fraglichen inum einen Namen zuordnet. Sie können die Inum nicht direkt angeben.
Ein Verzeichnis ist selbst eine Datei, so dass Sie auch zugreifen , müssen sie durch (anderes) Verzeichnis und so weiter, durch eine Reihe von Verzeichnisnamen durch Schrägstriche begrenzt (/) als „Pfadname“ bekannt. Ein Pfad beginnt im "aktuellen Arbeitsverzeichnis" des Prozesses, es sei denn, der Name beginnt mit einem "/". In diesem Fall beginnt er mit dem Stammverzeichnis des Dateisystems. Wenn der Pfadname beispielsweise keine "/" -Zeichen enthält, wird ein Eintrag im aktuellen Verzeichnis erwartet.
Eine Nicht-Verzeichnis-Datei kann eine beliebige Anzahl von Pfadnamen haben, die als "harte Verknüpfungen" bezeichnet werden. Sie bleibt bestehen, bis alle Pfadnamen entfernt wurden und der letzte Prozess die Datei geschlossen hat. Dann wird die Datei tatsächlich gelöscht und ihr Speicherplatz als zur Wiederverwendung verfügbar markiert. Das heißt, Sie können eine einfach verknüpfte Datei erstellen () oder öffnen () und dann die Verknüpfung aufheben (), sodass sie nicht mehr im Namensraum des Dateisystems angezeigt wird. Die Datei bleibt jedoch bestehen, bis Sie sie schließen. Dies ist nützlich für temporäre Arbeitsdateien, die von keinem anderen Programm gelesen werden.
Obwohl Verzeichnisse über Inode-Nummern verfügen, lassen die meisten Dateisysteme keine festen Verknüpfungen zu. Sie können nur in einem anderen Verzeichnis angezeigt werden. (Eine ungewöhnliche Ausnahme ist das Mac OSX HFS + -Dateisystem. Dadurch können Time Machine-Sicherungen ausgeführt werden.) Sie können weiterhin "Softlinks" zu Verzeichnissen (oder anderen Dateien) erstellen. Ein Softlink ähnelt einem Verzeichniseintrag, enthält jedoch keinen inum, sondern einen anderen Pfadnamen.
Jede UNIX-Datei verfügt über Eigentümer-, Gruppen- und Zugriffsberechtigungen. Es ist notwendig, aber nicht ausreichend, dass Sie die Datei öffnen können. Sie müssen außerdem für jedes Verzeichnis in dem Pfadnamen, auf den Sie verweisen, mindestens über Ausführungsberechtigungen verfügen. Aus diesem Grund gibt es keine Standardmethode zum Öffnen einer UNIX-Datei anhand ihrer Inode-Nummer. das würde einen wichtigen, weit verbreiteten Sicherheitsmechanismus umgehen.
Dies erklärt jedoch nicht, warum es für einen (privilegierten) Root- Benutzer keine Standardmethode zum Öffnen einer Datei nach Inode-Nummer gibt, da die Berechtigungsprüfung ohnehin umgangen wird. Dies wäre für bestimmte Systemverwaltungsfunktionen wie z. B. Sicherungen sehr nützlich. Meines Wissens existieren solche Mechanismen, aber sie sind alle dateisystemspezifisch. Es gibt keine allgemeine Möglichkeit, dies für ein UNIX-Dateisystem zu tun.