Które uprawnienia wpływają na tworzenie twardego łącza? Czy sama własność pliku ma znaczenie?
Załóżmy, że użytkownik alice
chce utworzyć dowiązanie twarde do pliku target.txt
w katalogu target-dir
.
- Uprawnienia, które nie
alice
potrzebują zarównotarget.txt
atarget-dir
? - Jeśli
target.txt
jest własnością użytkownikabill
itarget-dir
jest własnością użytkownikachad
, czy coś to zmienia?
Próbowałem zasymulować tę sytuację, tworząc następującą strukturę folderów / plików w ext4
systemie plików:
#> 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
Chociaż alice
może utworzyć łącze miękkie target.txt
, nie może utworzyć twardego łącza:
#> ln source-dir/target.txt target-dir/
ln: failed to create hard link ‘target-dir/target.txt’ => ‘source-dir/target.txt’: Operation not permitted
Jeśli alice
własność target.txt
i żadne uprawnienia nie zostaną zmienione, łącze twarde powiedzie się. Czego tu brakuje?
target.txt
i target-dir
uprawnień, chyba że sudo
jako root.
alice
Mogę uzyskać dostęp zarówno do oryginalnego pliku, jak i twardego łącza (utworzonego za pomocą sudo
), ale nie mogę utworzyć łącza jako użytkownik, alice
mimo że wszyscy zgadzamy się na te uprawnienia, powinien wystarczyć.