Между прочим, оказалось, что в Виндовсе атрибуты файлов действуют отдельно от прав доступа. Вот помечен файл фтрибутом Read-Only и хоть ты тресни, хоть государем императором будь в правах, а менять его не дадут пока не уберешь атрибут.
Права - тоже файловой системы. Между прочим, биты в правах (ACL) в Виндовсе имеют очень разные значения в зависимости от типа объекта. Например: http://blogs.msdn.com/b/sergey_babkins_blog/archive/2015/03/02/security-descriptors-part3-raw-descriptors-and-powershell.aspx
Ну все же не ось вообще, а общий слой, ответственный за файловые системы. Кусок, ответственный за реджистри, решает по своему, за ETW - по-своему и так далее. Но атрибуты-то интерпретируются в том же общем слое, ответственном за файловые системы.
Если вы пишете свою файловую систему то надо именно что записывать и читать АКЛы. Ось сама знает когда ей нужен какой акл, и правила, почему можно и нельзя открывать тот и этот файл, сидят именно в оси, наверное, в том слое который ответственен за файловую систему.
Аттрибуты же отданы на совесть файловой системы. Она сама разбирается что они означают. Если ваша ФС позволяет например открывать read only файлы с FILE_FLAG_DELETE_ON_CLOSE, она конечно же не получит лого, но это технически вполне законное поведение.
Интересно а в винде пофиксили баг столетней давности что если файл создавался через open и с mode O_CREAT то оно оказывалось в результате read only хоть ты стреляйся.
Можно было IO_RDWR добавить и все равно O_CREAT интерпретировался как read-only атрибут в каких-то недрах имплементации. Когда меня это волновало (лет так 20+ назад), я проверял на нескольких компиляторах, и везде было поведение идентичное, т.е. где-то на уровне сишной исходной stdio бибилиотеки или как там было так.
Без понятия. Но это не stdio, это юниксный системный вызов и его эмуляция. stdio - это fopen(). Кстати, в родном виндовом CreateFile() имеется просто жуткое количество флагов, которые индивидуально выбирать почти невозможно по причине их большого количества, они обычно используются кучками. (Create там в смысле создать файловый дескриптор, оно может создавать новые файлы, а может и просто открывать).
no subject
Date: 2015-10-09 08:33 pm (UTC)no subject
Date: 2015-10-09 08:42 pm (UTC)no subject
Date: 2015-10-09 08:49 pm (UTC)Файловая система бездумно записывает и читает АКЛы, а уже ось решает что они значат.
no subject
Date: 2015-10-09 09:13 pm (UTC)no subject
Date: 2015-10-09 10:17 pm (UTC)Если вы пишете свою файловую систему то надо именно что записывать и читать АКЛы. Ось сама знает когда ей нужен какой акл, и правила, почему можно и нельзя открывать тот и этот файл, сидят именно в оси, наверное, в том слое который ответственен за файловую систему.
Аттрибуты же отданы на совесть файловой системы. Она сама разбирается что они означают. Если ваша ФС позволяет например открывать read only файлы с FILE_FLAG_DELETE_ON_CLOSE, она конечно же не получит лого, но это технически вполне законное поведение.
no subject
Date: 2015-10-10 05:44 am (UTC)no subject
Date: 2015-10-11 10:01 pm (UTC)no subject
Date: 2015-10-12 01:01 am (UTC)no subject
Date: 2015-10-12 11:18 pm (UTC)