Вопрос или проблема
Я использую Windows Server 2012 R2 и VMware Workstation Pro на нем. Когда Workstation устанавливается, создается группа пользователей __vmware__
для пользователей VMWare Workstation. Я добавил учетную запись пользователя хост-машины (то есть Windows Server 2012 R2), являющуюся членом группы Users, а не Administrators, в группу __vmware__
.
На хосте я хотел бы создать записи в журнале событий в журнале приложений, работая под своей учетной записью, связанные с состоянием виртуальных машин, работающих под управлением VMWare.
Из командной строки на хосте я ввожу whoami \all
и получаю следующее:
ИНФОРМАЦИЯ О ПОЛЬЗОВАТЕЛЕ
----------------
Имя пользователя SID
========= ==============================================
mte\mike S-1-5-21-1052476717-3500785571-2838594007-1118
ИНФОРМАЦИЯ О ГРУППЕ
-----------------
Имя группы Тип SID
Атрибуты
========================================== ================ ====================
========================== =====================================================
==========
Everyone Известная группа S-1-1-0
Обязательная группа, Включена по умолчанию, Включенная группа
BUILTIN\Users Псевдоним S-1-5-32-545
Обязательная группа, Включена по умолчанию, Включенная группа
BUILTIN\Certificate Service DCOM Access Псевдоним S-1-5-32-574
Обязательная группа, Включена по умолчанию, Включенная группа
BUILTIN\Pre-Windows 2000 Compatible Access Псевдоним S-1-5-32-554
Группа используется только для отказа
NT AUTHORITY\INTERACTIVE Известная группа S-1-5-4
Обязательная группа, Включена по умолчанию, Включенная группа
CONSOLE LOGON Известная группа S-1-2-1
Обязательная группа, Включена по умолчанию, Включенная группа
NT AUTHORITY\Authenticated Users Известная группа S-1-5-11
Обязательная группа, Включена по умолчанию, Включенная группа
NT AUTHORITY\This Organization Известная группа S-1-5-15
Обязательная группа, Включена по умолчанию, Включенная группа
LOCAL Известная группа S-1-2-0
Обязательная группа, Включена по умолчанию, Включенная группа
Установленная полномочиями идентификация Известная группа S-1-18-1
Обязательная группа, Включена по умолчанию, Включенная группа
MTE\__vmware__ Псевдоним S-1-5-21-1052476717-
3500785571-2838594007-1131 Обязательная группа, Включена по умолчанию, Включенная группа, Ло
кальная группа
Обязательная метка\Средний обязательный уровень Метка S-1-16-8192
ИНФОРМАЦИЯ О ПРИВИЛЕГИЯХ
----------------------
Название привилегии Описание Состояние
============================= ============================== ========
SeChangeNotifyPrivilege Обход проверки перехода Включено
SeIncreaseWorkingSetPrivilege Увеличение набора рабочих процессов Отключено
ИНФОРМАЦИЯ О ПРИТЯЗАНИЯХ ПОЛЬЗОВАТЕЛЯ
-----------------------
Потребительские притязания неизвестны.
Поддержка Kerberos для динамического управления доступом на этом устройстве отключена.
Обратите внимание, что моя учетная запись пользователя является членом __vmware__
и SID равен S-1-5-21-1052476717-3500785571-2838594007-1131
.
Из учетной записи администратора я редактирую следующий ключ реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application
И изменяю запись CustomSD
следующим образом:
O:BAG:SYD:(A;;0x3;;;S-1-5-21-1052476717-3500785571-2838594007-1131)(A;;0x2;;;S-1-15-2-1)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)(A;;0x3;;;S-1-5-33)(A;;0x1;;;S-1-5-32-573)
Здесь вы можете увидеть, что группе __vmware__
предоставлены права на чтение и запись в журнал событий приложений.
Несмотря на это, когда я пытаюсь создать запись в журнале:
eventcreate /SO TestEventMsg /Id 1 /D "This is a test message" /T INFORMATION /L Application
Я получаю ошибку “Доступ запрещен”.
Что я делаю неправильно?
ОБНОВЛЕНИЕ 2016-12-03
Я попробовал предложение user2304170, и вот что получилось:
PS C:\Users\Netadmin\Documents> ./GrantEventLogAccess.ps1 -Account '__vmware__' -LogName Application
Failed to save configuration or activate log Application. Access is denied.
name: Application
enabled: true
type: Admin
owningPublisher:
isolation: Application
channelAccess: O:BAG:SYD:(A;;0x3;;;S-1-5-21-1052476717-3500785571-2838594007-1131)(A;;0x2;;;S-1-15-2-1)(A;;0xf0007;;;SY)
(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)(A;;0x3;;;S-1-5-33)(A;;0x1;;;S-1-5-32-573)
logging:
logFileName: %SystemRoot%\System32\Winevt\Logs\Application.evtx
retention: false
autoBackup: false
maxSize: 20971520
publishing:
fileMax: 1
PS C:\Users\Netadmin\Documents>
Собрав информацию из Интернета, я создал для этой задачи небольшой скрипт:
<#
.SYNOPSIS
Добавляет права на запись в журнал событий Windows для определенного объекта AD.
.DESCRIPTION
Добавляет права на запись в журнал событий Windows для определенного объекта AD.
.PARAMETER Account
Объект Active Directory, которому нужно предоставить права на запись.
.PARAMETER LogName
Имя журнала, к которому мы предоставляем права
.EXAMPLE
./script.ps! -Account 'Domain users' -LogName Application
.NOTES
CHANGELOG
2016/09/12 Рождение скрипта #>
Param (
[String]$Account="Bob",
[String]$LogName="Application"
)
Write-Verbose "Получение SID для учетной записи '$Account'"
$AdObj = New-Object System.Security.Principal.NTAccount($Account)
$SID = $AdObj.Translate([System.Security.Principal.SecurityIdentifier])
Write-Verbose "Найден SID для учетной записи $($SID.Value)"
$w = wevtutil gl $LogName
$channelAccess = $w[5]
if ($channelAccess.Contains('channelAccess:')) {
$str = $channelAccess.Replace('channelAccess: ','')
if ($str.Contains($SID.Value) -eq $false) {
$newstr = $str +"(A;;0x3;;;"+$SID.Value+")"
Write-Verbose "Добавление '$newstr'"
wevtutil sl $LogName /ca:$newstr
Write-Verbose "Обновление выполнено, новое значение"
wevtutil gl $LogName
}
else {
Write-Verbose "Обновление не требуется"
}
}
Я не проверял это в полном объеме, но если вы перейдете к этому ключу реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog
Вы можете щелкнуть правой кнопкой мыши на папке Eventlog и предоставить права пользователю, которому вы хотите предоставить доступ, или вы можете выбрать конкретный журнал событий.
Ответ или решение
Для предоставления прав на запись в журналы событий Windows Server 2012 R2, включая учетку в группе __vmware__
, необходимо выполнить несколько шагов. Подойдём к этой задаче системно и тщательно разберём все аспекты настройки.
Введение
Вы запускаете экземпляры виртуальных машин с помощью VMWare Workstation Pro на Windows Server 2012 R2. У вас есть пользовательская учетная запись, которая является членом группы __vmware__
. Вам нужно, чтобы эта учетная запись могла создавать записи в журнале событий "Приложение".
Шаги для предоставления доступа
-
Проверка текущей конфигурации
Убедитесь, что ваша учетная запись действительно является членом группы__vmware__
. Это можно сделать с помощью командыwhoami /all
, которая подтвердит принадлежность к этой группе, что вы уже проверили. -
Изменение настроек доступа
Ваша цель – добавить права на запись в журнал событий. Для этого попробуйте выполнить следующее:-
Изменение через реестр
- Откройте редактор реестра (
regedit.exe
). - Перейдите к ключу:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application
. - Найдите параметр
CustomSD
. Этот параметр управляет правами доступа. - Убедитесь, что SID вашей группы
__vmware__
присутствует в строкеCustomSD
с правами на чтение и запись (0x3
).
- Откройте редактор реестра (
-
Использование PowerShell для автоматизации настройки
Вложенный скрипт PowerShell может быть адаптирован следующим образом:Param ( [String]$Account="__vmware__", [String]$LogName="Application" ) Write-Verbose "Retrieving SID for account '$Account'" $AdObj = New-Object System.Security.Principal.NTAccount($Account) $SID = $AdObj.Translate([System.Security.Principal.SecurityIdentifier]) Write-Verbose "Found SID for account $($SID.Value)" $w = wevtutil gl $LogName $channelAccess = $w | Select-String -Pattern "^channelAccess:" if ($channelAccess -and $channelAccess.Line) { $str = $channelAccess.Line -replace 'channelAccess: ', '' if ($str.Contains($SID.Value) -eq $false) { $newstr = $str + "(A;;0x3;;;" + $SID.Value + ")" Write-Verbose "Adding '$newstr'" wevtutil sl $LogName /ca:$newstr Write-Verbose "Update complete new value is" wevtutil gl $LogName | Select-String -Pattern "^channelAccess:" } else { Write-Verbose "Update not needed" } } else { Write-Verbose "Could not find channel access string" }
-
-
Правильные права AD и утилиты
Убедитесь, что ваша учетная запись имеет все необходимые права уровня AD. Если возникает ошибка доступа, может помогать запуск команд от имени администратора. -
Проверка права записи
Используйте командуeventcreate
для создания тестовой записи. Если всё настроено правильно, вы сможете создать запись без ошибок доступа.
Заключение
Следуя этим шагам, вы обеспечите своим пользователям в группе __vmware__
возможность записи в журнал событий "Приложение". В случае дальнейших проблем, рассмотрите использование дополнительных инструментов или сторонней помощи для более точной диагностики.