Есть ли аналог SU для Windows

32

Есть ли способ (при входе в систему в качестве администратора или члена группы администраторов) маскироваться под непривилегированного пользователя? Особенно в среде AD.

например, в мире Unix я мог бы сделать следующее (как root):

# whoami
root
# su johnsmith
johnsmith> whoami
johnsmith
johnsmith> exit
# exit

Мне нужно что-то проверить / настроить в учетной записи пользователя, и я не хочу знать его пароль или менять его.

Изменить:
runas не будет сокращать это. В идеале весь мой рабочий стол должен стать пользователем и т. Д., А не только в окне cmd.

BIBD
источник
Просто любопытно, а зачем вам входить как пользователь? Обычно мне нужно сделать это только для настройки электронной почты. Тем не менее, я обнаружил, что большую часть времени я могу настроить все через групповую политику / сценарии / и т.д.
Дейтон Браун

Ответы:

20

Я почти уверен, что не существует поддерживаемого способа работать от имени другого пользователя без учетных данных этого пользователя. Это безотказная мера. Кто-то не может сказать: «Я этого не делал», потому что либо они это сделали, либо кто-то со своими полномочиями сделал это. И на секунду они должны были бы дать другому человеку полномочия.

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

Все остальное обычно можно сделать с помощью GPO / скриптов.

Orihara
источник
8
Я считаю, что это правильно. И, IMHO, это улучшение безопасности в мире UNIX. Мне нравится идея, что даже мой админ не может быть мной без моего пароля.
Tomjedrz
3
Администратор может перехватить другого пользователя, сбросив его пароль. Тогда они могут войти как вы. Тем не менее, если вы делаете это, есть след доказательств. Во-первых, пароль пользователя был изменен, чтобы они знали. Во-вторых, будут журналы аудита (при условии, что аудит включен).
Эрик Фанкенбуш
3
Как правило, я тоже так действую. Тем не менее, есть моменты, которые я говорю: «Было бы намного проще сделать это для Боба, если бы я был Бобом», но Боб вернулся домой час назад.
BIBD
1
Что касается «безотказности», то если я сначала переустановлю их пароль, это не остановит меня от совершения злонамеренных / глупых действий от имени другого пользователя. Это просто означает, что мне придется проделать больше работы, чтобы скрыть, кто был ответственным.
BIBD
9
Я понимаю, что они пытаются сделать. Я просто думаю, что это скорее театр безопасности, чем реальная безопасность.
BIBD
17

Я заметил, что многие другие люди упоминали о вариациях команды runas и о том, как вам нужно знать пароль пользователя, что является правдой, но я не думаю, что кто-то тихо ответил на вопрос. «желая, чтобы весь рабочий стол стал пользователем и т. д., а не только в окне cmd». Вот как я это делаю:

Примечание : я собираюсь ссылаться на эту первую командную строку как CP1, чтобы позже избежать путаницы.

Под учетной записью администратора откройте командную строку

Для локального аккаунта

runas /profile /user:computernamehere\username cmd

Для учетной записи домена

runas /profile /user:domainname\username cmd

ИЛИ способ, которым я предпочитаю это

runas /profile /user:username@domainname cmd

Примечание. Откроется новая командная строка (CP2). Это пользователь, с которым вы пытаетесь войти.

Откройте CP1 и введите:

taskkill /f /IM explorer.exe

Откройте CP2 и введите:

explorer.exe

В зависимости от компьютера, он может создать профиль для пользователя, если он никогда не входил там ранее. Вы можете сэкономить время, оставив окна командной строки открытыми для последующего использования.

Когда вы закончите со своей работой, просто сделайте то же самое в обратном порядке.

В типе CP2:

taskkill /f /IM explorer.exe

Откройте CP1 и введите:

explorer.exe

Теперь вы должны вернуться к первоначальной учетной записи администратора. Вы можете сделать быструю проверку, нажав клавишу Windows и ища текущую панель пользователя.

