Учитывая пользователя без полномочий root «joshua», в качестве пользователя root я создал файл с именем «foo» в домашнем каталоге joshua (/ home / johsua /); это выглядит так:
-rw-r--r-- 1 root root 0 12-19 21:00 foo
а затем удалите его как Джошуа, я могу удалить его успешно.
Я ожидаю, что у Джошуа недостаточно прав, чтобы удалить его. Это какое-то «наследование разрешений»? Моя платформа - Debian 5.0.7.
sudo
полномочий root без какого- либо повышения привилегий. Вы, наверное, что-то упустили.Ответы:
Пользователь не удалил файл, система сделала. Пользователь просто удалил файл из своего собственного каталога. Система удалила файл, потому что его счетчик ссылок упал до нуля. Просто случается так, что пользователь, удаляющий файл из каталога, случайно сбросил счетчик ссылок до нуля. (Если файл был жестко связан с другим каталогом или был открыт дескриптор файла, он не был бы удален.)
Система автоматически удаляет файлы, когда их счетчик ссылок падает до нуля. Владелец файла не имеет значения. Есть много способов, которыми кто-то, кроме владельца файла, может сбросить счетчик ссылок на файл до нуля.
Удаление файла из каталога (так называемое «удаление ссылок») - это операция над каталогом. Отмена связи с файлом уменьшает количество ссылок.
Аналогично, пользователь, отличный от владельца, может закрыть последний дескриптор файла, который не связан ни с одним каталогом. Закрытие этого дескриптора также приведет к удалению файла, поскольку количество ссылок снова упадет до нуля.
источник
rm
команда немного мутит воду, потому чтоrm
это аббревиатура «удалить», и пользователи обучены думать обrm
операции «удалить». Многие пользователи используютrm
каждый день, не зная, что фактически выполняемая им операция - это «отсоединение», а не «удаление». В результате не должно быть удивительно, что многие пользователи находят это поведение удивительным, когда они впервые сталкиваются с ним.rm
команда действительно удаляет файл или каталог из каталога. Хуже в Windows, где вызывается командаdel
, потому что она использовалась для удаления файла, но на современных машинах Windows (начиная с NT4) это также операция отмены связи.Первое предположение: для удаления файла вам нужны права на запись в содержащую папку. Так что попробуйте / home / johsua / foo / bar, дайте 755 для foo и 644 для bar.
источник