24

Учитывая пользователя без полномочий root "joshua", в качестве пользователя root я создал файл с именем "foo" в домашнем каталоге joshua (/home/johsua/); это выглядит так:

-rw-r--r--  1 root   root       0 12-19 21:00 foo

а затем удалите его как Джошуа, я могу удалить его успешно.

Я ожидаю, что у Джошуа недостаточно прав, чтобы удалить его. Это какое-то «наследование разрешений»? Моя платформа - Debian 5.0.7.

2 ответа2

43

Пользователь не удалил файл, система сделала. Пользователь просто удалил файл из своего собственного каталога. Система удалила файл, потому что его счетчик ссылок упал до нуля. Просто случается так, что пользователь, удаляющий файл из каталога, случайно сбросил счетчик ссылок до нуля. (Если файл был жестко связан с другим каталогом или был открыт дескриптор файла, он не был бы удален.)

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

Удаление файла из каталога (называемого «отмена связи») - это операция над каталогом. Отмена связи с файлом уменьшает количество ссылок.

Аналогично, пользователь, отличный от владельца, может закрыть последний дескриптор файла, который не связан ни с одним каталогом. Закрытие этого дескриптора также приведет к удалению файла, поскольку количество ссылок снова упадет до нуля.

0

Первое предположение: для удаления файла вам нужны права на запись в содержащую папку. Так что попробуйте /home /johsua /foo /bar, дайте 755 для foo и 644 для bar.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .