Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Вниз

Права доступа   Найти похожие ветки 

 
Чапаев ©   (2007-01-07 16:12) [0]

Как файлу (или каталогу) установить права доступа по умолчанию?

Пытался брать права родителя и давать их потомку -- получается гадость. Пытался через ConvertStringSecurityDescriptorToSecurityDescriptor() задавать права "D:AI" или "D:AIAR" -- все права сбрасываются, флаг наследования не устанавливается. Пытался через SetSecurityDescriptorDacl() устанавливать DACL по умолчанию -- ничего.

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

Поможите, люди добрые, а то уже извилины узелками завязываются.


 
Eraser ©   (2007-01-07 16:39) [1]

> [0] Чапаев ©   (07.01.07 16:12)

возможно надо в SetNamedSecurityInfo в параметре pDacl указать nil (не путать с пустым dacl!), при этом в параметре SecurityInfo указав DACL_SECURITY_INFORMATION. Хотя не проверял.


 
Чапаев ©   (2007-01-07 16:41) [2]

> не путать с пустым dacl!
Не путаю. :о)

То, о чём ты говоришь, разрешит всем полный доступ к файлу, судя по справке.


 
Eraser ©   (2007-01-07 16:42) [3]

> [2] Чапаев ©   (07.01.07 16:41)

значит это я попутал с пустым дескриптором безопасности )


 
Eraser ©   (2007-01-07 17:39) [4]

попробуй тогда добавить в ACL ACE, тип которого INHERITED_ACE или INHERIT_ONLY_ACE. жаль не могу сейчас проверить.. (


 
Чапаев ©   (2007-01-07 17:47) [5]

> [4] Eraser ©   (07.01.07 17:39)
Попробую.


 
С   (2007-01-07 18:26) [6]

А что понимается под правами по умолчанию? Если назначаемые системой, так они автоматически будут назначены системой при создании объекта, без каких-либо дополнительных действий с нашей стороны, ели указать NIL в соответствующем параметре. Это же касается наследуемых ACE, то есть тех, у которых установлены соответствующие флаги.

Ну а вообще, для установкки прав на любой объект нужно получить списки контроля доступа и аудита этого объекта, откорректировать их, удалив ненужные ACE и добавив недостающие, после чего назначить новые списки объекту - если только память мне не изменяет.

Все это очень хорошо описано в книге Рихтера и Кларка "Программирование серверных приложений для W2000".


 
Eraser ©   (2007-01-07 18:52) [7]

> [6] С   (07.01.07 18:26)

сейчас глянул Рихтера, он по этому поводу пишет следующее
ULONG lErr = SetNamedSecurityInfo(
  TEXT("Machine\\Software\\Jason"sKey"), SE_REGISTRY_KEY,
  DACL_SECURITY_INFORMATION|PROTECTED_DACL_SECURITY_INFORMATION,
  NULL, NULL, NULL, NULL);
  if (lErr != ERROR_SUCCESS){
     // Error case
  }

NOTE
--------------------------------------------------------------------------------
Remember that a NULL DACL indicates that everyone has all access to the object (even the ability to write the security of the object). In the rare cases where it is appropriate to set NULL security to an object, you must protect the object"s DACL (or lack of DACL) from inherited ACEs. Otherwise, the system is forced to create a DACL that will include the ACEs inherited from parent objects, which immediately undermines your goal of NULL security for the object. On the other hand, this side effect of inherited security can be a convenient way to set an object"s DACL to include no ACEs except those inherited from parent objects.


т.е. по его словам, если из его кода убрать |PROTECTED_DACL_SECURITY_INFORMATION, то объект якобы унаследует ACL своего предка. Однако на практике у меня это не подтвердилось.


 
С   (2007-01-07 18:59) [8]

>Eraser ©   (07.01.07 18:52) [7]

Унаследоваться должны те ACE, у которых стоит флаг наследования - если только я ничего не путаю. Нет настроения, честно говоря, проверять или поднимать документы или исходники. Совсем пропало настроение:(



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
15-1179597858
Rawed
2007-05-19 22:04
2007.06.17
Часы в Windows постоянно сбиваются!!


2-1180341649
ANB
2007-05-28 12:40
2007.06.17
Как назначить разные пути сетевым дискам для разных процессов ?


15-1179662056
Prohodil Mimo
2007-05-20 15:54
2007.06.17
Проблема с рутером


2-1179154246
Lordalex
2007-05-14 18:50
2007.06.17
помогите с ошибкой


2-1180105148
ppcumax
2007-05-25 18:59
2007.06.17
Delphi7 > Delphi 2005





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский