Даем права бесправным

Даем права бесправным

Постановка задачи

Появилась задача дать локальные права администраторов и право использования удаленного доступа нескольким ИТ инженерам на группе серверов. Задача усложнялась двумя факторами:

  • Инженеры не имели прав администраторов в домене

  • Язык систем был различным и группы администраторов и пользователей удаленного рабочего стола имели отличающиеся имена.

Решение

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

Для того, чтобы скрипт отработал не зависимо от языка установленного на системе воспользовались идентификаторами SID групп в которые необходимо было добавить учетные записи. Источником данных послужила статья на сайте Microsoft. В операционных системах нам понадобятся следующие номера SID:

  • S-1-5-32-544 - Администраторы (Administrators) 

  • S-1-5-32-555 - Пользователи удаленного рабочего стола (Remote Desktop Users)

В качестве инструмента для выполнения задачи лучше всего подходит PowerShell. Был создан скрипт, который в качестве параметра получает имя учетной записи и добавляет его в группы с найденными SID.


$user=$args[0] 
echo "User $user will be added" 
$domain = $(Get-Childitem env:userdomain).value 
$adm = (Get-WmiObject -Query "Select * From Win32_Group Where LocalAccount = TRUE And SID = 'S-1-5-32-544'").Name 
$rdp = (Get-WmiObject -Query "Select * From Win32_Group Where LocalAccount = TRUE And SID = 'S-1-5-32-555'").Name 
net localgroup $adm $domain\$user /add 
net localgroup $rdp $domain\$user /add

Скрипт загрузим с помощью инструмента Manage Files на сервер Kaseya и напишем процедуру, которая загрузит скрипт на конечную машину и выполнит его для каждого пользователя. В первой строке выберем функцию Write File и в качестве параметра выберем наш скрипт


В качестве места размещения скрипта выберем рабочий каталог Kaseya:

#vAgentConfiguration.agentTempDir#\maintenance\user\AddUser2AdminRD.ps1

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

Тестирование

Для того, чтобы протестировать решение создадим тестового пользователя в домене с учетной записью user:



user входит только в группу Users


Добавлять будем на компьютере k9dw10. В Kaseya Live Connect узнаем учетные записи, входящие в группу Администраторы:


Теперь выполним процедуру агента на этом компьютере:


Процедура агента успешно выполнилась на удаленном компьютере

 Пользователь успешно добавлен в нужные нам группы, это мы можем увидеть запустив команды вывода состава локальных групп пользователей на удаленном компьютере через Kaseya Live Connect

Итоги

В результате была создана процедура агента, которая выполняет добавление пользователей на удаленные компьютеры в группы "Администраторы" и "Пользователи удаленного рабочего стола". При этом процедура выполнится на всех современных Windows компьютерах не зависимо от установленного системного языка.