Как функция bash может возвращать несколько значений?

Причина, по которой это разрешено, связана с тем, что на самом деле происходит при удалении файла. По идее, задача rm состоит в том, чтобы удалить запись имени из каталога. Тот факт, что файл может стать недоступным, если это было единственное имя файла, и что индексный дескриптор и пространство, занимаемое файлом, могут быть восстановлены в этот момент, является почти случайным. Название системного вызова, вызываемого командой rm , то есть unlink , даже указывает на этот факт.

И удаление записи имени из каталога, по сути, является операцией в этом каталоге , поэтому в этот каталог вам нужно иметь разрешение на запись.


Может быть, вам будет удобнее при следующем сценарии? Предположим, есть каталоги:

/home/me    # owned and writable only by me
/home/you   # owned and writable only by you

И есть файл, принадлежащий мне и имеющий две жесткие ссылки:

/home/me/myfile
/home/you/myfile

Неважно, как эта жесткая ссылка / home / you / myfile попала туда в папке первое место. Может, root туда положил.

Идея этого примера заключается в том, что вам должно быть разрешено удалить жесткую ссылку / home / you / myfile . В конце концов, он загромождает ваш каталог . Вы должны иметь возможность контролировать, что есть, а что не существует внутри / home / you .И когда вы удаляете / home / you / myfile , обратите внимание, что вы на самом деле не удалили файл. Вы удалили только одну ссылку на него.


Обратите внимание, что если бит закрепления установлен в каталоге, содержащем файл (отображается как t в ls ), то вы do должны быть владелец файла, чтобы иметь возможность удалить его (если только вы не являетесь владельцем каталога). Бит залипания обычно устанавливается на / tmp .

7
03.12.2017, 17:10
0 ответов

Теги

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