Hallo,
die Frage nach Hardlinks (ln ohne -s) auf Verzeichnisse ist beantwortet:
es ist erlaubt, aber nur für Root. Das Problem dabei ist: man macht sich die
Struktur des Dateisystems kaputt und man bekommt sie nur mit debug-tools für
das jeweilige Dateisystem weg.
Um das mal etwas zu erläutern:
ich habe eine Platte /mnt und dort ein Verzeichnis /mnt/dir, in dem einige
Dateien und ein Verzeichnis /mnt/dir/x liegen.
/mnt/dir ist eine inode (wie man bei Heiko in Heimatkunde lernen kann),
nehmen wir mal an inode Nr. 5
/mnt/dir/x ist inode Nr. 8
Auf inode 5 hat diese Namen/Links:
/mnt/dir
/mnt/dir/.
/mnt/dir/x/..
in jedem weiteren Unterverzeichnis von /mnt/dir wird es wieder ein .. geben,
das auf inode 5 verweist.
Nehmen wir an, ich will /mnt/dir löschen: ich beseitige erst einmal alle
Dateien und Verzeichnisse unterhalb von /mnt/dir (ok, meistens macht das rm
-rf für mich)... jetzt existieren noch:
/mnt/dir und /mnt/dir/.
jetzt lösche ich /mnt/dir, der Kernel beseitigt automatisch auch /mnt/dir/. .
Jetzt habe ich aber gehört, dass Hardlinks auf Verzeichnisse möglich sind
(nicht in Heimatkunde, sondern in Physik) und legen eine Link an, danach habe
ich:
/mnt/dir
/mnt/dir2
/mnt/dir/. (/mnt/dir2/. ist das selbe, da es im selben Verzeichnis liegt)
jetzt lösche ich /mnt/dir:
ich entferne /mnt/dir, der Kern automatisch /mnt/dir/.
Foul!! Es existiert zwar noch /mnt/dir2 aber kein /mnt/dir2/. mehr.
Falls man Abitur macht wird man in Physik lernen, dass das eine Inkonsistenz
ist, die man vermeiden sollte, weil nicht nur der Rechner dabei durcheinander
kommt.
Übrigens sind mit Verzeichnis-Hard-Links noch viel schlimmere Szenarien
möglich, die nicht mehr mit etwas grübeln und robusterem Kernel-Code
auflösbar sind. z.B. Endlosschleifen [/mnt/dir/schleife] - jetzt stellt Euch
mal einen mount auf /mnt/dir/schleife/dir/schleife/dir vor und versucht
irgendwie dahinterzukommen, wie der Kern das effektiv anhand von
inode-Nummern auflösen soll.... wer das Problem erkennt bekommt ein Bienchen
in Heimatkunde, wer es löst bekommt das Abitur gratis. ;-)
Konrad
--
de-referencing is like a hotel: the more stars, the better