Таким образом, я делал некоторое обслуживание на своем сервере ранее сегодня и заметил, что смог удалить файл, принадлежавший корню в моем корневом каталоге.
Я смог воспроизвести образец:
[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]$
Мой вопрос состоит в том, как я был в состоянии удалить файл, это принадлежит корню и имеет полномочия -rw-r--r--
, в то время как я не корень?
Разрешения, содержимое и все атрибуты являются частью inode. Имя находится в записи каталога. Права не наследуются рекурсивно (за исключением случаев использования по умолчанию в Posix ACL).
При удалении файла внутри него просто удаляется жесткая ссылка из записи записной книжки на вход. Когда все жесткие ссылки удалены, а входной код не используется, файловая система забирает место. Вам нужно только разрешение на запись в папку, независимо от того, какие разрешения установлены для файла (за исключением неизменяемого разрешения ext). То же самое относится и к пустой папке.
Когда вы удаляете не пустую папку, вам нужно разрешение на запись на удаляемую папку и ее родителя.
.Когда вы являетесь владельцем директории, вам разрешается что-либо делать с ней и содержимым внутри нее, основываясь на разрешениях директории. Поэтому, несмотря на то, что Вы не являетесь владельцем файла, Вы все равно смогли удалить его, потому что у Вас есть разрешение на чтение/запись в каталог, в котором находится файл.
.