Проблема с разрешениями для файлов, созданных PerfMon

Мы пытаемся реализовать некоторую регистрацию данных в файлах CSV с использованием набора сборщиков данных в PerfMon (в системе Windows Server 2008R2).

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

Мы хотим, чтобы файлы журнала, созданные perfmon, имели права "Все: F" ("Полный доступ для всех"). Итак, у нас есть настройка структуры каталогов, в которой все журналы попадают в папку:

c: \ vms \ PerfMonLogs \% MACHINENAME% (например, c:\vms\PerfMonLogs\EvaluationG2)

В приведенном выше примере c: \ vms \ PerfMonLogs \ EvaluationG2 имеет разрешения "Все":F (ниже - icacls для этого каталога)

EVALUATIONG2 / Все:(OI)(CI)(F) NT AUTHORITY\SYSTEM:(OI)(CI)(F) BUILTIN\ Администраторы: (OI) (CI) (F) BUILTIN \ Пользователи журнала производительности: (OI) (Р)

При запуске набора сборщиков данных он создает новые подпапки и файлы в каталоге c:\vms\PerfMonLogs\EvaluationG2, например (C:\vms\PerfMonLogs\EVALUATIONG2\M11d26y2012N3)

Каждый из этих каталогов и файлов имеет следующие разрешения:

M11d26y2012N3 NT AUTHORITY \ SYSTEM: (OI) (CI) (F) BUILTIN \ Администраторы: (OI) (CI) (F) BUILTIN \ Пользователи журнала производительности:(OI)(R)

Так что эти новые папки, а не просто наследуют разрешения от родительской папки (не знаю почему).

Теперь мы попытались добавить Everyone: F, используя вкладку безопасности на наборе сборщика (без кубиков).

Есть идеи? Как мы контролируем права доступа к файлам журналов, созданным набором сборщиков данных perfmon?

1 ответ

Наборы сборщиков данных могут содержать конфиденциальную информацию о компьютере, поэтому для доступа к ним обычно требуется, чтобы пользователь был как минимум членом группы "Пользователи журнала производительности". Я не верю, что вы можете создать DCS с автоматически измененными разрешениями (Every FullControl), как вы говорите.

Как это для обходного пути:

Запустите этот сценарий PS как запланированное задание:

$Path = "C:\PerfLogs\Admin\New Data Collector Set"
$ACL  = (Get-Item $Path).GetAccessControl("Access")
$ACE  = New-Object System.Security.AccessControl.FileSystemAccessRule("Everyone", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
$ACL.AddAccessRule($ACE)
ForEach($_ In Get-ChildItem $Path -Recurse)
{
    Set-Acl -ACLObject $ACL $_.FullName
}

Я проверил это на Windows 7 с PS 2.0 (так же, как 2008R2) и подтвердил, что он действительно помещает ACE "Все права доступа" для каждого объекта рекурсивно в каталоге, определенном в переменной $Path.

редактирование: Сначала я подумал о том, чтобы использовать вкладку "Задача" на странице "Свойства" в DCS: "Запустите это запланированное задание, когда набор сборщиков данных остановится", но это не для запланированных задач, а задач WMI.

edit # 2: Хорошо, это становится довольно сумасшедшим, но вы можете создать новую запланированную задачу, и ее триггером будет запуск "По событию". Затем нажмите "Пользовательский" и нажмите "Новый фильтр событий". Затем вручную отредактируйте фильтр XML:

<QueryList>
  <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
    <Select Path="Microsoft-Windows-TaskScheduler/Operational">
        *[System[TimeCreated[timediff(@SystemTime) &lt;= 3600000]]]
         and
        *[System[(EventID='102')]]
         and
        *[EventData[Data and (Data='YOUR DATA COLLECTOR SET NAME')]] 
    </Select>
  </Query>
</QueryList>

Теперь вы создадите запланированное задание, которое будет запускаться, когда ваш набор сборщиков данных завершит свою работу, и он рекурсивно изменит списки ACL структуры каталогов на "Все полный доступ".

Другие вопросы по тегам