bolug bonner linux user group
news about wissen files archive hilfe suchen  

 

archive :: BoLUG

druckfassung

BoLUG

Re: Hard links: wozu? wann?

To: bolug@xxxxxxxxxxx
Subject: Re: Hard links: wozu? wann?
From: Aldo Valente <aldo@xxxxxxxxxxxxxxxx>
Date: 21 Oct 2002 19:19:21 +0200
"Markus A. Greiner" <mailings@xxxxxxxxxxxx> writes:

> > Ich meine die handerstellten:

> In der Manpage steht:
> 
> -d, -F, --directory
>               hard link directories (super-user only)
> 
> Dummerweise funktioniert das bei mir auch als root nicht.

Nein, und das ist auch richtig so.  In der guten alten Zeit als man
Verzeichnisse noch mit »cat .« auslesen konnte, hatte man root
zugetraut, das er sowas nicht macht.  Heutzutage wird es ihm gleich
verboten.

Hermann hat ein schönes Beispiel gebracht, was dem Newsserver
allerdings sehr ähnelt.  Ich bin auch immer auf der Suche nach
Beispielen. 

Hardlinks für Verzeichnisse sind verboten, weil sie die Baumartigkeit
des Dateibaums zerstören.  »Schleifenfreiheit«, oder anders gesagt, zu
jedem Blatt darf es genau nur einen Weg geben.  Wird das Dateisystem
gecheckt, so muß von Blatt zu Blatt gegangen werden können.  Hardlinks
sind nun vom Original nicht zu unterscheiden, genauer gesagt sind alle
Dateien Hardlinks, und so kann man mit einer Schleife nicht mehr von
Blatt zu Blatt gehen.  Was wäre denn dann »..«?

Trotzdem gibt es nun gerade für Verzeichnisse Hardlinks, das liegt
daran das dir/, dir/. und dir/unterdir/.. exakt dieselbe Datei
*sind*, nur jedoch in drei verschiedenen Verzeichnissen als Pfad
existieren.  Der Linkcount eines frisch erstellten Verzeichnisses ist
exakt zwei und erhöht sich mit jedem angelegten Unterverzeichnis um
eins.

Somit ist sogar /.. sinnvoll:

$ ls -ldi / /. /.. /home/..
      2 drwxr-xr-x   16 root     root         1024 Okt  4 17:28 /
      2 drwxr-xr-x   16 root     root         1024 Okt  4 17:28 /.
      2 drwxr-xr-x   16 root     root         1024 Okt  4 17:28 /..
      2 drwxr-xr-x   16 root     root         1024 Okt  4 17:28 /home/..

Zurück zu Michaels suggestiven Frage.  Ja, außer bei Anwendungen, bei
denen man merkt das man Hardlinks nehmen möchte, sind Hardlinks
grundsätzlich abzulehnen.  Man benutzt sie nicht, aber man kann nicht
drauf verzichten, da sie die Bausteine eines Unix Dateisystems sind.
Hardlinks sind halt kein Feature.

* Hardlinks können sich nicht über Partitionsgrenzen erstrecken, wegen
  der nichteindeutigkeit von Inodes.
* Es gibt keine Zuordnung Inhalt->Dateiname, nur der andere Weg ist
  natürlich trivial.
* Hardlinks können wie erwähnt nicht auf Verzeichnisse zeigen.

Stattdessen benutzt man Softlinks, die sind ein Feature, kommen also
*nach* den Hardlinks auf die Welt und daher erklärt es sich, das man
dafür die Option braucht und nicht umgekehrt.

* Softlinks erstrecken sich über den gesamten Dateibaum, weil sie ja
  gerade einen Pfad und keine Inode speichern.
* Softlinks können auf Verzeichnisse zeigen, in's Leere zeigen, auf
  sich selbst und auch auf andere Hardlinks.  Alles kein Problem.
* Man erkennt Original und Fälschung.

$ ls
$ ln -s a b
$ ln -s b c
$ ln -s c a
$ cat a
cat: a: Zu viele Ebenen aus symbolischen Links
$ ln -s .. d
$ cd d
$ cd dir
$ cd d ; cd dir ; cd d ; cd dir
$ pwd
/home/aldo/dir/d/dir/d/dir/d/dir
$ pwd -P
/home/aldo/dir
$


Aldo
-- 
Der Kölner Erzbischof Kardinal Meisner vergleicht RU486 mit Zyklon B.
                                              Spiegel 53/1998, S.22.

 « Vorige im Thread  Dieser Thread  Nächste im Thread » 

 

seitenanfang


 

news about wissen files archive hilfe suchen  
kontakt letzte änderung: 21.10.2002