Поэтому сегодня я проводил некоторые операции на своем сервере и заметил, что смог удалить файл, принадлежащий пользователю root, в моем домашнем каталоге.
Я был в состоянии воспроизвести образец:
[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]$
У меня вопрос, как я смог удалить файл, который принадлежит пользователю root и у которого есть разрешения -rw-r--r--
, а я не root?
linux
security
permissions
Карл Беннетт
источник
источник
Ответы:
Права доступа, содержимое и все атрибуты являются частью индекса. Имя находится в записи каталога. Разрешения не наследуются рекурсивно (кроме случаев, когда вы используете значение по умолчанию в списках доступа Posix).
Когда вы удаляете файл, внутренне вы просто удаляете жесткую ссылку из записи каталога на индекс. Когда все жесткие ссылки будут удалены, а индекс не используется, файловая система освободит пространство. Вам нужно только разрешение на запись в папку, независимо от того, какие разрешения установлены для файла (за исключением неизменного разрешения ext). То же самое для пустой папки.
Когда вы удаляете не пустую папку, вам нужно разрешение на запись в папку, которую вы удаляете, и в ее родительскую папку.
источник
sudo touch test_file;sudo chattr +i test_file;rm -f test_file
см .:man chattr
Когда вы владеете каталогом, вам разрешается делать с ним все, что угодно, и содержимое в соответствии с разрешениями каталога. Поэтому, несмотря на то, что файл не был владельцем, вы все равно смогли удалить его, поскольку у вас было разрешение на чтение / запись в каталог, в котором находился файл.
источник
vi
сначала файл сохраняется во временную копию, затем удаляет исходный файл и переименовывает копию в оригинал (или что-то в этом роде).