Samba 系列(八):使用 Samba 和 Winbind 將 Ubuntu 16.04 添加到 AD 域
這篇文章講述了如何將 Ubuntu 主機加入到 Samba4 AD 域,並實現使用域帳號登錄 Ubuntu 系統。
要求:
第一步: Ubuntu 系統加入到 Samba4 AD 之前的基本配置
1、在將 Ubuntu 主機加入到 AD DC 之前,你得先確保 Ubuntu 系統中的一些服務配置正常。
主機名是你的機器的一個重要標識。因此,在加入域前,使用 hostnamectl
命令或者通過手動編輯 /etc/hostname
文件來為 Ubuntu 主機設置一個合適的主機名。
# hostnamectl set-hostname your_machine_short_name
# cat /etc/hostname
# hostnamectl
設置系統主機名
2、在這一步中,打開並編輯網卡配置文件,為你的主機設置一個合適的 IP 地址。注意把 DNS 地址設置為你的域控制器的地址。
編輯 /etc/network/interfaces
文件,添加 dns-nameservers
參數,並設置為 AD 伺服器的 IP 地址;添加 dns-search
參數,其值為域控制器的主機名,如下圖所示。
並且,把上面設置的 DNS IP 地址和域名添加到 /etc/resolv.conf
配置文件中,如下圖所示:
為 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 配置中。
# 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
AD 伺服器時間同步
5、下一步,在 Ubuntu 機器上執行下面的命令來安裝加入域環境所必需軟體。
$ sudo apt-get install samba krb5-config krb5-user winbind libpam-winbind libnss-winbind
在 Ubuntu 機器上安裝 Samba4 軟體
在 Kerberos 軟體包安裝的過程中,你會被詢問輸入默認的域名。輸入大寫的域名,並按 Enter 鍵繼續安裝。
添加 AD 域名
6、當所有的軟體包安裝完成之後,使用域管理員帳號來測試 Kerberos 認證,然後執行下面的命令來列出票據信息。
# kinit ad_admin_user
# klist
使用 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
Samba 服務的 AD 環境配置
根據你本地的實際情況來替換 workgroup
, realm
, netbios name
和 dns 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
把 Ubuntu 主機加入到 Samba4 AD DC
10、在 安裝了 RSAT 工具的 Windows 機器上 打開 AD UC ,展開到包含的計算機。你可以看到已加入域的 Ubuntu 計算機。
確認 Ubuntu 計算機已加入到 Windows AD DC
第三步:配置 AD 帳號認證
11、為了在本地完成 AD 帳號認證,你需要修改本地機器上的一些服務和配置文件。
首先,打開並編輯名字服務切換 (NSS) 配置文件。
$ sudo nano /etc/nsswitch.conf
然後在 passwd
和 group
行添加 winbind 值,如下圖所示:
passwd: compat winbind
group: compat winbind
配置 AD 帳號認證
12、為了測試 Ubuntu 機器是否已加入到域中,你可以使用 wbinfo
命令來列出域帳號和組。
$ wbinfo -u
$ wbinfo -g
列出域帳號和組
13、同時,使用 getent
命令加上管道符及 grep
參數來過濾指定域用戶或組,以測試 Winbind nsswitch 模塊是否運行正常。
$ sudo getent passwd| grep your_domain_user
$ sudo getent group|grep 'domain admins'
檢查 AD 域用戶和組
14、為了讓域帳號在 Ubuntu 機器上完成認證登錄,你需要使用 root 帳號運行 pam-auth-update
命令,然後勾選 winbind 服務所需的選項,以讓每個域帳號首次登錄時自動創建 home 目錄。
查看所有的選項,按 『[空格]』鍵選中,單擊 OK 以應用更改。
$ sudo pam-auth-update
使用域帳號登錄 Ubuntu 主機
15、在 Debian 系統中,如果想讓系統自動為登錄的域帳號創建家目錄,你需要手動編輯 /etc/pam.d/common-account
配置文件,並添加下面的內容。
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
使用域帳號登錄 Debian 系統
16、為了讓 AD 用戶能夠在 Linux 的命令行下修改密碼,你需要打開 /etc/pam.d/common-password 配置文件,在 password
那一行刪除 use_authtok
參數,如下圖所示:
password [success=1 default=ignore] pam_winbind.so try_first_pass
允許域帳號在 Linux 命令行下修改密碼
17、要使用 Samba4 AD 帳號來登錄 Ubuntu 主機,在 su -
後面加上域用戶名即可。你還可以通過運行 id
命令來查看 AD 帳號的其它信息。
$ su - your_ad_user
查看 AD 用戶信息
使用 pwd 命令來查看域帳號的當前目錄,如果你想修改域帳號的密碼,你可以使用 passwd
命令來完成。
18、如果想讓域帳號在 ubuntu 機器上擁有 root 許可權,你可以使用下面的命令來把 AD 帳號添加到 sudo 系統組中:
$ sudo usermod -aG sudo your_domain_user
登錄域帳號登錄到 Ubuntu 主機,然後運行 apt-get-update
命令來更新系統,以驗證域賬號是否擁有 root 許可權。
給域帳號添加 root 許可權
19、要為整個域用戶組添加 root 許可權,使用 vi
命令打開並編輯 /etc/sudoers
配置文件,如下圖所示,添加如下內容:
%YOUR_DOMAIN\your_domain group ALL=(ALL:ALL) ALL
為域帳號組添加 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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive