Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Серверные продукты Microsoft » Windows Server 2016/2019/2022 » Общее - RDP-Tcp права пользователей

Ответить
Настройки темы
Общее - RDP-Tcp права пользователей

Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Charg
Дата: 28-01-2020
Изначальная задача - дать возможность пользователям (а лучше группам), НЕ являющими локальными администраторами ни на одном из серверов (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

 

Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить 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 -ConnectionBroker $brokerFQDN
И в ответ я получаю:
Цитата:
PS C:\windows\system32> Get-RDUserSession -ConnectionBroker $ConnectionBroker
Get-RDUserSession : На srv-tshost-test.company.com не развернуты службы удаленных
рабочих столов. Эту операцию можно выполнить после их развертывания. Для получения
дополнительных сведений о развертывании выполните командлет "Get-Help
New-RDVirtualDesktopDeployment" или "Get-Help New-RDSessionDeployment".
строка:1 знак:1
+ Get-RDUserSession -ConnectionBroker $ConnectionBroker
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ( [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-RDUserSession
При этом консольный вариант query session /server:srv-tshost-test работает, что говорит о наличии необходимого минимума прав.
А вот командлету 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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Серверные продукты Microsoft » Windows Server 2016/2019/2022 » Общее - RDP-Tcp права пользователей

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход