Z postu Dlaczego rm może usuwać pliki tylko do odczytu? Rozumiem, że rm
po prostu potrzebuje uprawnienia do zapisu w katalogu, aby usunąć plik. Ale trudno mi zrozumieć zachowanie, w którym możemy łatwo usunąć plik, którego właściciel i grupa są inni.
Próbowałem następujące
mtk: moja nazwa użytkownika
abc: utworzył nowego użytkownika
$ ls -l file
-rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
Myślałem, że to nie powinno być dozwolone. Czy użytkownik powinien mieć możliwość usuwania tylko swoich plików? Czy ktoś może wyjaśnić, dlaczego jest to dozwolone? i jak można tego uniknąć? Mogę myśleć tylko o ograniczeniu uprawnień do zapisu katalogu nadrzędnego, aby uniemożliwić zdziwione usuwanie pliku.
-rw-rw-rw- 1 root root 0 Sep 1 11:11 /tmp/foo
jako zwykłego użytkownika (/tmp
jest on „lepki”), ponieważ mogę go napisać? Ale nie mogę.me
/you
staje się bardziej wyraźny, jeśli postawisz hipotezę, że użytkownik (ten, który nie jest właścicielem pliku) utworzył łącze. Zaimki są trudne w użyciu; powiedzmy, że Al tworzy/home/al/file1
, a Bob, który ma dostęp (i może odczyt) do dostępu/home/al
, łączy go z plikiem/home/bob/als_file
. Bob powinny być zabezpieczone przed usunięciem linku który on stworzył? I czy Al powinien mieć możliwość usuwania (odłączania),/home/bob/als_file
gdy nie ma dostępu do zapisu/home/bob
? Ta droga prowadzi do chaosu.Aby usunąć plik, wystarczy mieć możliwość zapisu do katalogu, w którym znajduje się plik.
Jeśli ci się to nie podoba, możesz ustawić „lepki” bit,
chmod +t dir
jeśli jesteś w połowie systemu operacyjnego (ta funkcja została wprowadzona około 1986 roku w SunOS).Jeśli chcesz być bardziej precyzyjny, potrzebujesz systemu plików z nowoczesną implementacją ACL, taką jak ZFS. Standardowe listy ACL NFSv4 oparte na systemie plików NTFS obejmują obsługę specyficznych dla plików uprawnień do usuwania na użytkownika oraz uprawnienie „delete_child” dla katalogów.
źródło
t
bit, musisz posiadać katalog. A jeśli jesteś właścicielem katalogu, zawsze możesz usunąć pliki bez względu na to, czyt
bit jest ustawiony, czy nie. Jeśli podłączysz plik do katalogu innej osoby, powinieneś być przygotowany na to, aby ktoś mógł go usunąć. Alternatywą byłoby najpierw utworzenie własnego podkatalogu i dodanie tam pliku, ponieważ właściciel nie byłby w stanie usunąć tego podkatalogu, jeśli nie jest pusty.rm
jest operacją w katalogu, a nie w pliku. Plik zostanie usunięty po usunięciu ostatniego odwołania do niego, ale technicznie jest to efekt uboczny.Logika jest podobna do logiki domu: właściciel lub najemca decyduje, których gości wyrzucić, bez względu na to, kto jest ich właścicielem. Ponadto eksmitowany gość, który jest mile widziany w innym domu (ma inny link w katalogu innej osoby), nie zamarznie na zewnątrz.
źródło