Pam
使用 SSSD (LDAP) 進行身份驗證,但在登錄後使用 /etc/passwd
我有以下設置:
- 我有來自兩個不同組織(單獨的 AD 安裝)的兩個不同域中的使用者
user@DOMAIN
和使用者user@OTHERDOMAIN
- 在系統上,這些使用者映射到
user_d
和user_o
。- 出於性能(和其他原因),使用者登錄到 UID 映射、GID 和 Gecos 資訊在
/etc/{passwd,group}
.- AD 伺服器不知道登錄到 UID 和 GID 的映射。
我目前正在使用 CentOS 7.4 和 sssd 1.15.2 來實現這一點。
我幾乎可以使用它(有關配置部分的摘錄,請參見下文)。我可以在本地登錄,
user@DOMAIN
我是(的結果whoami
)user_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_seed
andsss_override_user
命令。
sss_seed
首先,使用(例如,從現有/etc/passwd
文件)將您想要的所有使用者導入 SSS 記憶體。然後,使用
sss_override_user
.請注意,該文件似乎具有誤導性,您將需要
:
在覆蓋導入文件中多一個冒號而不是在/etc/passwd
文件中(只需附加一個對我來說效果很好)。