Jeśli utworzę plik, a następnie zmienię jego uprawnienia na 444
(tylko do odczytu), w jaki sposób rm
mogę go usunąć?
Jeśli to zrobię:
echo test > test.txt
chmod 444 test.txt
rm test.txt
... rm
zapyta, czy chcę usunąć plik chroniony przed zapisem test.txt
. Spodziewałbym się, że rm
nie uda mi się usunąć takiego pliku i że będę musiał zrobić chmod +w test.txt
pierwszy. Jeśli robię rm -f test.txt
następnie rm
usunie plik, nawet bez pytania, mimo że jest tylko do odczytu.
Czy ktoś może to wyjaśnić? Używam Ubuntu 12.04 / bash.
permissions
files
rm
readonly
Magnus
źródło
źródło
Odpowiedzi:
Wszystkie
rm
potrzeby to uprawnienie do zapisu i wykonania w katalogu nadrzędnym. Uprawnienia do samego pliku są nieistotne.Oto odniesienie, które wyjaśnia model uprawnień jaśniej niż kiedykolwiek:
źródło
+t
, aby ludzie nie mogli już modyfikować ani usuwać plików w tym katalogu, których nie są właścicielami, nawet jeśli mają dostęp do zapisu w tym katalogu?chattr
aby dodać niezmienną flagę do plików. Jeśli nie, to ire_and_curses jest całkiem poprawne.Ok, zgodnie z Twoim komentarzem do ire_and_curses, naprawdę chcesz, aby niektóre pliki były niezmienne. Możesz to zrobić za pomocą
chattr
polecenia. Na przykład:na przykład
Nie można nic zrobić z niezmiennym plikiem - nie można go usunąć, edytować, nadpisać, zmienić nazwy, chmod lub chown ani nic innego. Jedyne, co możesz z tym zrobić, to przeczytać (jeśli pozwalają na to uprawnienia unixowe) i (jako root)
chattr -i
usunąć niezmienny bit.Nie wszystkie systemy plików obsługują wszystkie atrybuty. AFAIK, niezmienny jest obsługiwany przez wszystkie popularne systemy plików Linux (w tym ext2 / 3/4 i xfs. Zfsonlinux obecnie nie obsługuje atrybutów)
źródło
lsattr
aby wyświetlić atrybuty.rm
że to nigdy nawet nie przyszło mi do głowy ...Jedna odpowiedź na to pytanie głosi, że możesz usunąć plik z katalogu tylko wtedy, gdy ma tylko
write
uprawnienie, jest całkowicie błędny! po prostu spróbuj! Daj katalogowi tylkowrite
uprawnienia i spróbuj usunąć, nie możesz!Aby usunąć plik w katalogu, potrzebujesz zarówno uprawnień, jak
write
iexecute
kataloguWróćmy do pytania: aby usunąć plik za pomocą
rm
, usuwasz tylko informacje z jego i-węzła z katalogu, tzn. Nie jesteśshredding
nim z dysku. Jeśli informacji i-węzła pliku nie ma w katalogu, nie możesz uzyskać do niego dostępu (również dlatego, że go nie widzisz, ponieważ nie ma go w katalogu macierzystym), tzn. Jest on dla ciebie usuwany .Aby więc usunąć plik z katalogu, wystarczy uprawnienia do katalogu; uprawnienia do tego pliku są nieistotne
źródło