Re: Выполнить LoadUserProfile не имея прав администратора
От: Alexey Frolov Беларусь  
Дата: 12.06.08 11:07
Оценка: +1
Здравствуйте, alexkz, Вы писали:

A>Есть задача: выполнить имперсонацию потока с загрузкой профиля пользователя имея только права обычного пользователя (не администратора).


A>Вызов функции LoadUserProfile из под обычного пользователя завершается ошибкой: code=1314, "Клиент не обладает требуемыми правами", оно и понятно:

A>[msdn]The calling process must have the SE_RESTORE_NAME and SE_BACKUP_NAME privileges.
A>Starting with Windows XP SP2 and Windows Server 2003, the caller must be an administrator or the LocalSystem account.
A>[/msdn]

A>Подскажите как правильно обойти ограничение функции LoadUserProfile? Ведь команда "RunAs" в проводнике работает из под обычного пользователя! Предполагаю, что она использует сервис "Вторичный вход в систему", возможно ли его задействовать для решения моей задачи? его API?


Возможно я неправильно все понял, но то что вы хотите сделать (при осуществимости идеи) было бы большой дырой в системе безопасности виндовс. Зачем городить всю эту защиту если любой пользователь может получить права какие захочет вот так вот запросто. Может вы имеете пароль администратора?
Выполнить LoadUserProfile не имея прав администратора
От: alexkz Казахстан  
Дата: 12.06.08 04:48
Оценка:
Есть задача: выполнить имперсонацию потока с загрузкой профиля пользователя имея только права обычного пользователя (не администратора).

Вызов функции LoadUserProfile из под обычного пользователя завершается ошибкой: code=1314, "Клиент не обладает требуемыми правами", оно и понятно:
[msdn]The calling process must have the SE_RESTORE_NAME and SE_BACKUP_NAME privileges.
Starting with Windows XP SP2 and Windows Server 2003, the caller must be an administrator or the LocalSystem account.
[/msdn]

Подскажите как правильно обойти ограничение функции LoadUserProfile? Ведь команда "RunAs" в проводнике работает из под обычного пользователя! Предполагаю, что она использует сервис "Вторичный вход в систему", возможно ли его задействовать для решения моей задачи? его API?
Re: Выполнить LoadUserProfile не имея прав администратора
От: TarasCo  
Дата: 12.06.08 06:35
Оценка:
A>Подскажите как правильно обойти ограничение функции LoadUserProfile? Ведь команда "RunAs" в проводнике работает из под обычного пользователя! Предполагаю, что она использует сервис "Вторичный вход в систему", возможно ли его задействовать для решения моей задачи? его API?

Можете использовать ф. CreateProcessWithLogonW — именно она использует службу "вторичный вход в систему". Но тут есть маленький нюанс — вам нужно знать пароль администратора.
Да пребудет с тобою сила
Re[2]: Выполнить LoadUserProfile не имея прав администратора
От: alexkz Казахстан  
Дата: 12.06.08 08:50
Оценка:
Здравствуйте, TarasCo, Вы писали:

A>>Подскажите как правильно обойти ограничение функции LoadUserProfile? Ведь команда "RunAs" в проводнике работает из под обычного пользователя! Предполагаю, что она использует сервис "Вторичный вход в систему", возможно ли его задействовать для решения моей задачи? его API?


TC>Можете использовать ф. CreateProcessWithLogonW — именно она использует службу "вторичный вход в систему". Но тут есть маленький нюанс — вам нужно знать пароль администратора.


Не могу, т.к. мне не нужно запускать процесс (вообще нет никакого другого процесса).
Программа должна иметь возможность одновременно выполнять некоторые функции с правами разных пользователей. Представь менеджер по управлению некими сервисами которые находятся на разных машинах, для каждого сервиса назначен свой администратор.
Сейчас алогоритм такой:
  1. Cоздается новый поток
  2. Вызываю ф. LogonUser, указываю пользователя который имеет права управления моим сервисом.
  3. Вызываю ф. LoadUserProfile, загружаю профиль пользователя
  4. Вызываю ф. ImpersonateLoggedOnUser
  5. [делаю то, что мне нужно с сервисом]
Все бы замечательно, но LoadUserProfile требует права администратора на машине Вот как обойти это ограничение я и ломаю голову

И если CreateProcessWithLogonW использует службу "Вторичный вход в систему (Secondary Logon)" то она не должна требовать прав администратора, иначе зачем служба вообще..

Спасибо за ответ!
Re[3]: Выполнить LoadUserProfile не имея прав администратора
От: Аноним  
Дата: 12.06.08 09:19
Оценка:
A>И если CreateProcessWithLogonW использует службу "Вторичный вход в систему (Secondary Logon)" то она не должна требовать прав администратора, иначе зачем служба вообще..
CreateProcessWithLogonW не требует прав админа. Она просто просит сервис сделать LogonUser/LoadUserProfile/CreateProcessAsUser на нужный ехешник
Re[2]: Выполнить LoadUserProfile не имея прав администратора
От: alexkz Казахстан  
Дата: 12.06.08 11:35
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:

A>>Есть задача: выполнить имперсонацию потока с загрузкой профиля пользователя имея только права обычного пользователя (не администратора).

A>>Подскажите как правильно обойти ограничение функции LoadUserProfile? Ведь команда "RunAs" в проводнике работает из под обычного пользователя! Предполагаю, что она использует сервис "Вторичный вход в систему", возможно ли его задействовать для решения моей задачи? его API?

AF>Возможно я неправильно все понял, но то что вы хотите сделать (при осуществимости идеи) было бы большой дырой в системе безопасности виндовс. Зачем городить всю эту защиту если любой пользователь может получить права какие захочет вот так вот запросто. Может вы имеете пароль администратора?


Пароля администратора я не имею, иначе все просто.
НО есть такая функиция CreateProcessWithLogonW (см. ответы), она в том числе выполняет загрузку профиля, не имея при этом прав администратора. Делает она это используя виндовый сервис seclogon, запущеный от учетки LocalSystem. И это не является дырой в безопасности, я не получу права админа или системы, процесс будет запущен с правами того пользователя которого я указал.

Мне нужно подобное поведение для потока, без запуска exe-шника.
Re[3]: Выполнить LoadUserProfile не имея прав администратора
От: Сергей  
Дата: 14.06.08 01:20
Оценка:
Здравствуйте, alexkz, Вы писали:

A>Мне нужно подобное поведение для потока, без запуска exe-шника.


Думаю, если бы это было возможно без добавления дыр в безопасности, то специальную службу для запуска процессов от имени нужного пользователя делать бы не стали.
Re[4]: Выполнить LoadUserProfile не имея прав администратора
От: Аноним  
Дата: 14.06.08 14:32
Оценка:
С>Думаю, если бы это было возможно без добавления дыр в безопасности, то специальную службу для запуска процессов от имени нужного пользователя делать бы не стали.
одно дело — запуск процессов по токену, другое — по імені/паролю
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.