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
Am Donnerstag, dem 01. Maerz 2001 um 20:28:06, schrieb Konrad Rosenbaum:
die Frage nach Hardlinks (ln ohne -s) auf Verzeichnisse ist beantwortet:
es ist erlaubt, aber nur fuer Root.
Und wie erzeugst Du sie?
lumpi:~# ln /root/ /tmp/ ln: /root/: harte Verknüpfung für Verzeichnisse nicht erlaubt
Mit normalen Mitteln (kein debugfs) sollten auch fuer root keine Hardlinks auf Verzeichnisse moeglich sein, oder?
Torsten
On Thu, Mar 01, 2001 at 08:28:06PM +0100, Konrad Rosenbaum wrote:
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)
Directory-Files kann nur der Kern erstellen und ändern. Wie hast du den Kern dazu überedet, diese Struktur zu generiern? (per Hand auf der Platte rumfummeln zählt nicht)
Reinhard
On Friday 02 March 2001 01:38, Reinhard Foerster wrote:
On Thu, Mar 01, 2001 at 08:28:06PM +0100, Konrad Rosenbaum wrote:
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)
Directory-Files kann nur der Kern erstellen und ändern. Wie hast du den Kern dazu überedet, diese Struktur zu generiern? (per Hand auf der Platte rumfummeln zählt nicht)
man ln ;-)
die Option lautet -d, kann nur von root benutzt werden und sollte eigentlich niemals eingesetzt werden.
Konrad
PS.: da ich mich ausnahmsweise an meine Empfehlungen halte, habe ich das natürlich nicht ausprobiert. Es steht Euch frei jetzt Eure Platten durcheinander zu bringen, aber beschwert Euch dann nicht bei mir wenn fsck abschmiert und unlesbare Platten hinterläßt.
On Fri, Mar 02, 2001 at 05:37:22PM +0100, Konrad Rosenbaum wrote:
man ln ;-)
die Option lautet -d, kann nur von root benutzt werden und sollte eigentlich niemals eingesetzt werden.
Interessant. Siehst du einen Sinn darin, dass der Kern für solche Schweinereien ein Interface bietet? Ich hätte gedacht, dass man solche Links nur per "vi /dev/sda1" hinbekommt (oder irgendwelchen ext2-Tools, die auf der nichmontierten Platte werkeln)
Reinhard
On Sat, Mar 03, 2001 at 12:49:37AM +0100, Reinhard Foerster wrote:
On Fri, Mar 02, 2001 at 05:37:22PM +0100, Konrad Rosenbaum wrote:
man ln ;-)
die Option lautet -d, kann nur von root benutzt werden und sollte eigentlich niemals eingesetzt werden.
Interessant. Siehst du einen Sinn darin, dass der Kern für solche Schweinereien ein Interface bietet?
Eigentlich nicht, aber es ist doch schön, daß Linux einem die Chance bietet sein System total zu beherrschen (auch wenn es dabei kaputt gehen kann). Aber dafür gibt es ja LUG-Vorträge, bei denen man lernt, was man lieber unterlassen sollte :)
Ciao, Tobias
On Saturday 03 March 2001 00:49, Reinhard Foerster wrote:
On Fri, Mar 02, 2001 at 05:37:22PM +0100, Konrad Rosenbaum wrote:
man ln ;-)
die Option lautet -d, kann nur von root benutzt werden und sollte eigentlich niemals eingesetzt werden.
Interessant. Siehst du einen Sinn darin, dass der Kern für solche Schweinereien ein Interface bietet? Ich hätte gedacht, dass man solche Links nur per "vi /dev/sda1" hinbekommt (oder irgendwelchen ext2-Tools, die auf der nichmontierten Platte werkeln)
Wie schon gesagt: ich habe es nicht getestet! GNU ln läuft auch auf anderen Unix'en - ich weiss nicht, ob dieses "Feature" vom Linux-Kern geboten wird.
Probier doch mal.. ;-)
Konrad
lug-dd@mailman.schlittermann.de