用SSSD和Realm集成Ubuntu到Samba4 AD DC
本教程將告訴你如何將 Ubuntu 桌面版機(jī)器加入到帶有 SSSD 和 Realm 服務(wù)的 Samba4 活動(dòng)目錄域中,以在活動(dòng)目錄中認(rèn)證用戶。
要求:
在 Ubuntu 上用 Samba4 創(chuàng)建一個(gè)活動(dòng)目錄架構(gòu)
第 1 步:初始配置
1、 在把 Ubuntu 加入活動(dòng)目錄前確保主機(jī)名被正確設(shè)置了。使用 hostnamectl 命令設(shè)置機(jī)器名字或者手動(dòng)編輯 /etc/hostname 文件。
- $ sudo hostnamectl set-hostname your_machine_short_hostname
- $ cat /etc/hostname
- $ hostnamectl
2、 接下來,編輯機(jī)器網(wǎng)絡(luò)接口設(shè)置并且添加合適的 IP 設(shè)置,并將正確的 DNS IP 服務(wù)器地址指向 Samba 活動(dòng)目錄域控制器,如下圖所示。
如果你已經(jīng)配置了 DHCP 服務(wù)來為局域網(wǎng)機(jī)器自動(dòng)分配包括合適的 AD DNS IP 地址的 IP 設(shè)置,那么你可以跳過這一步。
設(shè)置網(wǎng)絡(luò)接口
上圖中,192.168.1.254 和 192.168.1.253 代表 Samba4 域控制器的 IP 地址。
3、 用 GUI(圖形用戶界面)或命令行重啟網(wǎng)絡(luò)服務(wù)來應(yīng)用修改,并且對(duì)你的域名發(fā)起一系列 ping 請(qǐng)求來測(cè)試 DNS 解析如預(yù)期工作。 也用 host 命令來測(cè)試 DNS 解析。
- $ sudo systemctl restart networking.service
- $ host your_domain.tld
- $ ping -c2 your_domain_name
- $ ping -c2 adc1
- $ ping -c2 adc2
4、 ***, 確保機(jī)器時(shí)間和 Samba4 AD 同步。安裝 ntpdate 包并用下列指令和 AD 同步時(shí)間。
- $ sudo apt-get install ntpdate
- $ sudo ntpdate your_domain_name
第 2 步:安裝需要的包
5、 這一步將安裝將 Ubuntu 加入 Samba4 活動(dòng)目錄域控制器所必須的軟件和依賴:Realmd 和 SSSD 服務(wù)。
- $ 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、 輸入大寫的默認(rèn) realm 名稱,然后按下回車?yán)^續(xù)安裝。
輸入 Realm 名稱
7、 接著,創(chuàng)建包含以下內(nèi)容的 SSSD 配置文件。
- $ sudo nano /etc/sssd/sssd.conf
加入下面的內(nèi)容到 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
確保你對(duì)應(yīng)地替換了下列參數(shù)的域名:
- domains = tecmint.lan
- default_domain_suffix = TECMINT.LAN
- [domain/tecmint.lan]
- ad_domain = tecmint.lan
- krb5_realm = TECMINT.LAN
8、 接著,用下列命令給 SSSD 配置文件適當(dāng)?shù)臋?quán)限:
- $ sudo chmod 700 /etc/sssd/sssd.conf
9、 現(xiàn)在,打開并編輯 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 守護(hù)進(jìn)程。 打開 /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 服務(wù)器
確保你替換了域名值,特別是對(duì)應(yīng)域名的 realm 值,并運(yùn)行 testparm 命令檢驗(yàn)設(shè)置文件是否包含錯(cuò)誤。
- $ sudo testparm
測(cè)試 Samba 配置
11、 在做完所有必需的修改之后,用 AD 管理員帳號(hào)驗(yàn)證 Kerberos 認(rèn)證并用下面的命令列出票據(jù)。
- $ sudo kinit ad_admin_user@DOMAIN.TLD
- $ sudo klist
檢驗(yàn) Kerberos 認(rèn)證
第 3 步: 加入 Ubuntu 到 Samba4 Realm
12、 鍵入下列命令將 Ubuntu 機(jī)器加入到 Samba4 活動(dòng)目錄。用有管理員權(quán)限的 AD DC 賬戶名字,以便綁定 realm 可以如預(yù)期般工作,并替換對(duì)應(yīng)的域名值。
- $ 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、 區(qū)域綁定好了之后,運(yùn)行下面的命令確保所有域賬戶允許在這臺(tái)機(jī)器上認(rèn)證。
- $ sudo realm permit -all
然后你可以使用下面舉例的 realm 命令允許或者禁止域用戶帳號(hào)或群組訪問。
- $ sudo realm deny -a
- $ realm permit --groups ‘domain.tld\Linux Admins’
- $ realm permit user@domain.lan
- $ realm permit DOMAIN\\User2
14、 從一個(gè) 安裝了 RSAT 工具的 Windows 機(jī)器上你可以打開 AD UC 并瀏覽“電腦computers”容器,并檢驗(yàn)是否有一個(gè)使用你機(jī)器名的對(duì)象帳號(hào)已經(jīng)創(chuàng)建。
確保域被加入 AD DC
第 4 步:配置 AD 賬戶認(rèn)證
15、 為了在 Ubuntu 機(jī)器上用域賬戶認(rèn)證,你需要用 root 權(quán)限運(yùn)行 pam-auth-update 命令并允許所有 PAM 配置文件,包括為每個(gè)域賬戶在***次注冊(cè)的時(shí)候自動(dòng)創(chuàng)建家目錄的選項(xiàng)。
按 [空格] 鍵檢驗(yàn)所有配置項(xiàng)并點(diǎn)擊 ok 來應(yīng)用配置。
- $ sudo pam-auth-update
PAM 配置
16、 在系統(tǒng)上手動(dòng)編輯 /etc/pam.d/common-account 文件,下面這幾行是為了給認(rèn)證過的域用戶自動(dòng)創(chuàng)建家目錄。
- session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
17、 如果活動(dòng)目錄用戶不能用 linux 命令行修改他們的密碼,打開 /etc/pam.d/common-password 文件并在 password 行移除 use_authtok 語句,***如下:
- password [success=1 default=ignore] pam_winbind.so try_first_pass
18、 ***,用下面的命令重啟并啟用以應(yīng)用 Realmd 和 SSSD 服務(wù)的修改:
- $ sudo systemctl restart realmd sssd
- $ sudo systemctl enable realmd sssd
19、 為了測(cè)試 Ubuntu 機(jī)器是是否成功集成到 realm ,安裝 winbind 包并運(yùn)行 wbinfo 命令列出域賬戶和群組,如下所示。
- $ sudo apt-get install winbind
- $ wbinfo -u
- $ wbinfo -g
列出域賬戶
20、 同樣,也可以針對(duì)特定的域用戶或群組使用 getent 命令檢驗(yàn) Winbind nsswitch 模塊。
- $ sudo getent passwd your_domain_user
- $ sudo getent group ‘domain admins’
檢驗(yàn) Winbind Nsswitch
21、 你也可以用 Linux id 命令獲取 AD 賬戶的信息,命令如下:
- $ id tecmint_user
檢驗(yàn) AD 用戶信息
22、 用 su - 后跟上域用戶名參數(shù)來認(rèn)證 Ubuntu 主機(jī)的一個(gè) Samba4 AD 賬戶。運(yùn)行 id 命令獲取該 AD 賬戶的更多信息。
- $ su - your_ad_user
AD 用戶認(rèn)證
用 pwd 命令查看你的域用戶當(dāng)前工作目錄,和用 passwd 命令修改密碼。
23、 在 Ubuntu 上使用有 root 權(quán)限的域賬戶,你需要用下面的命令添加 AD 用戶名到 sudo 系統(tǒng)群組:
- $ sudo usermod -aG sudo your_domain_user@domain.tld
用域賬戶登錄 Ubuntu 并運(yùn)行 apt update 命令來更新你的系統(tǒng)以檢驗(yàn) root 權(quán)限。
24、 給一個(gè)域群組 root 權(quán)限,用 visudo 命令打開并編輯 /etc/sudoers 文件,并加入如下行:
- %domain\ admins@tecmint.lan ALL=(ALL:ALL) ALL
25、 要在 Ubuntu 桌面使用域賬戶認(rèn)證,通過編輯 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 文件來修改 LightDM 顯示管理器,增加以下兩行并重啟 lightdm 服務(wù)或重啟機(jī)器應(yīng)用修改。
- greeter-show-manual-login=true
- greeter-hide-users=true
域賬戶用“你的域用戶”或“你的域用戶@你的域” 格式來登錄 Ubuntu 桌面。
26、 為使用 Samba AD 賬戶的簡(jiǎn)稱格式,編輯 /etc/sssd/sssd.conf 文件,在 [sssd] 塊加入如下幾行命令。
- full_name_format = %1$s
并重啟 SSSD 守護(hù)進(jìn)程應(yīng)用改變。
- $ sudo systemctl restart sssd
你會(huì)注意到 bash 提示符會(huì)變成了沒有附加域名部分的 AD 用戶名。
27、 萬一你因?yàn)?sssd.conf 里的 enumerate=true 參數(shù)設(shè)定而不能登錄,你得用下面的命令清空 sssd 緩存數(shù)據(jù):
- $ rm /var/lib/sss/db/cache_tecmint.lan.ldb
這就是全部了!雖然這個(gè)教程主要集中于集成 Samba4 活動(dòng)目錄,同樣的步驟也能被用于把使用 Realm 和 SSSD 服務(wù)的 Ubuntu 整合到微軟 Windows 服務(wù)器活動(dòng)目錄。