linux之SSSD
来自ubuntu官网,比网上杂七杂八互抄的来的好。链接https://ubuntu.com/server/docs/service-sssd或者前往SSSD开发者的官网https://sssd.io/docs/introduction.html查看
SSSD
SSSD代表SystemSecurityServicesDaemon,它实际上是一组守护进程,用于处理来自各种网络源的身份验证、授权以及用户和组信息。它的核心是支持:
SSSD提供PAM和NSS模块来将这些远程源集成到您的系统中,并允许远程用户登录并被识别为有效用户,包括组成员。为了允许断开连接的操作,SSSD还可以缓存这些信息,以便用户可以在发生网络故障或其他同类问题时继续登录。
本指南将重点介绍部署SSSD的最常见场景。
SSSD和ActiveDirectory
本节描述使用sssd通过使用sssd的“ad”提供程序来验证针对ActiveDirectory的用户登录。最后,Active Directory用户将能够使用他们的AD凭据登录到主机上。还将保持小组成员资格。
先决条件、假设和要求
-
本指南不解释Active Directory、它是如何工作的、如何设置ActiveDirectory或如何维护它。
-
本指南假设已经配置了工作ActiveDirectory域,并且您可以访问凭据将计算机连接到该域。
-
域控制器充当域的权威DNS服务器。
-
域控制器是主要的dns解析器(请使用
systemd-resolve --status
) -
系统时间是正确的,并且是同步的,通过这样的服务来维护编年史或NTP
-
本例中使用的域是
ad1.example.com
.
软件安装
安装下列软件包:
sudo apt install sssd-ad sssd-tools realmd adcli
加入域
我们将使用realm
命令,从realmd
包,以加入域并创建sssd配置。
让我们验证通过DNS可以发现域:
$ sudo realm -v discover ad1.example.com
* Resolving: _ldap._tcp.ad1.example.com
* Performing LDAP DSE lookup on: 10.51.0.5
* Successfully discovered: ad1.example.com
ad1.example.com
type: kerberos
realm-name: AD1.EXAMPLE.COM
domain-name: ad1.example.com
configured: no
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin
这将执行几个检查,并确定与sssd一起使用的最佳软件堆栈。Sssd可以通过包装袋,但我们以前已经安装过了。
现在让我们加入域:
$ sudo realm join ad1.example.com
Password for Administrator:
那是相当平淡无奇的。如果您想看看它在做什么,请通过-v
备选方案:
$ sudo realm join -v ad1.example.com
* Resolving: _ldap._tcp.ad1.example.com
* Performing LDAP DSE lookup on: 10.51.0.5
* Successfully discovered: ad1.example.com
Password for Administrator:
* Unconditionally checking packages
* Resolving required packages
* LANG=C /usr/sbin/adcli join --verbose --domain ad1.example.com --domain-realm AD1.EXAMPLE.COM --domain-controller 10.51.0.5 --login-type user --login-user Administrator --stdin-password
* Using domain name: ad1.example.com
* Calculated computer account name from fqdn: AD-CLIENT
* Using domain realm: ad1.example.com
* Sending NetLogon ping to domain controller: 10.51.0.5
* Received NetLogon info from: SERVER1.ad1.example.com
* Wrote out krb5.conf snippet to /var/cache/realmd/adcli-krb5-hUfTUg/krb5.d/adcli-krb5-conf-hv2kzi
* Authenticated as user: Administrator@AD1.EXAMPLE.COM
* Looked up short domain name: AD1
* Looked up domain SID: S-1-5-21-2660147319-831819607-3409034899
* Using fully qualified name: ad-client.ad1.example.com
* Using domain name: ad1.example.com
* Using computer account name: AD-CLIENT
* Using domain realm: ad1.example.com
* Calculated computer account name from fqdn: AD-CLIENT
* Generated 120 character computer password
* Using keytab: FILE:/etc/krb5.keytab
* Found computer account for AD-CLIENT$ at: CN=AD-CLIENT,CN=Computers,DC=ad1,DC=example,DC=com
* Sending NetLogon ping to domain controller: 10.51.0.5
* Received NetLogon info from: SERVER1.ad1.example.com
* Set computer password
* Retrieved kvno '3' for computer account in directory: CN=AD-CLIENT,CN=Computers,DC=ad1,DC=example,DC=com
* Checking RestrictedKrbHost/ad-client.ad1.example.com
* Added RestrictedKrbHost/ad-client.ad1.example.com
* Checking RestrictedKrbHost/AD-CLIENT
* Added RestrictedKrbHost/AD-CLIENT
* Checking host/ad-client.ad1.example.com
* Added host/ad-client.ad1.example.com
* Checking host/AD-CLIENT
* Added host/AD-CLIENT
* Discovered which keytab salt to use
* Added the entries to the keytab: AD-CLIENT$@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
* Added the entries to the keytab: host/AD-CLIENT@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
* Added the entries to the keytab: host/ad-client.ad1.example.com@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
* Added the entries to the keytab: RestrictedKrbHost/AD-CLIENT@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
* Added the entries to the keytab: RestrictedKrbHost/ad-client.ad1.example.com@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
* /usr/sbin/update-rc.d sssd enable
* /usr/sbin/service sssd restart
* Successfully enrolled machine in realm
默认情况下,境界将使用管理员请求连接的域帐户。如果您需要使用另一个帐户,请将其传递给工具。-U
选择。
另一种常用的加入域的方法是使用OTP,或一次密码、令牌。为此,请使用--one-time-password
选择。
SSSD配置
这个境界工具已经负责创建sssd配置,添加PAM和NSS模块,并启动必要的服务。
让我们看看/etc/sssd/sssd.conf
:
[sssd]
domains = ad1.example.com
config_file_version = 2
services = nss, pam
[domain/ad1.example.com]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = AD1.EXAMPLE.COM
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = ad1.example.com
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad
注
需要记住的是,该文件必须具有权限。0600和所有权根:根否则SSD就不会启动了!
让我们强调一下这个配置中的一些内容:
- 缓存凭证:这允许在无法访问AD服务器时登录。
- 主目录:默认情况下
/home/<user>@<domain>
。例如,AD用户约翰的主目录/home/john@ad1.example.com - 使用完全限定的名称*用户将采用表格用户@域,而不仅仅是用户。只有当您确定没有其他域将通过几种可能的信任关系中的一种加入AD林时,才应更改此值。
自动主目录创建
这是什么realm
工具没有为我们做的是设置pam_mkhomedir
,以便网络用户在登录时可以获得主目录。其余的步骤可以通过运行以下命令来完成:
sudo pam-auth-update --enable mkhomedir
更多内容访问https://ubuntu.com/server/docs/service-sssd
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