來自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
