使用 sssd 进行本地身份验证并根据 /etc/passwd 进行识别?

使用 sssd 进行本地身份验证并根据 /etc/passwd 进行识别?

这个问题是关于 RedHat Enterprise Linux 7/8/9 和 Ubuntu 22.04 的,但对于大多数发行版来说它可能非常普遍。

我让 sssd 使用两个域针对 Active Directory 和基于 openldap 的 LDAP 服务器进行身份验证。

用户可以成功登录[电子邮件保护]并针对 Active Directory 进行身份验证,或以以下身份登录[电子邮件保护]并针对 openldap 进行身份验证。身份信息(UID、Gecos 和主目录)在两种情况下均来自 openldap 服务器。所有相关用户都存在于两个系统中(为什么这样设置,说来话长,但这里并不真正相关)。

无论用户使用哪个域,Linux 都会将该登录视为同一个用户。

我刚刚收到一个新要求,添加一个新的 SSSD 域(名为“本地”),该域根据本地 /etc/{password,shadow} 进行身份验证,并且还可以在没有任何网络流量的情况下获取身份信息。/etc/password 和 /etc/shadow 将被正确填充(超出了这个问题的范围)。

有没有办法创建一个使用本地文件作为身份验证和识别源的 sssd 域?

这可能不相关,但这里有两个现有的 SSSD 域。

活动目录:

[domain/ad.mydomain.com]
auth_provider = krb5
id_provider = ldap
# We do not allow changing passwords
# chpass_provider = none

krb5_server = <redacted>
krb5_realm = AD.MYDOMAIN.COM

# Regardless of the auth provider, the id information always comes from
# LDAP.
ldap_schema = rfc2307
ldap_uri = ldaps://<redacted>/
ldap_search_base = ou=people,dc=mydomain,dc=com
ldap_group_member = memberuid
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/openldap/cacerts/<redacted>

ldap_default_bind_dn = <redacted>
ldap_default_authtok_type = password
ldap_default_authtok = <redacted>
ldap_user_ssh_public_key = sshPublicKey

entry_cache_timeout = 600
ldap_network_timeout = 3
cache_credentials = True

override_homedir = /home/%u
fallback_homedir = /home/%u
default_shell = /bin/bash

# Some performance tweaks. Without it, LDAP is painfully slow!
enumerate = false
ignore_group_members = true

openldap:

[domain/mydomain.com]
auth_provider = ldap
id_provider = ldap
# We do not allow changing passwords outside of USD_ONE
# chpass_provider = none

# Regardless of the auth provider, the id information always comes from
# LDAP.
ldap_schema = rfc2307
... Remainder is same as for Active Directory

我想要做的事情是(这实际上不起作用):

[domain/local]
auth_provider = files
id_provider = files # don't use LDAP for this domain
... other parameters

有没有办法让 SSSD 使用本地文件?

相关内容