閱讀671 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Samba 係列(八):使用 Samba 和 Winbind 將 Ubuntu 16.04 添加到 AD 域

這篇文章講述了如何將 Ubuntu 主機加入到 Samba4 AD 域,並實現使用域帳號登錄 Ubuntu 係統。

要求:

  1. 在 Ubuntu 係統上使用 Samba4 軟件來創建活動目錄架構

第一步: Ubuntu 係統加入到 Samba4 AD 之前的基本配置

1、在將 Ubuntu 主機加入到 AD DC 之前,你得先確保 Ubuntu 係統中的一些服務配置正常。

主機名是你的機器的一個重要標識。因此,在加入域前,使用 hostnamectl 命令或者通過手動編輯/etc/hostname 文件來為 Ubuntu 主機設置一個合適的主機名。


  1. # hostnamectl set-hostname your_machine_short_name
  2. # cat /etc/hostname
  3. # hostnamectl

設置係統主機名

設置係統主機名

2、在這一步中,打開並編輯網卡配置文件,為你的主機設置一個合適的 IP 地址。注意把 DNS 地址設置為你的域控製器的地址。

編輯 /etc/network/interfaces 文件,添加 dns-nameservers 參數,並設置為 AD 服務器的 IP 地址;添加dns-search 參數,其值為域控製器的主機名,如下圖所示。

並且,把上麵設置的 DNS IP 地址和域名添加到 /etc/resolv.conf 配置文件中,如下圖所示:

為 AD 配置網絡設置

為 AD 配置網絡設置

在上麵的截圖中, 192.168.1.254 和 192.168.1.253 是 Samba4 AD DC 服務器的 IP 地址, Tecmint.lan是 AD 域名,已加入到這個域中的所有機器都可以查詢到該域名。

3、重啟網卡服務或者重啟計算機以使網卡配置生效。使用 ping 命令加上域名來檢測 DNS 解析是否正常。

AD DC 應該返回的是 FQDN 。如果你的網絡中配置了 DHCP 服務器來為局域網中的計算機自動分配 IP 地址,請確保你已經把 AD DC 服務器的 IP 地址添加到 DHCP 服務器的 DNS 配置中。


  1. # systemctl restart networking.service
  2. # ping -c2 your_domain_name

4、最後一步是配置服務器時間同步。安裝 ntpdate 包,使用下麵的命令來查詢並同步 AD DC 服務器的時間。


  1. $ sudo apt-get install ntpdate
  2. $ sudo ntpdate -q your_domain_name
  3. $ sudo ntpdate your_domain_name

AD 服務器時間同步

AD 服務器時間同步

5、下一步,在 Ubuntu 機器上執行下麵的命令來安裝加入域環境所必需軟件。


  1. $ sudo apt-get install samba krb5-config krb5-user winbind libpam-winbind libnss-winbind

在 Ubuntu 機器上安裝 Samba4 軟件

在 Ubuntu 機器上安裝 Samba4 軟件

在 Kerberos 軟件包安裝的過程中,你會被詢問輸入默認的域名。輸入大寫的域名,並按 Enter 鍵繼續安裝。

添加 AD 域名

添加 AD 域名

6、當所有的軟件包安裝完成之後,使用域管理員帳號來測試 Kerberos 認證,然後執行下麵的命令來列出票據信息。


  1. # kinit ad_admin_user
  2. # klist

使用 AD 來檢查 Kerberos 認證是否正常

使用 AD 來檢查 Kerberos 認證是否正常

第二步:將 Ubuntu 主機添加到 Samba4 AD DC

7、將 Ubuntu 主機添加到 Samba4 活動目錄域環境中的第一步是編輯 Samba 配置文件。

備份 Samba 的默認配置文件,這個配置文件是安裝 Samba 軟件的過程中自動生成的,使用下麵的命令來重新初始化配置文件。


  1. # mv /etc/samba/smb.conf /etc/samba/smb.conf.initial
  2. # nano /etc/samba/smb.conf 

在新的 Samba 配置文件中添加以下內容:


  1. [global]
  2. workgroup = TECMINT
  3. realm = TECMINT.LAN
  4. netbios name = ubuntu
  5. security = ADS
  6. dns forwarder = 192.168.1.1
  7. idmap config * : backend = tdb
  8. idmap config *:range = 50000-1000000
  9. template homedir = /home/%D/%U
  10. template shell = /bin/bash
  11. winbind use default domain = true
  12. winbind offline logon = false
  13. winbind nss info = rfc2307
  14. winbind enum users = yes
  15. winbind enum groups = yes
  16. vfs objects = acl_xattr
  17. map acl inherit = Yes
  18. store dos attributes = Yes

Samba 服務的 AD 環境配置

Samba 服務的 AD 環境配置

根據你本地的實際情況來替換 workgroup , realm , netbios name 和 dns forwarder 的參數值。

由於 winbind use default domain 這個參數會讓 winbind 服務把任何登錄係統的帳號都當作 AD 帳號。因此,如果存在本地帳號名跟域帳號同名的情況下,請不要設置該參數。

