Форум: "WinAPI";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
ВнизSID Well-known группы Найти похожие ветки
← →
Pearled © (2005-07-04 14:22) [0]Пытаюсь установить права доступа к папке. С отдельными пользователями разобрался. А вот как определить доступ для стандартной группы пользователей ? Функция CreateWellKnownSID() есть только в Windows 2003 Server. Может кто-нибудь знает как получить такой SID в Windows 2000 Server?
← →
Игорь Шевченко © (2005-07-04 14:34) [1]
> А вот как определить доступ для стандартной группы пользователей
> ?
// NT well-known SIDs //
// //
// NT Authority S-1-5 //
// Dialup S-1-5-1 //
// //
// Network S-1-5-2 //
// Batch S-1-5-3 //
// Interactive S-1-5-4 //
// (Logon IDs) S-1-5-5-X-Y //
// Service S-1-5-6 //
// AnonymousLogon S-1-5-7 (aka null logon session) //
// Proxy S-1-5-8 //
// Enterprise DC (EDC) S-1-5-9 (aka domain controller account) //
// Self S-1-5-10 (self RID) //
// Authenticated User S-1-5-11 (Authenticated user somewhere) //
// Restricted Code S-1-5-12 (Running restricted code) //
// Terminal Server S-1-5-13 (Running on Terminal Server) //
// Remote Logon S-1-5-14 (Remote Interactive Logon) //
// This Organization S-1-5-15 //
// //
// Local System S-1-5-18 //
// Local Service S-1-5-19 //
// Network Service S-1-5-20 //
// //
// (NT non-unique IDs) S-1-5-0x15-... (NT Domain Sids) //
// //
// (Built-in domain) S-1-5-0x20 //
// //
// (Security Package IDs) S-1-5-0x40 //
// NTLM Authentication S-1-5-0x40-10 //
// SChannel Authentication S-1-5-0x40-14 //
// Digest Authentication S-1-5-0x40-21 //
// //
// Other Organization S-1-5-1000 (>=1000 can not be filtered) //
← →
Pearled © (2005-07-05 11:25) [2]Спасибо!
DACL создается по-моему правильно, но теперь не могу его установить.. CreateDirectory создает каталог с правами по умолчанию, независимо от указанных в параметрах SECURITY_ATTRIBUTES. Может быть из-за того, что права наследуются от родительского каталога? Но как тогда программно убрать эту галочку?
← →
Игорь Шевченко © (2005-07-05 11:38) [3]Pearled © (05.07.05 11:25) [2]
SetFileSecurity не поможет ?
← →
Pearled © (2005-07-05 11:54) [4]// SetFileSecurity не поможет ?
Я сначала использовал SetnamedSecurityInfo() (в MSDN рекомендуется ее использовать вместо вышеуказанной). Но если у каталога был установлен флаг "Переносить наследуемые разрешения", то функция только добавляла новые ACEы, но не могла удалить существующие. А мне нужно оставить доступ только для одного пользователя..
← →
Игорь Шевченко © (2005-07-05 12:02) [5]
> А мне нужно оставить доступ только для одного пользователя..
Внести в начало разрешающий ACE для этого пользователя и за ним запрещающий ACE для всех не поможет ?
← →
Игорь Шевченко © (2005-07-05 12:04) [6]Кстати, вот такая вот любопытная фраза:
"For backward compatibility purposes, CreateDirectory does not apply Windows 2000 inheritance rules when you specify a security descriptor in lpSecurityAttributes. To support inheritance on current versions of Windows, functions that query the security descriptor of this object may heuristically determine and report that inheritance is in effect. See Automatic Propagation of Inheritable ACEs for more information."
← →
Pearled © (2005-07-05 12:23) [7]/Внести в начало разрешающий ACE для этого пользователя и за ним запрещающий ACE для всех не поможет ?/
Наверное поможет, так и сделаю..
Кстати в параметрах функции SetNamedSecurityInformation() можно указать флаг PROTECTED_DACL_SECURITY_INFORMATION, который должен защищать DACL от наследования. Но в Delphi такой константы нет, а метод перебора значений вручную ничего не дал (пробовал подставить 16, 32, 64, 128).
← →
BiN © (2005-07-05 12:23) [8]>Pearled ©
Во время создания DACL попробуй установить флаг SE_DACL_PROTECTED.
← →
Игорь Шевченко © (2005-07-05 12:25) [9]
> PROTECTED_DACL_SECURITY_INFORMATION
#define PROTECTED_DACL_SECURITY_INFORMATION (0x80000000L)
#define PROTECTED_SACL_SECURITY_INFORMATION (0x40000000L)
#define UNPROTECTED_DACL_SECURITY_INFORMATION (0x20000000L)
#define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L)
Скачай себе наконец Platform SDK ! :))
← →
BiN © (2005-07-05 12:26) [10]Pearled © (05.07.05 12:23) [7]
Но в Delphi такой константы нет, а метод перебора значений вручную ничего не дал (пробовал подставить 16, 32, 64, 128).
Долго бы тебе пришлось перебирать -)
PROTECTED_DACL_SECURITY_INFORMATION = ($80000000);
{$EXTERNALSYM PROTECTED_DACL_SECURITY_INFORMATION}
PROTECTED_SACL_SECURITY_INFORMATION = ($40000000);
{$EXTERNALSYM PROTECTED_SACL_SECURITY_INFORMATION}
UNPROTECTED_DACL_SECURITY_INFORMATION = ($20000000);
{$EXTERNALSYM UNPROTECTED_DACL_SECURITY_INFORMATION}
UNPROTECTED_SACL_SECURITY_INFORMATION = ($10000000);
{$EXTERNALSYM UNPROTECTED_SACL_SECURITY_INFORMATION}
← →
Pearled © (2005-07-05 13:21) [11]Всем большое спасибо! С этим флагом все работает!
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c