anonymous@RULINUX.NET~# Last login: 2024-12-23 13:07:35
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

сброить привелегии (impersonate) для потока

Привет!

Пишется кроссплатформенный сервер, в котором должна производиться работа от имени залогиненного на сервер пользователя. Пока архитектура сервера многопоточная. Возможно ли сбросить текущие привелегии и назначить другие привелегии (setuid/setgid или т.п.) в контексте каждого отдельного потока? В винде вроде как можно (ImpersonateSelf). Или только fork()? А винде нету fork() :-E

Или присоветуйте с архитектурой такого приложения.

anonymous(*) (2009-09-09 11:58:00)

Mozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)

[Ответить на это сообщение]
[#] [Добавить метку] [Редактировать] Ответ на: сброить привелегии (impersonate) для потока от anonymous 2009-09-09 11:58:00
avatar
Скрыть

Re: сброить привелегии (impersonate) для потока

Честно скажу что бессилен в этом вопросе. Спроси лучше на vingrad.ru или crossplatform.ru

Tux-oid(*)(2009-09-09 14:05:38)

Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5
[#] [Добавить метку] [Редактировать] Ответ на: сброить привелегии (impersonate) для потока от anonymous 2009-09-09 11:58:00
avatar
Скрыть

Re: сброить привелегии (impersonate) для потока

> В винде вроде как можно (ImpersonateSelf)

"The ImpersonateSelf function obtains an access token that impersonates the security context of the calling process." (c) http://msdn.microsoft.com/en-us/library/aa378729%28VS.85%29.aspx

Обрати внимание на "of the calling process".

Я бы очень удивился, если бы узнал, что где-то существует возможность задавать отдельных юзеров потокам.

anonymous(*)(2009-09-09 15:21:04)

[#] [Добавить метку] [Редактировать] Ответ на: Re: сброить привелегии (impersonate) для потока от anonymous 2009-09-09 15:21:04
avatar
Скрыть

Re: сброить привелегии (impersonate) для потока

Microsoft под словом Process видимо понимает несколько иное :)

В MSDN ниже читаем что:

"The ImpersonateSelf function is used for tasks such as enabling a privilege ***for a single thread rather than for the entire process*** or for changing the default discretionary access control list (DACL) for a single thread."

Так что? Есть ли альтернатива форку?

anonymous(*)(2009-09-09 15:39:54)

Mozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)
[#] [Добавить метку] [Редактировать] Ответ на: Re: сброить привелегии (impersonate) для потока от anonymous 2009-09-09 15:39:54
avatar
Скрыть

Re: сброить привелегии (impersonate) для потока

Хм.. Ну Х/З.. Посмотри может __clone позволяет из порождённого процесса setuid делать при сохранении общего адресного пространства. А может для конкретной задачи тебе достаточно man pthreads в сочетании с man 7 capabilities.

\me ощутил знакомый запах свежих, не бывших в употреблении ещё граблей..

anonymous(*)(2009-09-09 17:09:31)

[#] [Добавить метку] [Редактировать] Ответ на: Re: сброить привелегии (impersonate) для потока от anonymous 2009-09-09 17:09:31
avatar
Скрыть

Re: сброить привелегии (impersonate) для потока

capabilities Linux only :( Значит придется переделывать архитектуру приложения с пула потоков на пул процессов. Правда, в винде с процессами ахтунг какой-то, fork() она не понимает. Чешу репу :(

anonymous(*)(2009-09-09 20:46:20)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13
[#] [Добавить метку] [Редактировать] Ответ на: Re: сброить привелегии (impersonate) для потока от anonymous 2009-09-09 20:46:20
avatar
Скрыть

Re: сброить привелегии (impersonate) для потока

Хотя вру. Этож POSIX.1e! И вроде как имплементирован в FreeBSD, Solaris и Linux как минимум. Уже лучше. Заворачиваю man 7 capabilities в бумажку и затягиваюсь, спасибо :)

anonymous(*)(2009-09-09 20:59:02)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!