Permissões Issue com arquivos gerados pelo PerfMon

3

Estamos tentando implementar alguns registros de dados em arquivos CSV usando um conjunto de coletores de dados no PerfMon (em um sistema Windows Server 2008 R2).

O problema que estamos enfrentando é que (aparentemente) não podemos controlar as permissões que estão sendo definidas nos arquivos de log criados pelo perfmon.

O que queremos é que os arquivos de log criados pelo perfmon tenham permissões Everyone: F (Controle Total para Todos). Então, temos uma estrutura de diretórios onde todos os logs vão para uma pasta:

c: \ vms \ Nomes de desempenho de perfumes \% MACHINENAME% (por exemplo, c: \ vms \ PerfMonLogs \ EvaluationG2)

No exemplo acima, c: \ vms \ PerfMonLogs \ EvaluationG2 tem permissões Everyone: F (abaixo estão os icacls deste diretório)

EVALUATIONG2 / Todos: (OI) (CI) (F)               NT AUTORIDADE \ SISTEMA: (OI) (CI) (F)               BUILTIN \ Administradores: (OI) (CI) (F)               Usuários BUILTIN \ Performance Log: (OI) (R)

Quando o conjunto de coletores de dados é executado, ele cria novas subpastas e arquivos em c: \ vms \ PerfMonLogs \ EvaluationG2, por exemplo, (C: \ vms \ PerfMonLogs \ EVALUATIONG2 \ M11d26y2012N3)

Cada um desses diretórios e arquivos tem as seguintes permissões:

M11d26y2012N3 NT AUTORIDADE \ SISTEMA: (OI) (CI) (F)               BUILTIN \ Administradores: (OI) (CI) (F)               Usuários BUILTIN \ Performance Log: (OI) (R)

Então, essas novas pastas e não simplesmente herdando permissões da pasta pai (não sei por que).

Agora, tentamos adicionar Everyone: F usando a guia de segurança no conjunto de coletores (sem dados).

Alguma ideia? Como podemos controlar as permissões nos arquivos de log gerados pelo conjunto de coletores de dados perfmon?

    
por SvrGuy 26.11.2012 / 18:02

1 resposta

1

Os Conjuntos de Coletores de Dados podem conter informações confidenciais sobre o computador, portanto, o acesso a eles normalmente exige que o usuário seja pelo menos um membro do grupo Usuários do Log de Desempenho. Eu não acredito que você possa criar um DCS com permissões modificadas automaticamente (Everyone FullControl) como você está falando.

Como é isso para uma solução alternativa:

Execute este script PS como uma tarefa agendada:

$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
}

Eu testei isso no Windows 7 com o PS 2.0 (igual a 2008R2) e confirmei que ele coloca uma ACE "Everyone Full Control" em todos os objetos recursivamente sob o diretório definido na variável $ Path.

Editar: Primeiro, pensei em usar a guia Tarefa na página Propriedades do DCS, "Executar esta tarefa agendada quando o conjunto de coletores de dados parar", mas isso não é para tarefas agendadas, mas sim tarefas do WMI.

Editar # 2: Tudo bem, isso está ficando muito louco, mas você pode criar uma nova tarefa agendada, e seu gatilho será iniciar "Em um evento". Em seguida, clique em Personalizar e clique em "Novo filtro de eventos". Em seguida, edite manualmente o filtro 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>

Agora você terá criado uma tarefa agendada que será disparada quando o Data Collector Set terminar a execução e modificará as ACLs da estrutura de diretórios de forma recursiva para "Everyone Full Control".

    
por 26.11.2012 / 21:19