LDAP использует схему posixAccount и связанные атрибуты, и мне интересно, есть ли стандартизированный способ отключения учетной записи. Повторное включение учетной записи, очевидно, должно повторно включить прежний пароль.
я знаю это passwd --lock
добавляет восклицательный знак перед зашифрованным паролем в /etc/passwd
. Работает ли то же соглашение с полем userPasswd записи LDAP?
Обновление: я знаю PAM / NSS ниже, мой вопрос был специально нацелен на сервер LDAP. После блокировки учетной записи я хочу, чтобы пользователь не мог открывать аутентифицированное соединение с самим сервером LDAP (со своими собственными учетными данными). Это связано с тем, что некоторые службы используют успешное аутентифицированное соединение с LDAP в качестве простого механизма аутентификации без использования PAM для этой задачи (это обычное дело для веб-интерфейсов).
Вам может быть интересно попробовать slapo-ppolicy (Наложение политики паролей), как предлагается Вот. Это действительно своего рода стандарт, хотя это может быть излишним для того, что вы пытаетесь сделать. В частности, интересным атрибутом является
pwdAccountLockedTime
This attribute contains the time that the user's account was locked.
If the account has been locked, the password may no longer be used to
authenticate the user to the directory. If pwdAccountLockedTime is set
to 000001010000Z, the user's account has been permanently locked and
may only be unlocked by an administrator.
Стандартного способа нет, но есть несколько способов сделать это, каждый из которых является параметром конфигурации в ldap.conf (или pam-ldap.conf в зависимости от вашего дистрибутива и их настроек времени сборки pam_ldap):
pam_filter: используйте настраиваемый фильтр вместе с атрибутом в LDAP, который обозначает неактивную учетную запись.
pam_check_host_attr: pam_ldap проверит, есть ли соответствующий атрибут "host" на объекте пользователя. Если вы реализуете это таким образом, вы можете просто удалить / добавить имя хоста в этот атрибут, если пользователь сможет войти в систему. Это не коснется его пароля.
pam_check_service_attr: еще не использовал, но должен работать аналогично pam_check_host_attr.
Хех.
Unix / Linux и стандартизированный способ что-то делать. Ты забавный парень. Я знаю, я знаю, что во многих случаях существуют стандартные способы работы, но LDAP, конечно, не один из них. LDAP рифмуется с девизом Perl: «Есть несколько способов сделать это».
Такое же соглашение, чем в / etc / passwd (или в / etc / shadow если быть точным) работать будет. Подземная ваша система использует библиотеки PAM (для аутентификации) и NSS (для поиска имени) для разрешения информации об учетной записи, а для приложений пользовательского уровня она прозрачна, если результат получен из pam_ldap, pam_mysql, nss_files, nss_bdb, nss_mysql, nss_ldap или какого-либо другого источника. пока это в стандартной форме.
Итак, когда дело доходит до LDAP ...
Какой у вас предпочтительный способ? Если вы используете команду passwd, вам просто нужно подключить вашу систему с помощью pam_ldap и nss_ldap. Тогда все привычные утилиты продолжат работать в обычном режиме.