Надеюсь, это помогло.

Майкл Х
источник
3
Это какая-то глубокая магия.
mskfisher
@mskfisher Ха-ха, если вы думаете, что это безумие, вы должны увидеть, что я должен был сделать, чтобы выяснить, как завершить сеанс psexec, заблокированный после выполнения неверной команды wmic. ... Pskill из второй командной строки, указывающей на удаленный компьютер, после использования psservices для отслеживания идентификатора процесса для psexec в первой командной строке!
Майкл Х
Через 4 года мне напомнили об этом вопросе, и когда я успел это проверить. ВОТ ЭТО ДА!
BIBD
В Windows 10 при использовании runas запрашивается пароль пользователя.
TheAmigo
7

В Windows нет встроенного механизма для этого. Это может быть сделано, но вам нужно будет что-то написать, чтобы делать то, что вы хотите, и вам, вероятно, придется возиться с недокументированными API.

Один из постеров здесь, grawity, имеет право без вызова CreateProcessAsUser (), но сначала вам нужно будет создать токен с недокументированным нативным API zwCreateToken. Если вы убили Проводник и запустили новый экземпляр Проводника с CreateProcessAsUser (), я вполне уверен, что вы получите то, что хотите.

Microsoft не делает то, что вы хотите, легко, потому что не так, как они хотят, чтобы вы использовали NT. Если вам нужно войти в систему как пользователь для устранения проблем, в большинстве случаев вы решаете эту проблему неоптимальным образом.

Вы можете вносить изменения в реестр пользователя, не входя в систему как они (прикрепляя куст реестра и манипулируя им таким образом). Вы можете вносить изменения в файлы в их профиле пользователя, не входя в систему как пользователь. Если вам нужно «настроить электронную почту» или выполнять другие подобные действия «как пользователь», вы должны писать сценарии или использовать встроенные функции (административные шаблоны групповой политики, предпочтения и т. Д.), Чтобы выполнить свою грязную работу за вас.

Если вам нужно сделать это, взгляните на RunAsEx на Code Project. Этот код должен дать вам довольно хорошее представление о том, что вам нужно сделать. Я не пробовал программу, но похоже, что все идет правильно.

Эван Андерсон
источник
5

Вы можете использовать следующую команду в Windows XP и более поздних версиях:

RunAs.exe

Параметры командной строки доступны здесь .

Это не будет работать без знания пароля пользователя. Я не верю, что в Windows есть способ работать под учетной записью пользователя без пароля из-за загрузки идентификаторов безопасности.

Дуг Люксем
источник
3
Я считаю, что программа RunAs по-прежнему требует, чтобы вы знали пароль пользователя, который, как я полагаю, первоначальный вопрос о состояниях неизвестен
Кевин Куфал
Вы правы ... Я забыл об этом.
Даг Люксем
2

(Просто предположение.) Если у вас есть учетная запись SeCreateTokenPrivilege, вы можете написать небольшую программу для создания процесса, использующего CreateProcessAsUser()или аналогичную функцию ... (Но даже администраторы не имеют привилегии по умолчанию.)

grawity
источник
2

Хотя у меня нет личного опыта использования некоторых решений sudo, упомянутых на этом сайте, я настоятельно рекомендую nonadmin, созданный отличным Аароном Маргозисом . Это огромная помощь, когда вы запускаете пользователей с ограниченными правами. Я в основном прыгнул с чем-то, так как все остальные говорят, что используют Runas Тем не менее, я думаю, что большинство или все из этих так называемых sudo для окон больше связаны с повышением прав, чем с действиями другого пользователя без их пароля.

Нокс
источник
0

В Process Explorer procxp.exe на http://live.sysinternals.com есть пользователь с ограниченными правами (в меню «Файл»), который позволяет запускать программу с использованием текущих учетных данных, но с ACL, сокращенным до обычного. пользователь (не администратор) пользователь. Не то, что вы хотели, но хорошо для тестирования.

Booji Boy
источник