Pam

使用 SSSD (LDAP) 進行身份驗證,但在登錄後使用 /etc/passwd

  • May 25, 2018

我有以下設置:

  • 我有來自兩個不同組織(單獨的 AD 安裝)的兩個不同域中的使用者user@DOMAIN和使用者user@OTHERDOMAIN
  • 在系統上,這些使用者映射到user_duser_o
  • 出於性能(和其他原因),使用者登錄到 UID 映射、GID 和 Gecos 資訊在/etc/{passwd,group}.
  • AD 伺服器不知道登錄到 UID 和 GID 的映射。

我目前正在使用 CentOS 7.4 和 sssd 1.15.2 來實現這一點。

幾乎可以使用它(有關配置部分的摘錄,請參見下文)。我可以在本地登錄,user@DOMAIN我是(的結果whoamiuser_d。但是,我的 uid 設置為10008. 一些小組分配是虛假的,但我的小組/etc/groups是正確的。

的輸出getent passwd user_d也給了我/etc/passwd文件的正確結果。

看來我只漏掉了一小塊拼圖…

固態硬碟配置

[sssd]
services = nss, pam
config_file_version = 2
domains = DOMAIN,OTHER

[domain/DOMAIN]
access_provider = ldap
auth_provider = ldap
id_provider = ldap
use_fully_qualified_names = True
full_name_format = %1$s_d

ldap_access_filter = objectClass=person
ldap_tls_reqcert = allow
ldap_schema = ad
ldap_user_object_class = person
ldap_user_name = sAMAccountName
ldap_user_fullname = displayName
ldap_id_mapping = False
ldap_uri = <ldap URI>
ldap_search_base = <search base>
ldap_default_bind_dn = <bind user>
ldap_default_authtok = <bind user password>

/etc/pam.d/password-auth-local

auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_sss.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     sufficient    pam_sss.so
session     required      pam_unix.so

/etc/nsswitch.conf

passwd:     file

s sss
shadow:     files
group:      files
#initgroups: files

#hosts:     db files nisplus nis dns
hosts:      files dns myhostname

# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files     

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus

解決此問題的唯一方法似乎是sss_seedandsss_override_user命令。

sss_seed首先,使用(例如,從現有/etc/passwd文件)將您想要的所有使用者導入 SSS 記憶體。

然後,使用sss_override_user.

請注意,該文件似乎具有誤導性,您將需要:在覆蓋導入文件中多一個冒號而不是在/etc/passwd文件中(只需附加一個對我來說效果很好)。

引用自:https://serverfault.com/questions/913361