Więc dzisiaj przeprowadzałem trochę konserwacji na swoim serwerze i zauważyłem, że mogę usunąć plik należący do roota w moim katalogu domowym.
Udało mi się odtworzyć próbkę:
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 20:59 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ sudo touch file-owned-by-root
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-r--r--. 1 root root 0 Oct 5 21:00 file-owned-by-root
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$
Moje pytanie brzmi: w jaki sposób mogłem usunąć plik, który jest własnością roota i ma uprawnienia -rw-r--r--
, skoro nie jestem rootem?
linux
security
permissions
Carl Bennett
źródło
źródło
Odpowiedzi:
Uprawnienia, treść i wszystkie atrybuty są częścią i-węzła. Nazwa znajduje się we wpisie katalogu. Uprawnienia nie są dziedziczone rekurencyjnie (z wyjątkiem sytuacji, gdy używasz wartości domyślnych w listach ACL Posix).
Podczas usuwania pliku wewnętrznie usuwasz tylko twardy link z pozycji katalogu do i-węzła. Gdy wszystkie dowiązania twarde zostaną usunięte, a i-węzeł nie będzie używany, system plików odzyska miejsce. Potrzebujesz tylko uprawnienia do zapisu w folderze, bez względu na to, jakie uprawnienia są ustawione w pliku (z wyjątkiem niezmiennego zezwolenia na rozszerzenie). To samo dla pustego folderu.
Kiedy usuwasz folder, który nie jest pusty, potrzebujesz uprawnień do zapisu w usuwanym folderze i jego rodzicu.
źródło
sudo touch test_file;sudo chattr +i test_file;rm -f test_file
Patrz:man chattr
Gdy jesteś właścicielem katalogu, możesz zrobić z nim wszystko, a zawartość w nim oparta na uprawnieniach do katalogu. Dlatego, mimo że nie jesteś właścicielem pliku, nadal możesz go usunąć, ponieważ masz uprawnienia do odczytu / zapisu do katalogu, w którym plik się znajduje.
źródło
vi
najpierw zapisuje plik w kopii tymczasowej, a następnie usuwa oryginalny plik i zmienia nazwę kopii na oryginał (lub coś w tym rodzaju).