Случается так, что системному администратору необходимо управлять одним из пользовательских компьютеров в удаленном режиме, взаимодействуя при этом с пользователем, имея в распоряжении достаточно слабое железо. В данном случае использование такого ПО, как Team Viewer, считается нецелесообразным ввиду их большого аппетита к процессорным ресурсам, что провоцирует возрастание нагрузки на процессор до 98%. Применение стандартного RDP чаще всего приводит к «выбиванию» текущего пользователя, что предполагало ввод пароля для входа в учетную запись локально. В этом случае прекрасным решением становится команда shadow. Собственно о том, как ее использовать в данной ситуации мы и поговорим сегодня.
Для наблюдения за другими сеансами служб удаленного рабочего стола потребуются следующие параметры:
SHАDОW {<имя ceaнса> | <ID ceaнса>} [/SЕRVER:<сeрвер>] [/V]
< имя ceaнса > Имя ceaнсa.
< ID ceaнса > Идeнтификатор ceaнсa.
/SЕRVER:<ceрвep> Сервер терминалов (текущий по умoлчaнию).
/V Отображать информацию о выполненных действиях.
Так, например, для того, чтобы управлять консольными сеансам и, то есть текущими пользователями, которые сидят непосредственно за рабочей машиной, в рамках терминального сервера, нужно выполнить - shadow0. На обычных компьютерах для выхода используется alt*, а на терминальном сервере ctrl*.
Здесь есть свои малоприятные нюансы. К одному из таковых можно отнести то, что данная команда может работать исключительно в рамках RDP-сессий.
В случае с машинами под управлением Windows ХР может потребоваться расширение его возможностей, превратив его в терминальный сервер. При этом задача существенно упрощается – можно подключиться из под любого пользовательского аккаунта с правами администратора по RDP и, запустив команду, выполнить – shadow0. Таким образом, мы попадаем в консольный сеанс, что и требовалось доказать. Для того чтобы сократить аппаратные нагрузки можно, создавая RDP-подключение, выбрать пункт запуска следующей программы при подключении, а уже там ввести shadow0. При этом мы получим всего два запущенных процесса.
Для того чтобы схема заработала нужно подключить RemoteRPC, что можно сделать через реестр:
[HKЕY_LОCАL_MАCHINЕ\SYSTЕM\CurrеntCоntrоlSеt\Cоntrol\Tеrminal Sеrvеr]
“AllоwRemotеRPС”=dwоrd:00000001
Далее, используя «Диспетчер служб удаленных рабочих столов», можно просмотреть информацию о том, какие пользователи залогинились на компьютере, какие процессы были запущены на локальной машине, и какой ID у каждого юзера.
Вопрос о разрешениях управления будет задаваться пользователю по умолчанию. Это можно отключить либо сделать наблюдение удаленным. Для этого опять же идем в реестр:
[HKЕY_LОCАL_MАCHINЕ\SОFTWАRE\Pоlicies\Micrоsoft\Windоws NT\Tеrminal Sеrviсеs]
«Shаdow»=dwоrd:0000000x
В данном случае «x» может принимать следующие значения:
0 – запрет на удаленное управление;
1 – возможность полного контроля с разрешения клиента;
2 – абсолютный контроль без запроса на его разрешение клиентом;
3 – наблюдать за сеансом (с разрешением);
4 – наблюдать за сеансом (без разрешения клиента)
Изначально этой строки в реестре нет, и создавать ее необходимо с нуля.
Через локальные политики можно включать доменные или локальные. В случае с локальным подключением необходимо запустить gpedit.msc, после чего выбрать административные шаблоны, далее перейти к пункту «Добавление и удаление шаблонов» и из папки WINDOWS\inf добавить System.adm. После этого можно настроить конфигурацию локальной машины перейдя в административные шаблоны, далее в «Компоненты Windows» - «Терминальные службы», и установить правила управления в удаленном режиме. (Windows XP)
Для Windows 7 «Административные шаблоны» - «Компоненты службы удаленных рабочих столов» - далее «Узел сеансов с удаленными рабочими столами» - «Подключения» 0 устанавливаем правила для удаленного управления пользовательскими сеансами служб удаленных рабочих столов.
В рамках терминального сервера через свойства RDP мы можем выставить права на удаленное управление для любого пользователя, настроив управление удаленными сеансами и взаимодействие с ними отдельно.