こんばんわ
興味のない方には「なんのこっちゃ?」な話かもしれません。
LDAPサーバにshadowアカウントを設定していて、shadowアカウントとしてアカウントが存在しているのですが、そのアカウントにshadowExpireというアトリビュートがあってそこに値を設定しても無視されてしまったので、無視されないようにするという話です。
そもそものshadowExpireなんぞやという話なのですが、shadowExpireには、1970/01/01からの日数が入っていて、その日数経過すると期限切れになるという仕組みで使います。例えば、1となっていると、1970/01/02に期限切れです。2ならば、1970/01/03に期限切れです。20080と入っていると2024/12/23のようです。389-DSの場合は、0は設定できない様な感じの話が書かれていました。
だんだん話しに自信がなくなってきたのですが、2024/12/23日に、20080にしたらロックされて、20081にしたらログインできましたので考え方は正しいようです。
まあ、今日とか、明日とか設定していると、よくわからなくなってしまいそうですので、設定が完了するまでは、もう少し古い日を設定して試した方がいいかもしれません。1とか。。。
結局、四苦八苦して、sssd.conf (ファイル名は環境によって異なると思います)のLDAPの設定の箇所を以下のようにしたところshadowExpireで指定した日になるとログインできなくなるという動きになりました。[sssd][pam][nss]セクションはよくあるサンプル通りに設定して問題ありませんでした。
ldap_schemaは group のメンバーがmemberuid というアトリビュートに設定しているため設定しましたが、通常はdefaultのrfc2307bisでよいと思います。
enumerate = true
id_provider = ldap
auth_provider = ldap
ldap_uri = ldaps://xxx.xxx.xxx:636
ldap_search_base = ou=xx,dc=xx,dc=xx,dc=xx
ldap_schema = rfc2307
ldap_default_authtok_type = obfuscated_password
ldap_default_authtok = XXXXXXXX
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/xxxxx/xxxx/xxx.crt
ldap_user_gecos = cn
ldap_user_uuid = uid
ldap_group_uuid = gid