
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Здравствуйте
![]() Я сделал запрет вот таким образом: ![]() ![]() PSECURITY_DESCRIPTOR pSD; PSID pSID; PACL pDACL; ULONG lErr = GetNamedSecurityInfo( "C:\\Test\\Test.txt", SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, &pSID, NULL, &pDACL, NULL, &pSD); if(lErr != ERROR_SUCCESS) ShowMessage("ERORR"); SetNamedSecurityInfo( "C:\\Test\\Tost.txt", SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, pSID, NULL, pDACL, NULL); Файл Test запрещен всем. Все работает, но не таскать же мне этот файл как шаблон. Если бы я мог знать значения двух этих структур... |
Сообщ.
#2
,
|
|
|
Люди....Вообще ни кто не знает
![]() ![]() |
Сообщ.
#3
,
|
|
|
http://msdn.microsoft.com/ru-ru/library/ms717798 - пример создания структуры DACL, все что тебе нужно - модифицировать функцию под свои нужды.
http://msdn.microsoft.com/ru-ru/library/aa446595.aspx - пример создания SECURITY_DESCRIPTOR структуры, которая включает в себя DACL, можешь создать новый или модифицировать существующий. Плюс если будет разработка под Windows старше XP - можно ещё Windows Integrity Mechanism использовать, описание - http://msdn.microsoft.com/ru-ru/library/bb625963.aspx |
Сообщ.
#4
,
|
|
|
Спасибо большое за направление
![]() |
Сообщ.
#5
,
|
|
|
есть ещё стандартные утилиты для модификации прав доступа: cacls.exe - на XP и icacls.exe на Vista/7
|
Сообщ.
#6
,
|
|
|
Спасибо за информацию, но эта прога будет работать как на ХР, так и на семерке, так что надо сделать универсальную).А еще в дополнение - нашел на форумах вот такую инфу - можно написать драйвер фильтр фс. Если не сложно можете объяснить будет ли он лучше и вообще есть ли смысл в этом направлении двигаться. Просто хочется разобраться в этом вопросе как можно глубже.
|
Сообщ.
#7
,
|
|
|
если есть желание и время стоит. чем ниже установлена система защиты, тем сложнее ее обойти, однако поддержка и разработка кода, основанного на стандартных механизмах системы, проще, чем разработка собственного драйвера фильтра файловой системы.
|
Сообщ.
#8
,
|
|
|
Что-то не могу сообразить
![]() ![]() ![]() ![]() DWORD dwRes, dwDisposition; PSID pEveryoneSID = NULL, pAdminSID = NULL; PACL pACL = NULL; PSECURITY_DESCRIPTOR pSD = NULL; EXPLICIT_ACCESS ea[2]; SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY; SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY; SECURITY_ATTRIBUTES sa; LONG lRes; HKEY hkSub = NULL; // Create a well-known SID for the Everyone group. if(!AllocateAndInitializeSid(&SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pEveryoneSID)) { ShowMessage("AllocateAndInitializeSid Error %u\n"); goto Cleanup; } // Initialize an EXPLICIT_ACCESS structure for an ACE. // The ACE will allow Everyone read access to the key. ZeroMemory(&ea, 2 * sizeof(EXPLICIT_ACCESS)); ea[0].grfAccessPermissions = FILE_ALL_ACCESS ; ea[0].grfAccessMode = SET_ACCESS; ea[0].grfInheritance= NO_INHERITANCE; ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID; ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP; ea[0].Trustee.ptstrName = (LPTSTR) pEveryoneSID; // Create a SID for the BUILTIN\Administrators group. if(!AllocateAndInitializeSid(&SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pEveryoneSID)) { ShowMessage("AllocateAndInitializeSid Error %u\n"); goto Cleanup; } // Initialize an EXPLICIT_ACCESS structure for an ACE. // The ACE will allow the Administrators group full access to // the key. ea[1].grfAccessPermissions = NULL ; ea[1].grfAccessMode = SET_ACCESS; ea[1].grfInheritance= NO_INHERITANCE; ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID; ea[1].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP; ea[1].Trustee.ptstrName = (LPTSTR) pEveryoneSID; // Create a new ACL that contains the new ACEs. dwRes = SetEntriesInAcl(2, ea, NULL, &pACL); if (ERROR_SUCCESS != dwRes) { ShowMessage("SetEntriesInAcl Error %u\n"); goto Cleanup; } Cleanup:; SetNamedSecurityInfo( "C:\\Test\\Test.txt", SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, pEveryoneSID , NULL, pACL, NULL); |
Сообщ.
#9
,
|
|
|
![]() ![]() ea[0].grfAccessPermissions = FILE_ALL_ACCESS ; ea[0].grfAccessMode = DENY_ACCESS; ea[0].grfInheritance= NO_INHERITANCE; ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID; ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP; ea[0].Trustee.ptstrName = (LPTSTR) pEveryoneSID; попробуй так |
Сообщ.
#10
,
|
|
|
Спасибо тебе большое за помощь. Все получилось. Тему можно закрыть.
|
Сообщ.
#11
,
|
|
|
на будущее, чтобы напрямую с структурами не возиться можешь использовать функции: AddAccessDeniedAce(Ex), AddAccessAllowedAce(Ex)
|
Сообщ.
#12
,
|
|
|
Возник вопрос. Видимо я что то не понимаю, но если делать так:
![]() ![]() PSECURITY_DESCRIPTOR pSD; PACL pDACL, pDACL2, pDACL3; ULONG lErr = GetNamedSecurityInfo(TEXT("C:\\123\\111.rtf"), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pDACL, NULL, &pSD); SetNamedSecurityInfo( "C:\\123\\111.rtf", SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL , NULL, pDACL, NULL); lErr = GetNamedSecurityInfo(TEXT("C:\\123\\111.rtf"), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pDACL2, NULL, &pSD1); if (lErr != ERROR_SUCCESS) ShowMessage("fale"); if(&pDACL == &pDACL2) ShowMessage("vse ok"); else ShowMessage(":("); то pDACl и pDACL2 не равны. Почему так происходит? Ведь они должны быть одинаковые. В чем я не прав? |
Сообщ.
#13
,
|
|
|
Sorry за оффтоп
А кто-нибудь работал с директориями типа $Extend ? Есть смысл пытаться или "овчинка выделки не стоит" ? |
![]() |
Сообщ.
#14
,
|
|
Мыщъх отсылает к Linux-NTFS Project. Правда, предупреждает о некоторых ошибках.
|
Сообщ.
#15
,
|
|
|
Цитата Qraizer @ Мыщъх отсылает к Linux-NTFS Project. Правда, предупреждает о некоторых ошибках. Это я заню. Более того работаю с ними, но только на уровне чтения (из юзер мод) Под версиями ниже Висты возможна и запись (из юзер мод) Меня интересует вопрос: возможно ли там (пусть мы драйвер) хранить данные, не испортив систему ? Если да, то насколько это сложно или как в обычной директории ? --- Спрашиваю потому, что надо заранее оценить трудозатраты. А если у меня получилось один раз на моей машине, то это вовсе не означает, что так будет везде ![]() Добавлено Цитата Riply @ Меня интересует вопрос: возможно ли там (пусть мы драйвер) хранить данные, не испортив систему ? Если да, то с какими именно |