8、現在,你應該重啟 Samba 後台服務,停止並卸載一些不必要的服務,然後啟用 samba 服務的 system-wide 功能,使用下麵的命令來完成。


  1. $ sudo systemctl restart smbd nmbd winbind
  2. $ sudo systemctl stop samba-ad-dc
  3. $ sudo systemctl enable smbd nmbd winbind

9、通過下麵的命令,使用域管理員帳號來把 Ubuntu 主機加入到 Samba4 AD DC 中。


  1. $ sudo net ads join -U ad_admin_user

把 Ubuntu 主機加入到 Samba4 AD DC

把 Ubuntu 主機加入到 Samba4 AD DC

10、在 安裝了 RSAT 工具的 Windows 機器上 打開 AD UC ,展開到包含的計算機。你可以看到已加入域的 Ubuntu 計算機。

確認 Ubuntu 計算機已加入到 Windows AD DC

確認 Ubuntu 計算機已加入到 Windows AD DC

第三步:配置 AD 帳號認證

11、為了在本地完成 AD 帳號認證,你需要修改本地機器上的一些服務和配置文件。

首先,打開並編輯名字服務切換 (NSS) 配置文件。


  1. $ sudo nano /etc/nsswitch.conf

然後在 passwd 和 group 行添加 winbind 值,如下圖所示:


  1. passwd: compat winbind
  2. group: compat winbind

配置 AD 帳號認證

配置 AD 帳號認證

12、為了測試 Ubuntu 機器是否已加入到域中,你可以使用 wbinfo 命令來列出域帳號和組。


  1. $ wbinfo -u
  2. $ wbinfo -g

列出域帳號和組

列出域帳號和組

13、同時,使用 getent 命令加上管道符及 grep 參數來過濾指定域用戶或組,以測試 Winbind nsswitch 模塊是否運行正常。


  1. $ sudo getent passwd| grep your_domain_user
  2. $ sudo getent group|grep 'domain admins'

檢查 AD 域用戶和組

檢查 AD 域用戶和組

14、為了讓域帳號在 Ubuntu 機器上完成認證登錄,你需要使用 root 帳號運行 pam-auth-update 命令,然後勾選 winbind 服務所需的選項,以讓每個域帳號首次登錄時自動創建 home 目錄。

查看所有的選項,按 ‘[空格]’鍵選中,單擊 OK 以應用更改。


  1. $ sudo pam-auth-update

使用域帳號登錄 Ubuntu 主機

使用域帳號登錄 Ubuntu 主機

15、在 Debian 係統中,如果想讓係統自動為登錄的域帳號創建家目錄,你需要手動編輯 /etc/pam.d/common-account 配置文件,並添加下麵的內容。


  1. session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

使用域帳號登錄 Debian 係統

使用域帳號登錄 Debian 係統

16、為了讓 AD 用戶能夠在 Linux 的命令行下修改密碼,你需要打開 /etc/pam.d/common-password 配置文件,在 password 那一行刪除 use_authtok 參數,如下圖所示:


  1. password [success=1 default=ignore] pam_winbind.so try_first_pass

允許域帳號在 Linux 命令行下修改密碼

允許域帳號在 Linux 命令行下修改密碼

17、要使用 Samba4 AD 帳號來登錄 Ubuntu 主機,在 su - 後麵加上域用戶名即可。你還可以通過運行 id命令來查看 AD 帳號的其它信息。


  1. $ su - your_ad_user

查看 AD 用戶信息

查看 AD 用戶信息

使用 pwd 命令來查看域帳號的當前目錄,如果你想修改域帳號的密碼,你可以使用 passwd 命令來完成。

18、如果想讓域帳號在 ubuntu 機器上擁有 root 權限,你可以使用下麵的命令來把 AD 帳號添加到 sudo 係統組中:


  1. $ sudo usermod -aG sudo your_domain_user

登錄域帳號登錄到 Ubuntu 主機,然後運行 apt-get-update 命令來更新係統,以驗證域賬號是否擁有 root 權限。

給域帳號添加 root 權限

給域帳號添加 root 權限

19、要為整個域用戶組添加 root 權限,使用 vi 命令打開並編輯 /etc/sudoers 配置文件,如下圖所示,添加如下內容:


  1. %YOUR_DOMAIN\\your_domain\ group ALL=(ALL:ALL) ALL

為域帳號組添加 root 權限

為域帳號組添加 root 權限

使用反斜杠來轉義域用戶組的名稱中包含的空格,或者用來轉義第一個反斜杠。在上麵的例子中, TECMINT 域的域用戶組的名字是 “domain admins" 。

前邊的 % 表明我們指定是的用戶組而不是用戶名。

20、如果你使用的是圖形界麵的 Ubuntu 係統,並且你想使用域帳號來登錄係統,你需要修改 LightDM 顯示管理器,編輯 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 配置文件,添加下麵的內容,然後重啟係統才能生效。


  1. greeter-show-manual-login=true
  2. greeter-hide-users=true

現在你就可以域帳號來登錄 Ubuntu 桌麵係統了。使用域用戶名或者域用戶名@域名.tld 或者域名\域用戶名的方式來登錄係統。

原文發布時間為:2017-05-05

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-19 14:04:31

  上一篇:go  《雲數據管理:挑戰與機遇》2.3.2 並發控製
  下一篇:go  《HttpClient 官方文檔》第五章 Fluent API