Как говорится в заголовке: Почему я могу удалить файл как пользователь, которому принадлежит 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
Если у вас есть достаточное разрешение (rwx) в каталоге, вы можете удалить любой файл внутри этого каталога.
В основном запись каталога содержит таблицу с именами файлов, которые она имеет, и их inodes. Поэтому, когда задана команда rm, запись файла просто удаляется из этой таблицы каталогов, она не зависит от владельца самих файлов. Достаточно достаточно разрешения на родительский каталог.
Хотя файл остается действительным в файловой системе, пока все процессы, использующие этот файл, не будут завершены.
Связанный системный вызов unlinkat(). Например, при удалении file.txt:
unlinkat(AT_FDCWD, "file.txt", 0) = 0