![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Защита
Чапаев © (2007-02-24 09:04:00)Создаю дескриптор защиты
ConvertStringSecurityDescriptorToSecurityDescriptor(), преобразую его к абсолютномуMakeAbsoluteSD(), устанавливаю праваSetSecurityInfo()на процесс (и/или его основной поток). В качестве строки описания дескриптора задаюO:SYG:SYD:(A;;GA;;;SY)(D;;GA;;;BA). Все функции отрабатывают успешно. Но администратор по-прежнему может завершить процесс. Почему так?
Игорь Шевченко (2007-02-25 22:24:00) [1]совсем забыл, у админа может быть вклчена по умелчанию привилегия отладки. С этой привилегией права недействительны. Кроме того, в случае XP процесс может быть открыт с опцией WRITE_DACL для того, чтобы изменить его дексриптор безопасности, и после этого изменения процесс уже убивается вполне легально. Всем этим занимается Task Manager
Чапаев (2007-02-25 10:52:00) [2]Нету!
Игорь Шевченко (2007-02-25 10:10:00) [3]А унаследованных прав в ACL случаем нету ?
Чапаев (2007-02-25 08:33:00) [4]Скачал Process Explorer 10.2. Всё страньше и страньше, как говорила Алиса. В Security|Permissions|Advanced -- всё как было задумано: запретить - администраторы - полный доступ; разрешить - SYSTEM - полный доступ.
Даже когда средствами Process Explorer'а явно запрещаю доступ всем, через диспетчер задач можно завершить.
Чапаев (2007-02-25 08:12:00) [5]> [5] Игорь Шевченко © (24.02.07 22:11)
Хм... В имеющейся у меня версии 8.41 такого не вижу... Буду искать поновее.
Игорь Шевченко (2007-02-24 22:11:00) [6]Чапаев © (24.02.07 21:55) [3]
Ну вот, Built-in admins имеют, значит есть ACE, в котором есть SID админский. Я бы посмотрел полностью ACL (через тот же Process Explorer на вкладке Security|Permissions|Advanced - оно там все ACE показывает.
Чапаев (2007-02-24 22:00:00) [7]Ага... У главного потока DACL именно такой, как я назначил.
Чапаев (2007-02-24 21:55:00) [8]> А какой дескриптор получается в итоге ? (Точнее, какой ACL)
> ? (глянуть можно Process Explorer'ом)
Если я правильно понял про "глянуть Process Explorer'ом" (Properties -> Security), доступ имеют Built-in admins, Authenticated users и Everyone. Хотя GetSecurityInfo() выдаёт, что DACL имеено тот, какой я назначал.
> [2] Eraser © (24.02.07 21:13)
Буду пробовать...
Eraser (2007-02-24 21:13:00) [9]> [0] Чапаев © (24.02.07 09:04)
не понял, зачем вот это
> преобразую его к абсолютному MakeAbsoluteSD
Если нужно установить права для процесса, я бы действовал следующим образом:
1. Заполняем массив структур EXPLICIT_ACCESS, для кажной устанавливаем нужный SID (AllocateAndInitializeSid), нужные права доступа и т.д.
2. Содаем и заполняем DACL ф-цией SetEntriesInAcl, передав ей массив структур EXPLICIT_ACCESS.
3. Выполняем SetSecurityInfo с DACL_SECURITY_INFORMATION (или PROTECTED_DACL_SECURITY_INFORMATION, там смотря по обстоятельствам), передав ф-ции полученный ранее DACL.
Игорь Шевченко (2007-02-24 20:06:00) [10]
> Но администратор по-прежнему может завершить процесс. Почему
> так?
А какой дескриптор получается в итоге ? (Точнее, какой ACL) ? (глянуть можно Process Explorer'ом)