Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC
本教程將告訴你如何將 Ubuntu 桌面版機器加入到帶有 SSSD 和 Realm 服務的 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.tldLinux Admins』
$ realm permit user@domain.lan
$ realm permit DOMAIN\User2
14、 從一個 安裝了 RSAT 工具的 Windows 機器上你可以打開 AD UC 並瀏覽「 電腦 」容器,並檢驗是否有一個使用你機器名的對象帳號已經創建。
確保域被加入 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 伺服器活動目錄。
作者簡介:
Matei Cezar - 我是一名網癮少年,開源和基於 linux 系統軟體的粉絲,有4年經驗在 linux 發行版桌面、伺服器和 bash 腳本。
via: https://www.tecmint.com/integrate-ubuntu-to-samba4-ad-dc-with-sssd-and-realm/
作者:Matei Cezar 譯者:XYenChi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive