Почему я могу удалить файл как пользователь, которому принадлежит root?

Как говорится в заголовке: Почему я могу удалить файл как пользователь, которому принадлежит root?

Вот пример:

% sudo touch ~/test

% ls -la ~/test    
-rw-r--r-- 1 root root 0 Jun 18 20:31 /home/aboettger/test

% rm ~/test
rm: remove write-protected regular empty file ‘/home/aboettger/test’? Y

% ls -la ~/test
ls: cannot access /home/aboettger/test: No such file or directory
1
задан 18 June 2015 в 21:35

1 ответ

Если у вас есть достаточное разрешение (rwx) в каталоге, вы можете удалить любой файл внутри этого каталога.

В основном запись каталога содержит таблицу с именами файлов, которые она имеет, и их inodes. Поэтому, когда задана команда rm, запись файла просто удаляется из этой таблицы каталогов, она не зависит от владельца самих файлов. Достаточно достаточно разрешения на родительский каталог.

Хотя файл остается действительным в файловой системе, пока все процессы, использующие этот файл, не будут завершены.

Связанный системный вызов unlinkat(). Например, при удалении file.txt:

unlinkat(AT_FDCWD, "file.txt", 0)       = 0
1
ответ дан 23 May 2018 в 19:42

Другие вопросы по тегам:

Похожие вопросы: