У меня есть пользователь Open Directory, у которого не установлен флажок «Учетная запись доступа» в диспетчере рабочих групп, поэтому они не могут войти в систему. Есть ли способ определить это с помощью запроса LDAP?
Также было бы неплохо проверить настройку оболочки входа для /bin/false
через LDAP, поскольку некоторые администраторы используют его для отключения входа в систему.
Информация о том, отключена ли учетная запись, не сохраняется в базе данных LDAP, поэтому вы не можете получить ее с помощью любого запроса LDAP; он находится в базе данных сервера паролей, поэтому вам нужно запросить сервер паролей. Для этого вам сначала нужно получить идентификатор слота пароля учетной записи, который будет в одном из атрибутов authAuthority в LDAP, примерно так:
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 в этом списке, указывающую, что этот пользователь в настоящее время отключен.
Чтобы найти пользователя значения оболочки входа:
Фильтр поиска (loginShell=/bin/false)
(Хотя вам могут понадобиться кавычки вокруг него, так как в нем есть косые черты.
Свяжите с браузером LDAP, например ApacheDS или LBE и посмотрите на пользователя, который может и того, кто не может войти в систему, и поищите очевидные атрибуты.
Хотя кто-то может просто знать ответ, этот способ научит вас ловить рыбу, а не давать вам рыбу. А то просто воняет тухлой рыбой. Ваш пробег может отличаться.