Como obter uma entrada de pessoa LDAP (AD) pelo SID?

4

Dado o SID de um usuário ou grupo, como posso encontrar um objeto LDAP que pertença a ele?
O servidor LDAP é o Active Directory (Windows Server 2008).

Uma string de consulta LDAP seria útil.

    
por mtm 17.08.2011 / 10:03

3 respostas

3

Eu queria que fosse tão fácil quanto:

usuário dsget "objectSID = {thesid}, CN = Usuários, DC = domínio, DC = com" -samid

Mas não é; AD armazena o objectSID como hexadecimal.

O pessoal do serverfault escreveu algumas respostas que podem ajudar:

Recuperar detalhes do usuário do Active Directory usando o SID

    
por 17.08.2011 / 12:39
5

Outra maneira seria abandonar o LDAP e usar o WMIC:

H:\>wmic useraccount where (sid = "S-1-5-21-1698188384-1693678267-1543859470-6637") get * /format:list    

AccountType=512
Caption=MYDOMAIN\quux
Description=some guy's account
Disabled=FALSE
Domain=MYDOMAIN
FullName=Some Guy
InstallDate=
LocalAccount=FALSE
Lockout=FALSE
Name=quux
PasswordChangeable=TRUE
PasswordExpires=FALSE
PasswordRequired=TRUE
SID=S-1-5-21-1698188384-1693678267-1543859470-6637
SIDType=1
Status=OK

Agora você tem vários atributos que devem ser fáceis de pesquisar via LDAP, se ainda precisar.

    
por 17.08.2011 / 12:45
1

Eu vejo que este é antigo, mas você pode fazer isso no ADUC indo para a Pesquisa Personalizada e clicando na guia avançada.

A string de consulta LDAP é: (objectSID = SID)

Substitua "SID" pelo SID que você está procurando.

Eu tive que fazer traduções do SID para nomear e voltar ao SID (para entidades de segurança estrangeiras) no PowerShell usando o seguinte código:

function Find_By_SID($SID) {

    //Searches Active Directory by SID
    //Returns NetBios Name 
    // Example output: CONTOSO\User1

    $account = New-Object Security.Principal.SecurityIdentifier("$SID")
    $netbios = $account.Translate([Security.Principal.NTAccount])

    return $netbios.Value

}
    
por 27.04.2013 / 00:42