ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

политики безопасности в WinAPI
  #1  
Старый 07.12.2006, 05:12
Аватар для grinay
grinay
IQ- 137%
Регистрация: 15.06.2004
Сообщений: 441
Провел на форуме:
1212666

Репутация: 662
Отправить сообщение для grinay с помощью ICQ
По умолчанию политики безопасности в WinAPI

вопрос. С помощью какой функции WinAPI можно выставить политики безопасности к какталогу тоесть пользоватей группы и их права??
__________________

 
Ответить с цитированием

  #2  
Старый 07.12.2006, 10:41
Аватар для Deem3n®
Deem3n®
Постоянный
Регистрация: 19.09.2005
Сообщений: 408
Провел на форуме:
3730496

Репутация: 519
По умолчанию

SetFileSecurity/SetNamedSecurityInfo
ссылка по теме
 
Ответить с цитированием

  #3  
Старый 07.12.2006, 13:20
Аватар для TaNkist
TaNkist
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме:
367179

Репутация: 76
По умолчанию

Вот пример, разрешяющий всем читать, запись, выполнять файл:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
 pSD : PSECURITY_DESCRIPTOR;
 pDACL : PACL;
 aclInfo : ACL_SIZE_INFORMATION;
 ace : ^ACCESS_ACE;
 sid  : PSID;
 i : Integer;
 user, domain : array [0..200] of char;
 len: DWORD;
 sid_nu : SID_NAME_USE;
 newAcl : TListItem;
 actions:String;

 sidLength, sidLengthDomain: Cardinal;
 sidType: SID_NAME_USE;
 sidValue: PSID;
 domain1:PChar;
 pNewDACL : PACL;
 pNewSD : PSECURITY_DESCRIPTOR;
 newSize:Integer;
begin
 aclListView.Items.Clear;
 if (GetNamedSecurityInfo(PChar(Edit1.Text), SE_FILE_OBJECT,
       DACL_SECURITY_INFORMATION, nil, nil, PACL(@pDACL), nil,
       pSD)<>ERROR_SUCCESS) then
  begin
   ShowMessage('Ошибка');
   exit;
  end;

 if (pDACL=nil) then
  begin
   ShowMessage('Список доступа пуст');
   exit;
  end;

 if (not GetAclInformation(pDACL^, @aclInfo, sizeOf(aclInfo),
      AclSizeInformation)) then
  begin
   ShowMessage('Не получилось определить информацию об ACL');
   exit;
  end;

 // Опредеяем SID пользователя, которому нужно дать разрешение
 sidLength:=0;
 sidLengthDomain:=0;
 LookupAccountName(nil, 'everyone', nil, sidLength, nil, sidLengthDomain, sidType);
 sidValue := AllocMem(sidLength);
 domain1 := AllocMem(sidLengthDomain);
 if (LookupAccountName(nil, 'everyone', sidValue, sidLength, domain1, sidLengthDomain, sidType)=false) then
  exit;
 // Выделяем память под новую таблицу
 newSize:=AclInfo.AclBytesInUse + sizeof(ACCESS_ACE) + GetLengthSid(sidValue);
 pNewDACL:=PACL(LocalAlloc(LPTR, newSize));
 if not InitializeAcl(pNewDACL^, newSize, 2) then
  exit;

 for i:=0 to aclInfo.AceCount-1 do
  begin
   if not (GetAce(pDACL^, i, Pointer(ace))) then
    continue;

   newAcl:=aclListView.Items.Add;

   sid := PSID(@((ace)^.SidStart));
   len := 200;
   if (LookupAccountSid(nil, sid, user, len,
             domain, len, sid_nu)) then
    begin
     newAcl.Caption:=user;
     newAcl.SubItems.Add(domain)
    end
   else
    begin
     newAcl.Caption:='Лажа';
     newAcl.SubItems.Add('Лажа')
    end;

   case (ace^.Header.AceType) of
    ACCESS_ALLOWED_ACE_TYPE: newAcl.SubItems.Add('Разрешено');
    ACCESS_DENIED_ACE_TYPE: newAcl.SubItems.Add('Запрещено');
    else newAcl.SubItems.Add('Другое');
   end;

   actions:='';
   if (ace^.Header.AceType=ACCESS_ALLOWED_ACE_TYPE) or
      (ace^.Header.AceType=ACCESS_DENIED_ACE_TYPE) then
    begin
     if (ace^.Mask and $1)=1 then
      actions:=actions+' Чтение';
     if (ace^.Mask and $2)=2 then
      actions:=actions+' Запись';
     if (ace^.Mask and $4)=4 then
      actions:=actions+' Выполнение';
    end;
   newAcl.SubItems.Add(actions);

   // Добавляем запись в новый список
   if not AddAce(pNewDACL^, 2, MAXWORD, ace, ace.Header.AceSize) then
    exit;
  end;

 // Добавляем ещё одну разрешающую запись
 if not AddAccessAllowedAce(pNewDACL^, 2, GENERIC_ALL, sidValue) then
  exit;

 // Инициализируем новый дескриптор
 pNewSD := PSECURITY_DESCRIPTOR(LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH));
 if not InitializeSecurityDescriptor(pNewSD, SECURITY_DESCRIPTOR_REVISION) then
  exit;

 // Устанавливаем дескриптору новый ACL список
 if not SetSecurityDescriptorDacl(pNewSD, TRUE, pNewDACL, FALSE) then
  exit;

 // Устанавливаем дескриптор файлу 
 if not SetFileSecurity(PChar(Edit1.Text), DACL_SECURITY_INFORMATION, pNewSD) then
  exit;
end;
//(c) flenov
 
Ответить с цитированием

  #4  
Старый 07.12.2006, 14:48
Аватар для Brun
Brun
Участник форума
Регистрация: 21.03.2006
Сообщений: 117
Провел на форуме:
629074

Репутация: 137
Отправить сообщение для Brun с помощью ICQ
По умолчанию

Это не подойдёт? http://www.vclcomponents.com/Delphi/Components_Collection/NTSet-info.html
 
Ответить с цитированием

  #5  
Старый 11.12.2006, 15:33
Аватар для grinay
grinay
IQ- 137%
Регистрация: 15.06.2004
Сообщений: 441
Провел на форуме:
1212666

Репутация: 662
Отправить сообщение для grinay с помощью ICQ
По умолчанию

Всем пасиб но эт не много не то уже сам разобрался.
__________________

 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ по выделенным серверам †Romi4† Авторские статьи 4 31.08.2009 16:19
FAQ по выделенным серверам (Dedicated Servers) byte57 Чужие Статьи 4 16.11.2006 22:03
В Microsoft сменится вице-президент по вопросам безопасности dinar_007 Мировые новости 0 27.03.2006 16:32
"Лаборатория Касперского" организует конференцию по информационной безопасности... dinar_007 Мировые новости 1 15.03.2006 12:30
Меры защиты информационной безопасности foreva Чужие Статьи 0 06.02.2005 19:33



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