Итак, я спросил, в чем смысл устанавливать разрешение при открытии (соответственно создании) нового файла, и именно поэтому я спрашиваю здесь. Также упоминается:
Они могут, в качестве крайнего примера, иметь доступ на запись в каталог, что означает, что они могут переименовать ваш файл, скопировать его в исходное имя, получить доступ к этому, а затем удалить переименованный один. разрешения работают, но вы должны убедиться, что они настроены правильно (например, защита всего пути, ведущего к файлу, а не только самого файла.
Комментарии представлены в частично неверная цитата . Это правда, что лицо, имеющее разрешение на запись в каталог, но не имеющее никаких прав на файл, может переименовать файл или удалить его ( в / из этого каталога , см. ниже). Также верно, что, пройдя тем самым путь, один и тот же человек может создать новый файл, доступный для чтения, с оригинальным именем другого. Однако un верно, что такой человек может скопировать исходный файл, с его оригинальным именем или любым другим, или может использовать такой маневр для чтения исходного файла.
Ключевым моментом здесь является то, что запись в каталоге для file F в каталоге D - это просто данные в специальном виде файла: сопоставление имени с записью в базовой файловой системе. Искусство D , не является частью F , поэтому для манипулирования им требуется доступ к D , а не к F . То, что люди обычно называют именем файла, на самом деле не является частью этого файла и не обязательно является уникальным, поскольку один и тот же файл может быть связан с деревом каталогов в нескольких местах с одинаковыми или разными именами.
Второй ключевой момент связан с первым: права доступа к файлу находятся в файловой системе, а не в списках каталогов, и они эффективны для контроля доступа к содержимому файла. Это фактически то же самое для каталогов, что и для других типов файлов: пользователю необходимо разрешение на чтение для данного каталога, чтобы прочитать его содержимое, и ему нужно разрешение на запись для его изменения. Таким образом, атрибуты контроля доступа к файлам служат полезной цели, и они должны быть установлены соответствующим образом, чтобы файлы адекватно обслуживали их целевое назначение .
Ответ первая часть вопроса, таким образом, имеет два аспекта:
- Атрибуты контроля доступа к файлам являются неотъемлемой частью метаданных файловой системы этого файла, поэтому нельзя избежать их установки на что-то при создании файла.
- Вы не можете отложить настройку разрешения, когда открываете файл (имя), который еще не существует, но который вы хотите создать, поскольку система будет использовать исходный файл разрешения на проверку доступа для открытия вновь созданного файла. Соответствующие разрешения для файла не могут быть получены из запрошенного режима открытия.
Ответ на вторую часть намного проще: вы должны указать режим доступа при попытке открыть файл потому что именно так и когда ОС обеспечивает контроль доступа . Кроме того, вы можете указать режим, который является более строгим, чем вам разрешено, в качестве внутреннего контроля против ошибочно выполненных непреднамеренных действий с файлом.
Я не понимаю, что означает «правильно установить флаги».
Комментарий кажется мне достаточно ясным, особенно в свете прилагаемого к нему примера, но, возможно, вам было бы понятнее, если бы более крупное утверждение, содержащее его, было переписано как «вам нужно принять эти соображения, касающиеся не только самого файла, но и каждого каталога на пути к нему, чтобы гарантировать, что права доступа к файлам соответствуют вашим целям безопасности ".