Почему я был в состоянии удалить файл, принадлежавший корню в моем корневом каталоге, не будучи корнем?

Таким образом, я делал некоторое обслуживание на своем сервере ранее сегодня и заметил, что смог удалить файл, принадлежавший корню в моем корневом каталоге.

Я смог воспроизвести образец:

[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--, в то время как я не корень?

40
задан 6 October 2015 в 01:54
2 ответа

Разрешения, содержимое и все атрибуты являются частью inode. Имя находится в записи каталога. Права не наследуются рекурсивно (за исключением случаев использования по умолчанию в Posix ACL).

При удалении файла внутри него просто удаляется жесткая ссылка из записи записной книжки на вход. Когда все жесткие ссылки удалены, а входной код не используется, файловая система забирает место. Вам нужно только разрешение на запись в папку, независимо от того, какие разрешения установлены для файла (за исключением неизменяемого разрешения ext). То же самое относится и к пустой папке.

Когда вы удаляете не пустую папку, вам нужно разрешение на запись на удаляемую папку и ее родителя.

.
34
ответ дан 28 November 2019 в 19:45

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

.
19
ответ дан 28 November 2019 в 19:45

Теги

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