Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Права админа   Найти похожие ветки 

 
Керик   (2004-07-24 17:57) [0]

Как определить наличие прав администратора в текущей учётной записи?


 
Бином Ньютоныч   (2004-07-24 19:02) [1]

Только между нами: все администраторы входят во встроенную группу Administrators. Но это страшная тайна!


 
N170   (2004-07-24 19:16) [2]

IsAdminUser() в Windows XP и выше..


 
Керик   (2004-07-24 19:22) [3]

Для N170: Я не нашёл IsAdminUser(). В каком модуле?


 
VMcL ©   (2004-07-24 20:10) [4]

>>N170  (24.07.04 19:16) [2]

Где взял?

http://search.microsoft.com/search/results.aspx?qu=IsAdminUser&View=msdn&st=b&c=4&s=1&swc=4


 
Бином Ньютоныч   (2004-07-24 20:44) [5]

function AllocateTokenInformation(Token: THandle;
 TokenClass: TTokenInformationClass): Pointer; stdcall;
var
 Size, Res: Cardinal;
begin
 Result:=nil; Size:=0;
 repeat
   Result:=CoTaskMemRealloc(Result, Size);
   if GetTokenInformation(Token, TokenClass, Result, Size, Size) then
     Res:=ERROR_SUCCESS else Res:=GetLastError;
 until Res <> ERROR_INSUFFICIENT_BUFFER;
 if (Res <> ERROR_SUCCESS) and (Result <> nil) then
 begin
   CoTaskMemFree(Result);
   Result:=nil;
 end;
 SetLastError(Res);
end;

function IsAdminUser: boolean;
const
 sAdmGroup = "S-1-5-32-544"#0;
var
 n: integer;
 CurToken: THandle;
 Groups: PTokenGroups;
 AdmGroupSid: PSID;
begin
{$R-}
 Result:=OpenProcessToken(GetCurrentProcess, TOKEN_ALL_ACCESS, CurToken);
 if not Result then RaiseLastOsError;
 Groups:=AllocateTokenInformation(CurToken, TokenGroups);
 if Groups = nil then RaiseLastOsError;
 try
   Result:=ConvertStringSidToSidA(@sAdmGroup[1], AdmGroupSid);
   if Result then
   try
     Result:=not Result;
     for n:=0 to Pred(Groups.GroupCount) do
     begin
       Result:=EqualSid(AdmGroupSid, Groups.Groups[n].Sid);
       if Result then Break;
     end;
   finally
     LocalFree(Cardinal(AdmGroupSid));
   end;
 finally
   CoTaskMemFree(Groups);
 end;
{$R+}
end;


 
Anatoly Podgoretsky ©   (2004-07-24 20:45) [6]

Бином Ньютоныч   (24.07.04 19:02) [1]
Не совсем так, могут и не входить.


 
Anatoly Podgoretsky ©   (2004-07-24 20:47) [7]

И даже если быть точнее, то чаще не входят, это глобальная группа и не желания включать в нее кого ни попала. Для этого существуют более подходящии группы, Domain Admins, Local Admins
Но и это не обязательно.


 
Бином Ньютоныч   (2004-07-24 20:49) [8]

>Anatoly Podgoretsky ©   (24.07.04 20:45) [6]

Чрезвычайно интересно! Подробней можно? Я с таким не встречался. Откуда инфа? Если из опыта, то как восроизвести?


 
Бином Ньютоныч   (2004-07-24 20:53) [9]

>Anatoly Podgoretsky ©   (24.07.04 20:47) [7]

:(
MSDN:
Administrators: "A built-in group. After the initial installation of the operating system, the only member of the group is the Administrator account. When a computer joins a domain, the Domain Admins group is added to the Administrators group. When a server becomes a domain controller, the Enterprise Admins group also is added to the Administrators group.
The Administrators group has built-in capabilties that give its members full control over the system. The group is the default owner of any object that is created by a member of the group.
"


 
Anatoly Podgoretsky ©   (2004-07-24 20:54) [10]

Вот видишь, сам и подтверждаешь, что это не догма.


 
Бином Ньютоныч   (2004-07-24 21:07) [11]

Не, я IsAdminUser прям счас писал, под действием паров пива, так что творчески на нее взгляните:)
>Anatoly Podgoretsky ©   (24.07.04 20:54) [10]

