Sintaxe de nomes de conta ao usar o comando cacls

1

Eu tenho tentado descobrir como obter nomes de usuário disponíveis para o comando nome de usuário cacls / g: right conceda permissões de usuários específicos para arquivos e diretórios. Estou em um obstáculo, porque algumas contas, como a conta SYSTEM, existem na minha máquina:

C:\Windows\system32>wmic sysaccount get Name
...
SYSTEM
...

Mas a opção / g de cacls só funcionará com NT AUTHORITY\SYSTEM , então ele precisa do prefixo de domínio NT AUTHORITY. A pergunta que tenho é, como posso determinar esse prefixo para qualquer conta, como SYSTEM da minha consulta wmic? Como você pode obter todos os nomes de contas disponíveis para uso com a opção / g de cacls?

Eu descobri que a SysInternals (é claro, os mestres de ferramentas de sistema operacional de baixo nível) tem uma ferramenta chamada psgetsid que cuspirá o SID da conta SYSTEM junto com seu outro alias, NT AUTHORITY/SYSTEM , mas eu esperava que houvesse uma maneira mais padrão de obter esse nome fora da caixa:

C:\Users\User\Downloads\PSTools>psgetsid SYSTEM

PsGetSid v1.44 - Translates SIDs to names and vice versa
Copyright (C) 1999-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

SID for NT AUTHORITY\SYSTEM:
S-1-5-18
    
por Alexandru 13.02.2015 / 17:36

1 resposta

2

Execute o seguinte script do PowerShell:

# Normal users:
get-wmiobject -class "win32_account" -namespace "root\cimv2" | where-object{$_.sidtype -eq 1} | sort name | foreach {Write-Host $env:computername\$($_.Name)}
# Normal groups:
get-wmiobject -class "win32_account" -namespace "root\cimv2" | where-object{$_.sidtype -eq 4} | where-object{$_.sid.length -gt 15} | sort name | foreach {Write-Host $env:computername\$($_.Name)}
# Builtin groups:
get-wmiobject -class "win32_account" -namespace "root\cimv2" | where-object{$_.sidtype -eq 4 -and $_.SID -Match "^S-1-5-32-(\d){3}$" } | sort name | foreach {Write-Host BUILTIN\$($_.Name)}
# Special accounts:
get-wmiobject -class "win32_account" -namespace "root\cimv2" | where-object{$_.sidtype -eq 5} | sort name | foreach {Write-Host NT AUTHORITY\$($_.Name)}
# Service accounts:
get-service | foreach {Write-Host NT Service\$($_.Name)}
# only if you have IIS with scripting installed:
Get-WebConfiguration system.applicationHost/applicationPools/* | where {$_.ProcessModel.identitytype -eq 'ApplicationPoolIdentity'} | foreach {Write-Host IIS APPPOOL\$($_.Name)}
# Only if you have Hyper-V installed
get-vm | foreach {Write-Host NT VIRTUAL MACHINE\$($_.Id)}

# Odd ones:
"NT VIRTUAL MACHINE\Virtual Machines"
"NT AUTHORITY\Local account and member of Administrators group"
"NT AUTHORITY\Local account"
"NT AUTHORITY\This Organization Certificate"
"APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES"
"CONSOLE LOGON"

Isto é apenas para uma máquina local, em um domínio do AD existem mais contas, há mais informações em minha resposta acabou em superuser.com

    
por 13.02.2015 / 19:16

Tags