SSSD

出自 ArchWiki

SSSD 是一个系统守护进程。它的主要功能是通过一个通用框架提供对身份和认证远程资源的访问,该框架可以为系统提供缓存和离线支持。它提供 PAM 和 NSS 模块,未来还将提供基于 D-BUS 的接口以获取扩展的用户信息。它还提供了一个更好的数据库来存储本地用户以及扩展的用户数据。

安装

安装 sssd 软件包。

配置

LDAP

参见 LDAP 认证#SSSD 配置

PAM 代理

如果您希望以非 root 用户身份运行的软件能够使用 pam_unix.so 进行身份验证,您可以将 SSSD 作为 PAM 代理运行,方法是创建以下文件。

/etc/sssd/sssd.conf
[sssd]
services = pam
domains = local

[domain/local]
id_provider = proxy
proxy_lib_name = files
proxy_pam_target = sssd-shadowutils
/etc/pam.d/sssd
#%PAM-1.0

auth      required  pam_sss.so
account   required  pam_sss.so
password  required  pam_sss.so
session   required  pam_sss.so

现在在您的软件配置中指定 sssd 作为 PAM 服务名称。

以 root 身份运行 SSSD

本文或本节内容的准确性存疑。

原因: 如果总是需要覆盖,则需要进一步的软件包更改。如果不是,则需要一个程序来了解何时干预打包。(在 Talk:SSSD 中讨论)
注意: 参见 archlinux/packaging/packages/sssd/#5,了解覆盖的负面影响。

SSSD 2.10 及更高版本默认以非 root 用户身份运行,但在此处它需要以 root 身份运行才能访问 /etc/shadow覆盖单元 sssd.service,就像这样

[Service]
Environment=DEBUG_LOGGER=--logger=files
EnvironmentFile=-/etc/sysconfig/sssd
ExecStartPre=+-/bin/chown -f root:sssd /etc/sssd
ExecStartPre=+-/bin/chown -f root:sssd /etc/sssd/sssd.conf
ExecStartPre=+-/bin/chown -f -R root:sssd /etc/sssd/conf.d
ExecStartPre=+-/bin/chown -f -R root:sssd /etc/sssd/pki
ExecStartPre=+-/bin/sh -c "/bin/chown -f root:sssd /var/lib/sss/db/*.ldb"
ExecStartPre=+-/bin/sh -c "/bin/chown -f root:sssd /var/lib/sss/gpo_cache/*"
ExecStartPre=+-/bin/sh -c "/bin/chown -f root:sssd /var/log/sssd/*.log"
ExecStart=/usr/bin/sssd -i ${DEBUG_LOGGER}
Type=notify
NotifyAccess=main
Restart=on-abnormal
CapabilityBoundingSet= CAP_CHOWN CAP_DAC_OVERRIDE CAP_SETGID CAP_SETUID CAP_DAC_READ_SEARCH 
#SecureBits=noroot noroot-locked
User=root
Group=sssd
# If service configured to be run under "root", uncomment "SupplementaryGroups"
#SupplementaryGroups=sssd

请注意,SSSD 希望其文件(如 /var/log/sssd/etc/sssd)与运行 SSSD 的用户具有相同的属主,因此您必须 chown 这些文件以 root 拥有。此外,删除并在 /etc/pacman.conf 中的 NoExtract 中添加 /usr/lib/tmpfiles.d/sssd-perms.conf,以防止 systemd-tmpfiles 还原 SSSD 文件的权限。

最后,启用/启动 sssd.service

技巧和窍门

阻止使用空密码登录

如果使用 SSSD 作为 PAM 代理,默认情况下它允许登录到具有空密码的帐户,这可能是不 желательным。要解决此问题,请从 /etc/pam.d/sssd-shadowutils 中删除 nullok

/etc/pam.d/sssd-shadowutils
#%PAM-1.0
auth        [success=done ignore=ignore default=die] pam_unix.so try_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so
account     required      pam_permit.so

然后将该文件添加到 /etc/pacman.conf 中的 NoUpgrade

参见