Учитывая SID пользователя или группы, как я могу найти принадлежащий ей объект LDAP?
Сервер LDAP - это Active Directory (Windows Server 2008).
Была бы полезна строка запроса LDAP.
Другой способ - отказаться от 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, если вам все еще нужно.
Я бы хотел, чтобы это было так просто, как:
dsget user "objectSID={thesid},CN=Users,DC=domain,DC=com" -samid
Но это не так; AD хранит objectSID в шестнадцатеричном формате.
Люди из serverfault написали несколько ответов, которые могут помочь:
Получение сведений о пользователе из Active Directory с помощью SID
Я вижу, что это старый, но вы можете сделать это в ADUC, перейдя в пользовательский поиск и щелкнув вкладку «Дополнительно».
Строка запроса LDAP: (objectSID = SID)
Замените «SID» на SID, который вы ищете.
Мне пришлось выполнить переводы из SID в имя и обратно в SID (для сторонних участников безопасности) в PowerShell, используя следующий код:
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
}
Это поиск по SID с использованием запроса LDAP. Например:
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
.