Como é possível listar todas as pastas nas quais um determinado usuário / grupo tem permissões?

2

É possível listar todas as pastas / arquivos que um determinado grupo tem permissões explícitas, para uma máquina que executa o Windows Server 2003? Se sim, como? Seria bom ver permissões herdadas também, mas eu poderia fazer apenas com permissões explícitas.

Uma pequena experiência: estou tentando atualizar grupos / permissões em um servidor de teste. Um dos grupos, Devs , não foi implementado corretamente quando foi criado e meu objetivo é removê-lo do sistema. Ele foi substituído por LeadDevelopers , que tem permissões em muitas pastas, mas não em todas. Quero certificar-me de que não danifico acidentalmente nenhuma pasta ou causa outros problemas quando removo Devs . Ele tinha algumas permissões no nível de administrador.

EDIT: As respostas até o momento - pelo menos, *cacls e AccessEnum - fornecem uma maneira de descobrir quais grupos / usuários têm permissões em diretórios / arquivos conhecidos. Eu realmente quero o reverso deste comportamento: Eu conheço o grupo, e estou procurando os diretórios / arquivos para os quais o grupo tem permissões. Além disso, como observei em um comentário, o grupo Devs não é membro de nenhum outro grupo.

    
por Pops 28.05.2010 / 04:33

4 respostas

2

Parece que não existe uma ferramenta simples para isso. Acabei indo com uma combinação de obter um relatório de DumpSec e pesquisando por Devs com FINDSTR .

E sim, eu sei que existem dezenas de soluções igualmente boas, mas essas eram as ferramentas que eu estava pensando quando decidi desistir da busca por uma estratégia de uma etapa.

    
por 28.05.2010 / 21:39
1

O AccessEnum da Sysinternals pode ajudar você a fazer o que quiser. Ele irá enumerar as permissões em seus diretórios. Ele não mostra exatamente se as permissões são explícitas ou herdadas, mas mostrará todos os diretórios (e arquivos) cujas permissões diferem de seus pais. Isso provavelmente te dá a mesma informação. Ele também pode enumerar as chaves de registro de permissões da mesma maneira.

Você também pode estar interessado em AccessChk (linha de comando) e ShareEnum (como AccessEnum para seus compartilhamentos de arquivos).

    
por 28.05.2010 / 06:34
1

Encontrei uma entrada no fórum isso pode ajudar.

Aqui está um trecho:

if (($args.Count) -eq 2) {
 $dir = $args[0]
 if ((Test-Path $dir) -eq $true) {
  $script:FoldersFound = New-Object System.Collections.ArrayList
  $GroupName = $args[1]
  $folders = Get-ChildItem $dir -Recurse | Where-Object {$_.PSIsContainer}

  foreach($folder in $folders) {
   $ACL = Get-Acl -Path $folder.FullName
   foreach($ACE in $ACL.access) {
    if (($ACE.IdentityReference) -like "*\$GroupName") {
     if (($ACE.IsInherited) -eq $false) {
      $FoldersFound.Add($folder.FullName) | Out-Null
      break
     }
    }
   }
  }

  $FoldersFound.Sort()
  foreach($folder in $FoldersFound) {
   Write-Host $folder
  }
 }
} else {
 Write-Host "Syntax:" $MyInvocation.MyCommand.Name """path""" """Group Name"""
}

Salve o código acima como <filename>.ps1 e execute-o a partir do prompt do PowerShell com dois argumentos: "Caminho da pasta" seguido de "nome do grupo".

Exemplo: navegue até a pasta onde você salvou o script e digite o seguinte, onde <filename> é (obviamente) o nome que você deu ao arquivo e substitua o caminho e o nome do grupo pelo seu próprio:

.\<filename>.ps1 "C:\Users" "Administrators"

Agora lembre-se de que não há tratamento de erros no script, portanto, ele não cuida dos erros de acesso negado ou dos nomes de caminho muito longos, por exemplo.

O crédito vai para Andreas Hultgren, MCTS, MCITP .

    
por 24.10.2012 / 18:34
0

Tente cacls.exe ou xcacls.exe ou icacls.exe ou até SetACL . Eles não apenas listarão as permissões, incluindo a herança, mas também permitirão que você as edite ou substitua.

Os cacls / xcalcs e icacls não são ótimos para exibir permissões para um determinado usuário ou grupo, mas o SetACL parece ter essa funcionalidade, mas tem uma sintaxe complexa, embora poderosa.

    
por 28.05.2010 / 06:40