用SSSD和Realm集成Ubuntu到Samba4 AD DC
本教程將告訴你如何將 Ubuntu 桌面版機器加入到帶有 SSSD 和 Realm 服務的 Samba4 活動目錄域中,以在活動目錄中認證用戶。
要求:
在 Ubuntu 上用 Samba4 創建一個活動目錄架構
第 1 步:初始配置
1、 在把 Ubuntu 加入活動目錄前確保主機名被正確設置了。使用 hostnamectl 命令設置機器名字或者手動編輯 /etc/hostname 文件。
- $ sudo hostnamectl set-hostname your_machine_short_hostname
- $ cat /etc/hostname
- $ hostnamectl
2、 接下來,編輯機器網絡接口設置并且添加合適的 IP 設置,并將正確的 DNS IP 服務器地址指向 Samba 活動目錄域控制器,如下圖所示。
如果你已經配置了 DHCP 服務來為局域網機器自動分配包括合適的 AD DNS IP 地址的 IP 設置,那么你可以跳過這一步。
設置網絡接口
上圖中,192.168.1.254 和 192.168.1.253 代表 Samba4 域控制器的 IP 地址。
3、 用 GUI(圖形用戶界面)或命令行重啟網絡服務來應用修改,并且對你的域名發起一系列 ping 請求來測試 DNS 解析如預期工作。 也用 host 命令來測試 DNS 解析。
- $ sudo systemctl restart networking.service
- $ host your_domain.tld
- $ ping -c2 your_domain_name
- $ ping -c2 adc1
- $ ping -c2 adc2
4、 ***, 確保機器時間和 Samba4 AD 同步。安裝 ntpdate 包并用下列指令和 AD 同步時間。
- $ sudo apt-get install ntpdate
- $ sudo ntpdate your_domain_name
第 2 步:安裝需要的包
5、 這一步將安裝將 Ubuntu 加入 Samba4 活動目錄域控制器所必須的軟件和依賴:Realmd 和 SSSD 服務。
- $ sudo apt install adcli realmd krb5-user samba-common-bin samba-libs samba-dsdb-modules sssd sssd-tools libnss-sss libpam-sss packagekit policykit-1
6、 輸入大寫的默認 realm 名稱,然后按下回車繼續安裝。
輸入 Realm 名稱
7、 接著,創建包含以下內容的 SSSD 配置文件。
- $ sudo nano /etc/sssd/sssd.conf
加入下面的內容到 sssd.conf 文件。
- [nss]
- filter_groups = root
- filter_users = root
- reconnection_retries = 3
- [pam]
- reconnection_retries = 3
- [sssd]
- domains = tecmint.lan
- config_file_version = 2
- services = nss, pam
- default_domain_suffix = TECMINT.LAN
- [domain/tecmint.lan]
- ad_domain = tecmint.lan
- krb5_realm = TECMINT.LAN
- realmd_tags = manages-system joined-with-samba
- cache_credentials = True
- id_provider = ad
- krb5_store_password_if_offline = True
- default_shell = /bin/bash
- ldap_id_mapping = True
- use_fully_qualified_names = True
- fallback_homedir = /home/%d/%u
- access_provider = ad
- auth_provider = ad
- chpass_provider = ad
- access_provider = ad
- ldap_schema = ad
- dyndns_update = true
- dyndsn_refresh_interval = 43200
- dyndns_update_ptr = true
- dyndns_ttl = 3600
確保你對應地替換了下列參數的域名:
- domains = tecmint.lan
- default_domain_suffix = TECMINT.LAN
- [domain/tecmint.lan]
- ad_domain = tecmint.lan
- krb5_realm = TECMINT.LAN
8、 接著,用下列命令給 SSSD 配置文件適當的權限:
- $ sudo chmod 700 /etc/sssd/sssd.conf
9、 現在,打開并編輯 Realmd 配置文件,輸入下面這行:
- $ sudo nano /etc/realmd.conf
realmd.conf 文件摘錄:
- [active-directory]
- os-name = Linux Ubuntu
- os-version = 17.04
- [service]
- automatic-install = yes
- [users]
- default-home = /home/%d/%u
- default-shell = /bin/bash
- [tecmint.lan]
- user-principal = yes
- fully-qualified-names = no
10、 ***需要修改的文件屬于 Samba 守護進程。 打開 /etc/samba/smb.conf 文件編輯,然后在文件開頭加入下面這塊代碼,在 [global] 之后的部分如下圖所示。
- workgroup = TECMINT
- client signing = yes
- client use spnego = yes
- kerberos method = secrets and keytab
- realm = TECMINT.LAN
- security = ads
配置 Samba 服務器
確保你替換了域名值,特別是對應域名的 realm 值,并運行 testparm 命令檢驗設置文件是否包含錯誤。
- $ sudo testparm
測試 Samba 配置
11、 在做完所有必需的修改之后,用 AD 管理員帳號驗證 Kerberos 認證并用下面的命令列出票據。
- $ sudo kinit ad_admin_user@DOMAIN.TLD
- $ sudo klist
檢驗 Kerberos 認證
第 3 步: 加入 Ubuntu 到 Samba4 Realm
12、 鍵入下列命令將 Ubuntu 機器加入到 Samba4 活動目錄。用有管理員權限的 AD DC 賬戶名字,以便綁定 realm 可以如預期般工作,并替換對應的域名值。
- $ sudo realm discover -v DOMAIN.TLD
- $ sudo realm list
- $ sudo realm join TECMINT.LAN -U ad_admin_user -v
- $ sudo net ads join -k
加入 Ubuntu 到 Samba4 Realm
列出 Realm Domain 信息
添加用戶到 Realm Domain
添加 Domain 到 Realm
13、 區域綁定好了之后,運行下面的命令確保所有域賬戶允許在這臺機器上認證。
- $ sudo realm permit -all
然后你可以使用下面舉例的 realm 命令允許或者禁止域用戶帳號或群組訪問。
- $ sudo realm deny -a
- $ realm permit --groups ‘domain.tld\Linux Admins’
- $ realm permit user@domain.lan
- $ realm permit DOMAIN\\User2
14、 從一個 安裝了 RSAT 工具的 Windows 機器上你可以打開 AD UC 并瀏覽“電腦computers”容器,并檢驗是否有一個使用你機器名的對象帳號已經創建。
確保域被加入 AD DC
第 4 步:配置 AD 賬戶認證
15、 為了在 Ubuntu 機器上用域賬戶認證,你需要用 root 權限運行 pam-auth-update 命令并允許所有 PAM 配置文件,包括為每個域賬戶在***次注冊的時候自動創建家目錄的選項。
按 [空格] 鍵檢驗所有配置項并點擊 ok 來應用配置。
- $ sudo pam-auth-update
PAM 配置
16、 在系統上手動編輯 /etc/pam.d/common-account 文件,下面這幾行是為了給認證過的域用戶自動創建家目錄。
- session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
17、 如果活動目錄用戶不能用 linux 命令行修改他們的密碼,打開 /etc/pam.d/common-password 文件并在 password 行移除 use_authtok 語句,***如下:
- password [success=1 default=ignore] pam_winbind.so try_first_pass
18、 ***,用下面的命令重啟并啟用以應用 Realmd 和 SSSD 服務的修改:
- $ sudo systemctl restart realmd sssd
- $ sudo systemctl enable realmd sssd
19、 為了測試 Ubuntu 機器是是否成功集成到 realm ,安裝 winbind 包并運行 wbinfo 命令列出域賬戶和群組,如下所示。
- $ sudo apt-get install winbind
- $ wbinfo -u
- $ wbinfo -g
列出域賬戶
20、 同樣,也可以針對特定的域用戶或群組使用 getent 命令檢驗 Winbind nsswitch 模塊。
- $ sudo getent passwd your_domain_user
- $ sudo getent group ‘domain admins’
檢驗 Winbind Nsswitch
21、 你也可以用 Linux id 命令獲取 AD 賬戶的信息,命令如下:
- $ id tecmint_user
檢驗 AD 用戶信息
22、 用 su - 后跟上域用戶名參數來認證 Ubuntu 主機的一個 Samba4 AD 賬戶。運行 id 命令獲取該 AD 賬戶的更多信息。
- $ su - your_ad_user
AD 用戶認證
用 pwd 命令查看你的域用戶當前工作目錄,和用 passwd 命令修改密碼。
23、 在 Ubuntu 上使用有 root 權限的域賬戶,你需要用下面的命令添加 AD 用戶名到 sudo 系統群組:
- $ sudo usermod -aG sudo your_domain_user@domain.tld
用域賬戶登錄 Ubuntu 并運行 apt update 命令來更新你的系統以檢驗 root 權限。
24、 給一個域群組 root 權限,用 visudo 命令打開并編輯 /etc/sudoers 文件,并加入如下行:
- %domain\ admins@tecmint.lan ALL=(ALL:ALL) ALL
25、 要在 Ubuntu 桌面使用域賬戶認證,通過編輯 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 文件來修改 LightDM 顯示管理器,增加以下兩行并重啟 lightdm 服務或重啟機器應用修改。
- greeter-show-manual-login=true
- greeter-hide-users=true
域賬戶用“你的域用戶”或“你的域用戶@你的域” 格式來登錄 Ubuntu 桌面。
26、 為使用 Samba AD 賬戶的簡稱格式,編輯 /etc/sssd/sssd.conf 文件,在 [sssd] 塊加入如下幾行命令。
- full_name_format = %1$s
并重啟 SSSD 守護進程應用改變。
- $ sudo systemctl restart sssd
你會注意到 bash 提示符會變成了沒有附加域名部分的 AD 用戶名。
27、 萬一你因為 sssd.conf 里的 enumerate=true 參數設定而不能登錄,你得用下面的命令清空 sssd 緩存數據:
- $ rm /var/lib/sss/db/cache_tecmint.lan.ldb
這就是全部了!雖然這個教程主要集中于集成 Samba4 活動目錄,同樣的步驟也能被用于把使用 Realm 和 SSSD 服務的 Ubuntu 整合到微軟 Windows 服務器活動目錄。