Como encontro todos os arquivos que NÃO possuem permissão SYSTEM?

1

Vi que posso usar icacls para localizar todos os arquivos correspondentes a um SID, mas como localizar todos os arquivos que NÃO têm acesso para o usuário SYSTEM?

ICACLS name /findsid Sid [/T] [/C] [/L] [/Q]
    finds all matching names that contain an ACL
    explicitly mentioning Sid.
    
por Chloe 12.01.2014 / 09:13

1 resposta

1

Eu não fiz muitos testes, mas o seguinte script do PowerShell deve funcionar:

param([string]$path)

get-childitem $path -recurse | Foreach {
    $file=$_;get-acl $($_.FullName)} | Foreach {

    [bool]$SystemHasAccess = $false

    $_.GetAccessRules($True,$True,[Security.Principal.SecurityIdentifier]) | Foreach {
        if ($_.IdentityReference -eq "S-1-5-18") { $SystemHasAccess = $true }  # system sid
        if ($_.IdentityReference -eq "S-1-1-0") { $SystemHasAccess = $true }   # everyone sid                    
    }

    if ($SystemHasAccess -eq $false)
    {
       write-host "System has no access to $($file.FullName)"
    }
}

copie o código em um arquivo, diga "FindFilesWithoutSystemAccess.ps1" e, em seguida, chame-o fornecendo o caminho que você deseja pesquisar:

FindFilesWithoutSystemAccess.ps1 -path C:\

O script percorre todos os arquivos sob o caminho, incluindo todos os arquivos em subdiretórios. Para cada arquivo, ele percorre todas as entradas de controle de acesso na lista de controle de acesso do arquivo. Se nenhum deles corresponder ao sid interno do sistema (S-1-5-18), imprime o nome completo do arquivo.

É possível que um arquivo tenha uma ACE para o System, mas é uma ACE negativa, o que significa que o script acima não captura o arquivo e o System ainda não consegue acessá-lo. No entanto, o cenário é improvável e você pode usar um script semelhante para encontrar esses arquivos.

    
por 16.01.2014 / 20:27