Ldap

如何確定 Apple Open Directory 使用者是否通過 LDAP 被禁用?

  • November 10, 2010

我有一個 Open Directory 使用者在 Workgroup Manager 中未選中“訪問帳戶”框,因此他們無法登錄。有沒有辦法使用 LDAP 查詢來確定這一點?

能夠/bin/false通過 LDAP 檢查他們的 Login Shell 設置也很好,因為一些管理員使用它來禁用登錄。

一個帳戶是否被禁用並沒有儲存在 LDAP 數據庫中,因此您無法通過任何 LDAP 查詢得到它;它在密碼伺服器數據庫中,因此您需要查詢密碼伺服器。為此,您首先需要獲取帳戶的密碼槽 ID,它將位於 LDAP 中的 authAuthority 屬性之一中,如下所示:

authAuthority: ;ApplePasswordServer;0x4ae508585b4ac9840000000500000005,1024 35 
1484429831226030758363098280788558407709702186716704057921377682138163682495133
1971257473356121601282837516549920614867084718242948054970731529476886852497051
1771493871066923475105955010041662310891335912128945258881795910315183596873989
2049755102190782235854169470422244680045551515607049216054651273928793669 
root@myserver.example.com:10.0.0.5

在此範例中,“0x4ae508585b4ac9840000000500000005”是使用者的密碼槽 ID。完成後,您可以連接到密碼伺服器並檢查使用者的密碼策略:

$ telnet 10.0.0.5 3659
Trying 10.0.0.5...
Connected to myserver.example.com.
Escape character is '^]'.
+OK ApplePasswordServer 10.6.0.0 password server at 10.1.0.1 ready.
getpolicy 0x4ae508585b4ac9840000000500000005
+OK isDisabled=1 isAdminUser=0 newPasswordRequired=0 usingHistory=0
canModifyPasswordforSelf=1 usingExpirationDate=0 usingHardExpirationDate=0
requiresAlpha=0 requiresNumeric=0 expirationDateGMT=44451553867008
hardExpireDateGMT=44451553900288 maxMinutesUntilChangePassword=0
maxMinutesUntilDisabled=0 maxMinutesOfNonUse=0 maxFailedLoginAttempts=0
minChars=0 maxChars=0 passwordCannotBeName=0 requiresMixedCase=0
requiresSymbol=0 notGuessablePattern=0 isSessionKeyAgent=0 isComputerAccount=0
adminClass=0 adminNoChangePasswords=0 adminNoSetPolicies=0 adminNoCreate=0
adminNoDelete=0 adminNoClearState=0 adminNoPromoteAdmins=0
quit
+OK password server signing off.
Connection closed by foreign host.

請注意該列表中的“isDisabled=1”策略,表明該使用者目前被禁用。

引用自:https://serverfault.com/questions/200100