Welche Berechtigungen wirken sich auf die Erstellung von Hardlinks aus? Ist der Besitz von Dateien selbst wichtig?
Angenommen, der Benutzer alice
möchte einen Hardlink zu der Datei target.txt
in einem Verzeichnis erstellen target-dir
.
- Welche Berechtigungen sind
alice
für beidetarget.txt
und erforderlichtarget-dir
? - Wenn der
target.txt
Benutzer Eigentümer istbill
und der Benutzertarget-dir
Eigentümer istchad
, ändert sich dadurch etwas?
Ich habe versucht, diese Situation zu simulieren, indem ich die folgende Ordner- / Dateistruktur in einem ext4
Dateisystem erstellt habe:
#> ls -lh . *
.:
drwxr-xr-x 2 bill bill 60 Oct 1 11:29 source-dir
drwxrwxrwx 2 chad chad 60 Oct 1 11:40 target-dir
source-dir:
-r--r--r-- 1 bill bill 0 Oct 1 11:29 target.txt
target-dir:
-rw-rw-r-- 1 alice alice 0 Oct 1 11:40 dummy
Während alice
sie einen Softlink zu target.txt
erstellen kann, kann sie keinen Hardlink erstellen:
#> ln source-dir/target.txt target-dir/
ln: failed to create hard link ‘target-dir/target.txt’ => ‘source-dir/target.txt’: Operation not permitted
Wenn alice
besitzt target.txt
und keine Berechtigungen geändert werden, gelingt es die hart-link. Was vermisse ich hier?
linux
permissions
hard-link
gcscaglia
quelle
quelle
target.txt
undtarget-dir
Berechtigungen nicht erstellen , es sei denn, ich binsudo
root.alice
folgt zu erstellen. Ich kann sowohl auf die Originaldatei als auch auf einen Hardlink (der mit erstellt wurdesudo
) zugreifen , aber ich kann den Link nicht wie folgt erstellen der Benutzer,alice
obwohl wir uns alle einig sind, dass diese Berechtigungen ausreichen sollten.Antworten:
Zum Erstellen des Hardlinks sind in allen Fällen Berechtigungen
alice
erforderlich . Die Berechtigungen, die für benötigt werden, variieren:write+execute
target-dir
target.txt
fs.protected_hardlinks = 1
dannalice
entweder Besitzrechtetarget.txt
oder zumindestread+write
Berechtigungen dafür.fs.protected_hardlinks = 0
dann eine Reihe von Berechtigungen ausreicht; Sogar 000 ist okay.Diese Antwort auf eine ähnliche Frage enthielt die fehlenden Informationen zur Beantwortung dieser Frage.
Von http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1 [Hervorhebung meiner]:
quelle
alice
benötigt mindestens Leserechte fürtarget.txt
und Schreib- und Ausführungsrechte fürtarget-dir
.Die Berechtigungsstruktur funktioniert nun als dreifach getrennte Menge:
Daher wirkt sich die Eigentumsfrage nur auf die folgenden Berechtigungen aus
alice
:alice
es sich um den Eigentümer handelt, müssen die erforderlichen Berechtigungen im Bereich "Benutzer" enthalten sein.alice
es sich um einen Teil der Gruppe handelt, der es gehört, müssen die erforderlichen Berechtigungen im "Gruppenteil" enthalten sein.alice
es nicht gehört und nicht Teil der Gruppe ist, der es gehört, müssen die erforderlichen Berechtigungen im "anderen" Teil vorhanden sein.quelle
target.txt
habe ich jedoch 444 Berechtigungen undtarget-dir
777 Berechtigungen. Ich kann jedoch keine feste Verknüpfung erstellen, es sei denn, ich bin als Root angemeldet oder ich besitze die Datei, zu der ich verknüpfe. Seltsamerweise funktioniert ein Softlink so, wie Sie es beschreiben.