|
Компьютерный форум OSzone.net » Серверные продукты Microsoft » Windows Server 2016/2019/2022 » Общее - RDP-Tcp права пользователей |
|
Общее - RDP-Tcp права пользователей
|
Ветеран Сообщения: 2798 |
Профиль | Отправить PM | Цитировать
Изначальная задача - дать возможность пользователям (а лучше группам), НЕ являющими локальными администраторами ни на одном из серверов (RD Deployment), получать список терминальных сессий, слать в них сообщение и принудительно завершать сессию (force logoff).
Если издалека - давным давно во времена 2008го сервера существовала утилитка Remote Desktop Session Host Configuration, которая позволяла с помощью виндового же графического интерфейса задавать те самые права пользователям или группам, выглядело это всё вот так: Скрытый текст
Злобные дядьки из мелкософта, зачем-то, выпилили эту утилиту. А вот альтернативного способа добраться до этих настроек, видать, не оставили. Во всяком случае я не нашёл, буду благодарен если кто-то подскажет упущенный способ добраться до этих настроек. В попытках докопаться до возможности менять эти права я дошел аж до WMI класса Win32_TSAccount class, каждый экземпляр которого и описывает права для определенной группы. С помощью WMI Explorer'a я вижу все эти инстансы и соответствующие им права: Скрытый текст
У класса Win32_TSAccount есть методы Delete, ModifyAuditPermissions и ModifyPermissions. Последнее в принципе должно работать, но химичить с правами на стандартных учетках не хочется потому что мало ли какие последствия вылезут да и хочется всё-таки доменную группу добавить. Вопрос - как добавить еще один инстанс? Или более глобальный вопрос - каким другим (возможно менее наркоманским) способом можно дать доменной группе право подключиться внутрь сессий пользователей, принудительно завершать её и отправлять сообщение внутрь сессии НЕ давая админку? |
|
Отправлено: 13:02, 28-01-2020 |
Ветеран Сообщения: 2798
|
Профиль | Отправить PM | Цитировать Небольшой апдейт - разобрался как добавить пользователя\группу как экземпляр класса Win32_TSAccount, делается это так:
Powershell
$myuser = "DOMAIN\samaccountname" $PermissionPreSet = 2 <# 0 = WINSTATION_GUEST_ACCESS => Permissions: Logon 1 = WINSTATION_USER_ACCESS => Permissions: Logon, QueryInformation, SendMessage and Connect 2 = WINSTATION_ALL_ACCESS => All RDS permissions https://docs.microsoft.com/en-us/windows/win32/termserv/win32-tspermissionssetting-addaccount #> $computer = $env:COMPUTERNAME # TS SESSION HOST $namespace = "ROOT\CIMV2\TerminalServices" $PermissionsClassName = "Win32_TSPermissionsSetting" $wmiTSPermissionsSetting = Get-WmiObject -Class $PermissionsClassName -ComputerName $computer -Namespace $namespace | Where-Object -FilterScript {$_.TerminalName -eq "RDP-Tcp"} $wmiTSPermissionsSettingResult = Invoke-WmiMethod -InputObject $wmiTSPermissionsSetting -Name "AddAccount" -ArgumentList $myuser,$PermissionPreSet Теперь, если у пользователя или группы, добавленной таким образом, есть возможность подключаться по WinRM к серверу - они могут пользоваться командлетами Send-RDUserMessage и Invoke-RDUserLogoff указывая напрямую ID сеанса + сервер с ролью Session Host, на котором хостится этот сеанс. Только проблема в том что этот номер сеанса надо как-то узнать, и делается это так: И в ответ я получаю: Цитата:
А вот командлету Get-RDUserSession каких-то прав таки не хватает. В обсуждениях на форумах я встречал различные мнения, но несколько раз (например тут) натыкался на такое мнение что в процессе работы командлет Get-RDUserSession проводит целый ряд проверок "а является ли target-host частью RDS Deployment", и одна из таких проверок - командлет делает `Get-Service RDMS -Computername $target`. Я проверил и у пользователя действительно нет прав посмотреть на эту службу удалённо (PoSh говорит что служба не найдена). А если локально на сервере под этим же пользователем зайти - права уже есть. Я не уверен на 100% в этом ли причина неработоспособности командлета Get-RDUserSession но вроде похоже не правду. По ссылке из предыдущего абзаца даже есть обходной путь, но там слишком много ручных действий и вообще похоже больше на костыль чем решение, я бы предпочел таки дать выделенной группе пользователей все необходимые права и таки дать им возможность пользоваться "родными" средствами, а не костылить. Есть идеи как это можно сделать? |
|
Последний раз редактировалось Charg, 04-02-2020 в 13:07. Отправлено: 12:17, 04-02-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2012 R2 - Прерывание TCP соединений при коннекте по RDP | aesoem | Windows Server 2012/2012 R2 | 0 | 26-06-2017 11:14 | |
2008 R2 - [решено] Права пользователей RDP на контроллере домена 2008R2 | walcot | Windows Server 2008/2008 R2 | 6 | 02-08-2016 16:48 | |
[решено] Разрешения RDP-Tcp Через ГП | AkP | Microsoft Windows NT/2000/2003 | 3 | 21-08-2012 08:55 | |
RDP-tcp (слушатель) | Crise | Microsoft Windows NT/2000/2003 | 11 | 09-12-2009 04:12 | |
Диспетчер служб терминалов RDP-Tcp | qpa3ep | Microsoft Windows NT/2000/2003 | 4 | 26-01-2006 11:36 |
|