![使用 sssd kerberos 和 ldap 在客户端上更改密码](https://linux22.com/image/1566389/%E4%BD%BF%E7%94%A8%20sssd%20kerberos%20%E5%92%8C%20ldap%20%E5%9C%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%B8%8A%E6%9B%B4%E6%94%B9%E5%AF%86%E7%A0%81.png)
我在 ldap 用户会话中使用 passwd 时出现错误。我得到:
passwd: Authentication token manipulation error
我检查这个关联但这没用。在我的cn=config/olcDatabase={1}mbd.ldif
我有规则:
olcAccess: {0}to attrs=userPassword,shadowLastChange,krbPrincipalKey by dn="cn=rootdn,ou=private,ou=tl" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=rootdn,ou=private,ou=tl" write by * read
作品getent passwd <ldap user>
。
这是我的配置文件。
sssd.conf 文件:
[sssd]
debug_level = 0xFFF0
config_file_version = 2
services = nss,pam
domains = STAGENFS.FR
[nss]
debug_level = 0xFFF0
filter_users = root
filter_groups = root
[pam]
debug_level = 0xFFF0
offline_credentials_expiration = 1
[domain/STAGENFS.FR]
debug_level = 0xFFF0
ldap_schema = rfc2307
ldap_search_base = ou=tl
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap
ldap_access_order = filter
ldap_access_filter = &(objectClass=posixAccount) (uidNumber=*)
ldap_uri = ldaps://ldap02.stagenfs.fr
ldap_referrals = False
ldap_id_use_start_tls = False
cache_credentials = True
account_cache_expiration = 1
enumerate = True
ldap_default_bind_dn = cn=proxyuser,ou=private,ou=tl
ldap_default_authtok_type = password
ldap_default_authtok = ProxyUser123#
ldap_tls_cacert = /etc/ssl/certs/cacert.pem
krb5_realm = STAGENFS.FR
krb5_canonicalize = False
krb5_server = kdc.stagenfs.fr
krb5_kpasswd = kdc.stagenfs.fr
krb5_ccachedir = /home/%u
nsswitch 文件:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat systemd sss
group: compat systemd sss
shadow: compat sss
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
networks: files
protocols: db files
services: db files sss
ethers: db files
rpc: db files
netgroup: nis sss
sudoers: files sss
我在 pam.d 文件中有 pam_sss.so:
# /etc/pam.d/common-account
account [default=bad success=ok user_unknown=ignore] pam_sss.so
# /etc/pam.d/common-auth
auth [success=1 default=ignore] pam_sss.so use_first_pass
# /etc/pam.d/common-password
password sufficient pam_sss.so use_authtok
# /etc/pam.d/common-session
session required pam_mkhomedir.so skel=/etc/skel/
session optional pam_sss.so
你知道我是否需要为此进行 sasl 配置吗?如果你有任何想法,或者需要更多信息,请不要犹豫!谢谢。
答案1
如果没有看到日志很难提供帮助,但我会尝试:
我假设您设置了 MIT Kerberos 并使用 OpenLDAP 作为后端。
请注意改变密钥做不是要求用户(自己)具有写访问权限,因为 Kerberos 密钥实际上是由管理控制台将其服务标识绑定到 LDAP 服务器。
因此,你应该检查是否已为管理控制台和 KDC 服务。如果您的问题中提到的 ACL 就是您拥有的全部,那么肯定还缺少一些部分。
您可以在 MIT Kerberos 文档中找到详细信息(基于 OpenLDAP 静态配置的语法slapd配置文件):