Linux中國

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 主機設置一個合適的主機名。

# hostnamectl set-hostname your_machine_short_name
# cat /etc/hostname
# hostnamectl

Set System Hostname

設置系統主機名

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

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

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

Configure Network Settings for AD

為 AD 配置網路設置

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

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

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

# systemctl restart networking.service
# ping -c2 your_domain_name

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

$ sudo apt-get install ntpdate
$ sudo ntpdate -q your_domain_name
$ sudo ntpdate your_domain_name

Time Synchronization with AD

AD 伺服器時間同步

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

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

Install Samba4 in Ubuntu Client

在 Ubuntu 機器上安裝 Samba4 軟體

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

Add AD Domain Name

添加 AD 域名

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

# kinit ad_admin_user
# klist

Check Kerberos Authentication with AD

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

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

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

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

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

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

[global]
workgroup = TECMINT
realm = TECMINT.LAN
netbios name = ubuntu
security = ADS
dns forwarder = 192.168.1.1
idmap config * : backend = tdb
idmap config *:range = 50000-1000000
template homedir = /home/%D/%U
template shell = /bin/bash
winbind use default domain = true
winbind offline logon = false
winbind nss info = rfc2307
winbind enum users = yes
winbind enum groups = yes
vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes

Configure Samba for AD

Samba 服務的 AD 環境配置

根據你本地的實際情況來替換 workgrouprealmnetbios namedns forwarder 的參數值。

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

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

$ sudo systemctl restart smbd nmbd winbind
$ sudo systemctl stop samba-ad-dc
$ sudo systemctl enable smbd nmbd winbind

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

$ sudo net ads join -U ad_admin_user

Join Ubuntu to Samba4 AD DC

把 Ubuntu 主機加入到 Samba4 AD DC

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

Confirm Ubuntu Client in Windows AD DC

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

第三步:配置 AD 帳號認證

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

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

$ sudo nano /etc/nsswitch.conf

然後在 passwdgroup 行添加 winbind 值,如下圖所示:

passwd:         compat winbind
group:          compat winbind

Configure AD Accounts Authentication

配置 AD 帳號認證

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

$ wbinfo -u
$ wbinfo -g

List AD Domain Accounts and Groups

列出域帳號和組

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

$ sudo getent passwd| grep your_domain_user
$ sudo getent group|grep 'domain admins'

Check AD Domain Users and Groups

檢查 AD 域用戶和組

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

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

$ sudo pam-auth-update

Authenticate Ubuntu with Domain Accounts

使用域帳號登錄 Ubuntu 主機

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

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

Authenticate Debian with Domain Accounts

使用域帳號登錄 Debian 系統

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

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

Users Allowed to Change Password

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

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

$ su - your_ad_user

Find AD User Information

查看 AD 用戶信息

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

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

$ sudo usermod -aG sudo your_domain_user

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

Add Sudo User Root Group

給域帳號添加 root 許可權

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

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

Add Root Privileges to Domain Group

為域帳號組添加 root 許可權

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

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

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

greeter-show-manual-login=true
greeter-hide-users=true

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

作者簡介:

我是一個電腦迷,開源 Linux 系統和軟體愛好者,有 4 年多的 Linux 桌面、伺服器系統使用和 Base 編程經驗。

via: http://www.tecmint.com/join-ubuntu-to-active-directory-domain-member-samba-winbind/

作者:Matei Cezar 譯者:rusking 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國