如何确定Apple Open Directory用户是否通过LDAP被禁用?

我有一个开放式目录用户的工作组pipe理器中取消选中“访问帐户”框,以便他们无法login。 有没有一种方法来确定这使用LDAP查询?

也可以通过LDAP检查他们的loginShell设置/bin/false ,因为有些pipe理员使用它来禁用login。

是否禁用帐户不存储在LDAP数据库中,因此您无法使用任何LDAP查询来获取该帐户; 它在密码服务器数据库中,所以你需要查询密码服务器。 要做到这一点,您首先需要获取帐户的密码插槽ID,该ID将位于LDAP中的一个authAuthority属性中,如下所示:

 authAuthority: ;ApplePasswordServer;0x4ae508585b4ac9840000000500000005,1024 35 1484429831226030758363098280788558407709702186716704057921377682138163682495133 1971257473356121601282837516549920614867084718242948054970731529476886852497051 1771493871066923475105955010041662310891335912128945258881795910315183596873989 2049755102190782235854169470422244680045551515607049216054651273928793669 [email protected]:10.0.0.5 

在这个例子中,“0x4ae508585b4ac9840000000500000005”是用户的密码槽号。 一旦你有了,你可以连接到密码服务器,并检查用户的密码策略:

 $ 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”策略,表明该用户当前已被禁用。

要查找loginShell值用户:

(loginShell=/bin/false)searchfilter(虽然你可能需要引用它,因为它已经斜线了。

用像LDAPDS或LBE这样的LDAP浏览器绑定,看看可以和谁不能login的用户,寻找明显的属性。

虽然有人可能只是知道答案,这样教你鱼,而不是给你一条鱼。 否则它就像一条烂鱼一样发臭。 你的旅费可能会改变。