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

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

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

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

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

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

7 ответов

Решение

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

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

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

Я заметил, что многие другие люди упоминали о вариациях команды 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 и ища текущую панель пользователя.

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

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

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

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

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

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

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

RunAs.exe

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

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

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

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

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

Другие вопросы по тегам