Не понял. По-моему - наоборот. Я вообще-то не админ... А как еще, без включения в группу Administrators дать юзеру права админа? Нет, меня правда это очень интересует!


 
Anatoly Podgoretsky ©   (2004-07-24 21:13) [12]

Зато я админ.
Админ может удалить администратора из любой группы и наиболее частый случай, когда удаляется группы Domain Admins и Enterprise Admins. Точно такое же может делаться для конкретного админа, что бы на него не распространялись права группы, а только его личные права.
На всякий случай администратор это точно такой же обычный пользователь, которому предоставлены дополнительные права. И я первое что делаю удаляю предопределенного админстратора из всех групп.


 
Керик   (2004-07-24 21:27) [13]

Господа! Надо, чтобы при запуске моей программы (или при запуске инсталляшки с этой же программой) определялось наличие прав администратора в текущей учётной записи. Если таких прав нет, то выдать соответствующий MessageBox. Сейчас появляется Access Violations...


 
Бином Ньютоныч   (2004-07-24 21:28) [14]

Так, что-то проясняется. Возникает вопрос - кто такой администратор? Т.е. у него остаются права группы, но в группу он не входит? Если он не входит в группу Administrators, то как он рулит системой?  Сервисами, DCOM, COM+ etc?. На новые компоненты его права распространяются? Что, ему нужно вручную давать разрешения на каждый объект? Или создана новая группа? А чем она отличается от Administrators? Чего-то не понимаю? И в чем глобальный смысл этого действа? Против чего оно направлено?


 
Anatoly Podgoretsky ©   (2004-07-24 21:37) [15]

Бином Ньютоныч   (24.07.04 21:28) [14]
Нет у него остаются свои права, которые могут совпадать и не совпадать с группой. Зато например права назначенные права на папку для группы administrators на него распространяться не будут.
Многие эксплоиты расчитывают на то что пользователь Administator входит в группу administrators и тут облом. Конечно можно бы было его удалить совсем, но это резервная запись.


 
Бином Ньютоныч   (2004-07-24 21:50) [16]

>Anatoly Podgoretsky ©   (24.07.04 21:37) [15]

Я все-таки не совсем понимаю. Ну допустим, я пишу червя. Мне параллельно, в какую группу входит текущий юзер, лишь бы он пустил меня ... ну например в реестр. Как здесь поможет удаление из группы? Хоте, если юзер запросто ходит по сети с админскими правами и с не прикрытыми дырами, то это, имхо, проблема генетическая, а не техническая. Не согласны? И как все-таки с управлением системой, т.е. с админскими обязанности?


 
Polevi ©   (2004-07-24 21:56) [17]

да какая разница как назвать админ или еще как
насторить можно как угодно
если API вызов привел к ACCESS_DENIED - не судьба


 
Бином Ньютоныч   (2004-07-24 22:03) [18]

>Polevi ©   (24.07.04 21:56) [17]

Дык, вроде не про название базар, а?


 
Polevi ©   (2004-07-24 22:25) [19]

а что такое "наличие прав администратора " ?
это постоянная величина разве ?


 
Бином Ньютоныч   (2004-07-24 22:35) [20]

>Polevi ©   (24.07.04 22:25) [19]

Для меня - вхождение в группу Administrators. Как для других - не знаю:(


 
Polevi ©   (2004-07-24 22:41) [21]

ну входишь ты в эту группу
я политиками безопасности ограничу тебе доступ к нужному тебе ресурсу..
и что ты делать будешь
[17] самый правильный способ :)


 
Бином Ньютоныч   (2004-07-24 22:54) [22]

>Polevi ©   (24.07.04 22:25) [19]

Ну, брат, какой же это администратор? Зачем он такой? Администратор - тот, который обладает правами группы. Кто может устаналивать/удалять/настраивать системные компоненты. Можно из из трактора теплоход сделать...и ведь делают! А зачем? Накуролесить можно всякого, только какое это имеет отношение к серьезным приложениям?


 
Polevi ©   (2004-07-24 23:04) [23]

