Re: Berechtigungen bei symbolischen Links

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Tue, 23 Jun 2015 11:55:21 +0200 (CEST)

Alexander Klein <Alexander.Klein(at)physiologie.med.uni-giessen.de> wrote:
> ich hatte dieser Tage die Idee, man könnte vielleicht eine große Anzahl
> von Dateien, die alle zusammen verarbeitet werden sollen, vor
> Veränderungen schützen, indem man sie zusammen in ein Arbeitsverzeichnis
> symbolisch verlinkt, und dann die Rechte der Links entsprechend setzt.

Mir ist die Intention nicht ganz klar. Welchen Vorteil sollte
das haben gegenüber den Rechten an den eigentlichen Dateien?

> [...]
> $ echo test >> y; ls -l
> total 4
> -rw-r--r-- 1 alex alex 10 20 Mai 17:33 x
> lr-xr-xr-x 1 alex alex 1 20 Mai 17:30 y -> x
>
> $ mv y z; ls -l
> total 4
> -rw-r--r-- 1 alex alex 10 20 Mai 17:33 x
> lr-xr-xr-x 1 alex alex 1 20 Mai 17:30 z -> x
>
> Das entzogene Schreibrecht wirkt sich anscheinend nie aus, egal ob man
> nun den Link selbst oder die referenzierte Datei ändert.

Ein "mv y z" ändert den Link selbst ja gar nicht, nur seinen
Namen, d.h. den Verzeichniseintrag, und dafür sind natürlich
die Rechte des Verzeichnisses ausschlaggebend, nicht die des
Symlinks. Das ist auch bei normalen Dateien so:

$ date > foo
$ chmod 0 foo
$ ls -l
---------- 1 olli wheel 30 Jun 23 11:37 foo
$ mv foo bar
$ ls -l
---------- 1 olli wheel 30 Jun 23 11:37 bar

Zugriffsrechte beziehen sich immer auf den _Inhalt_ einer
Datei. Bei "plain files" ist das der eigentliche Dateninhalt,
bei Verzeichnissen ist es die Liste der Einträge darin (daher
erfordern mv, rm usw. Schreibrecht auf das Verzeichnis).

Ob man das Ziel eines Symlinks als seinen "Inhalt" auffasst
oder eher als Metadatum, ist Ansichtssache. Ich tendiere
eher zu letzterem (zumal es bei UFS in der Regel auch im
inode gespeichert wird, nicht in einem Datenblock), was
ein Grund dafür wäre, dass die Rechte bei symbolischen Links
ohne Bedeutung sind.

Drüberhinaus gibt es keine Möglichkeit, das Ziel eines Symlinks
direkt zu ändern. ("Leider", muss ich als Programmierer
hinzufügen. Manchmal wäre es nützlich, wenn man das Ziel
eines Symlinks mit einem atomaren Syscall ändern könnte.)
Das Kommando "ln -sf" löscht den bestehenden Symlink zuerst
und legt dann einen neuen an.

Das kann man übrigens auch in der Manpage symlink(7) nachlesen:
"only the flags and ownership are used by the system; the access
permissions are ignored."

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG,  Marktplatz 29, 85567 Grafing
Handelsregister:  Amtsgericht Muenchen, HRA 74606, Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsreg.: Amtsgericht München,
HRB 125758, Geschäftsführer:  Maik Bachmann,  Olaf Erb,  Ralf Gebhart
FreeBSD-Dienstleistungen/-Produkte + mehr: http://www.secnetix.de/bsd
"Software gets slower faster than hardware gets faster."
        -- Niklaus Wirth
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 23 Jun 2015 - 11:55:32 CEST

search this site