web-dev-qa-db-ja.com

SIDで(AD)LDAP個人エントリを取得する方法

ユーザーまたはグループのSIDが指定されている場合、それに属するLDAPオブジェクトを見つけるにはどうすればよいですか?
LDAPサーバーはActive Directory(Windows Server 2008)です。

LDAPクエリ文字列が役立ちます。

4
mtm

私はそれが次のように簡単だったことを望みます:

dsget user "objectSID={thesid},CN=Users,DC=domain,DC=com" -samid

しかし、そうではありません。 ADは、objectSIDを16進数として格納します。

ただし、serverfaultの担当者は、役立つと思われるいくつかの回答を書いています。

SIDを使用してActive Directoryからユーザーの詳細を取得する

4
quux

別の方法は、LDAPを放棄して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

これで、必要に応じてLDAP経由で簡単に検索できるいくつかの属性ができました。

6
quux

これは古いのですが、ADUCでカスタム検索に移動して詳細設定タブをクリックすると、これを実行できます。

LDAPクエリ文字列:(objectSID = SID)

「SID」を、探しているSIDに置き換えます。

次のコードを使用して、PowerShellでSIDから名前に、またSID(外部セキュリティプリンシパルの場合)に変換する必要がありました。

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

}
1
Tim Wilde

LDAPクエリを使用してSIDで検索します。例えば:

dsquery * domainroot -filter "(objectSid=S-1-5-21-blah-blah-blah-500)"

または、PowerShellで

Get-ADuser -LDAPFilter '(objectSid=S-1-5-21-blah-blah-blah-500)'

blah-blah-blahのドメイン値をサブミットすると、ドメイン管理者アカウントが取得されます。

0
user2871239