знаешь по всякому бывает... если человек владеет ноутбуком к примеру (на работе дали поюзать )-то есть только он на нем работает то с одной строны логично дать ему права администратора.. а с другой стороны какой из него админитсратор..
однако для софтин которые он юзает это может быть необходимим
вот тут политики приходят на помощб :)


 
Бином Ньютоныч   (2004-07-24 23:09) [24]

Есть система безопасности операционной системы. Она устанавливает определенную идеалогию защиты. Отходить от нее из каких-то собственных умозрительных заключений - значит подвергать систему дополнительной опасности и наживать себе геморрой, что мы и наблюдаем на многочисленных примерах. Прав администратора должно быть достаточно для, например, установки любых компонентов системы. Либо их хватает, либо это - не администратор. Так установлено в идеалогии защиты Windows. Приложение, использующее защиту ОС не может не ориентироваться на предопределенную идеалогия - у него просто нет выбора, оно не может предвидеть все возможные бздыки админов. Если Вы создали собственную модель, то все проблемы - это только Ваши проблемы. Все, пошел спать:)


 
Anatoly Podgoretsky ©   (2004-07-24 23:11) [25]

Администратор это сложное понятие, смутное.
На новелл 3 был супервизор, вот это был человек, который обладал бессметной властью, бессмертный. Администратор же это простой пользователь обладающий некоторыми правами, его также можно удалить, как и другого пользователя.
Для указаной задачи совсем не надо знать является ли админстратор конкретный пользователь, гораздо важнее может он выполнить указаную задачу или нет, а для этого достаточно обрабатывать исключения.
Конечно в АПИ что то есть по этому поводу, но оно не нужно в данном случае.


 
Бином Ньютоныч   (2004-07-24 23:22) [26]

Нет, не удержался:). Polevi, друг мой, если юзерскому софту в работе необходимы админские права, то место такому софту - в корзине, и нигде более. Уж извини, если что. Все, теперь точно - спать:)


 
Polevi ©   (2004-07-25 10:34) [27]

> [26] Бином Ньютоныч   (24.07.04 23:22)
полностью согласен насчет корзины.. но иногда нет выбора
к примеру системы банк-клиент я такие видел что восоы дыбом.. и что прикажешь - идти к руководству с предложением банк менять ?
такова жизнь, друг мой ньютоныч :)


 
Anatoly Podgoretsky ©   (2004-07-25 10:41) [28]

Обычно расправа короткая, но к сожалению и такие случаи бывают.


 
Бином Ньютоныч   (2004-07-25 10:47) [29]

>Polevi ©   (25.07.04 10:34) [27]

Да уж, что правда, то правда:( Воистину "Мы рождены, чтоб сказку сделать былью" И чем страшнее сказка, тем больше вероятность ее превращения в реальность. Почему так происходит, я, видимо, уже никогда не пойму:( Слава Богу, я имею дела только с железными и стеклянными банками:)


 
Piter ©   (2004-07-25 17:19) [30]

смотря какие эксплоиты... MsBlast аттаковал сервис svchost и права текущего юзера в системе абсолютно не важны... да и вообще под конкретным пользователем обычно не запускается чего-то серверного (что можно аттаковать) - так какая тогда нафиг разница кто сейчас за компом - обычный юзер или администратор.


 
Polevi ©   (2004-07-25 17:28) [31]

> [30] Piter ©   (25.07.04 17:19)
все эксплоиты мерещатся ? ты эта.. береги себя, гуляй на воздухе побольше
а то знаешь, сначала навязчивые идеи, потом раздвоение личности...



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

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.029 c
1-1092984256
nicesc
2004-08-20 10:44
2004.09.05
Работа во времени


1-1093007891
iBitmap
2004-08-20 17:18
2004.09.05
cm_mouseleave при MouseDown


1-1092815953
TMenuItem
2004-08-18 11:59
2004.09.05
Как расположить пункт ....


4-1090572558
Proger
2004-07-23 12:49
2004.09.05
Позиция курсора


1-1093017618
Скромный инкогнито
2004-08-20 20:00
2004.09.05
Как написать маленькую программу?