samba 是一個自由的開源軟體套件,用于實作 windows 作業系統與 linux/unix 系統之間的無縫連接配接及共享資源。
samba 不僅可以通過 smb/cifs 協定元件來為 windows 與 linux 系統之間提供獨立的檔案及列印機共享服務,它還能實作活動目錄active directory域控制器domain controller的功能,或者讓 linux 主機加入到域環境中作為域成員伺服器。目前的 samba4 版本實作的 ad dc 域及林功能級别可以取代 windows 2008 r2 系統的域相關功能。
本系列的文章的主要内容是使用 samba4 軟體來配置活動目錄域控制器,涉及到 ubuntu、centos 和 windows 系統相關的以下主題:
第 1 節:在 ubuntu 系統上使用 samba4 來建立活動目錄架構
第 2 節:在 linux 指令行下管理 samba4 ad 架構
第 3 節:在 windows 10 作業系統上安裝 rsat 工具來管理 samba4 ad
第 4 節:從 windows 中管理 samba4 ad 域控制器 dns 群組政策
第 5 節:使用 sysvol replication 複制功能把 samba 4 dc 加入到已有的 ad
第 6 節:從 linux dc 伺服器通過 gop 來添加一個共享磁盤并映射到 ad
第 7 節:把 ubuntu 16.04 系統主機作為域成員伺服器添加到 ad
第 8 節:把 centeros 7 系統主機作為域成員伺服器添加到 ad
第 9 節:在 ad intranet 區域建立使用 kerberos 認證的 apache website
這篇指南将闡明在 ubuntu 16.04 和 ubuntu 14.04 作業系統上安裝配置 samba4 作為域控伺服器元件的過程中,你需要注意的每一個步驟。
以下安裝配置文檔将會說明在 windows 和 linux 的混合系統環境中,關于使用者、機器、共享卷、權限及其它資源資訊的主要配置點。
<a href="http://www.tecmint.com/installation-of-ubuntu-16-04-server-edition/" target="_blank">ubuntu 16.04 伺服器安裝</a>
<a href="http://www.tecmint.com/ubuntu-14-04-server-installation-guide-and-lamp-setup/" target="_blank">ubuntu 14.04 伺服器安裝</a>
<a target="_blank"></a>
1、 在開始安裝 samba4 ad dc 之前,讓我們先做一些準備工作。首先運作以下指令來確定系統已更新了最新的安全特性,核心及其它更新檔:
<code>$ sudo apt-get update</code>
<code>$ sudo apt-get upgrade</code>
<code>$ sudo apt-get dist-upgrade</code>
2、 其次,打開伺服器上的 <code>/etc/fstab</code> 檔案,確定檔案系統分區的 acl 已經啟用 ,如下圖所示。
通常情況下,目前常見的 linux 檔案系統,比如 ext3、ext4、xfs 或 btrfs 都預設支援并已經啟用了 acl 。如果未設定,則打開并編輯 <code>/etc/fstab</code> 檔案,在第三列添加 <code>acl</code>,然後重新開機系統以使用修改的配置生效。

啟動 linux 檔案系統的 acl 功能
<code>$ sudo hostnamectl set-hostname adc1</code>
為了使修改的主機名生效必須重新開機伺服器。
4、 為了讓你的伺服器轉變為域控制器,你需要在伺服器上使用具有 root 權限的賬号執行以下指令來安裝 samba 套件及所有必需的軟體包。
<code>$ sudo apt-get install samba krb5-user krb5-config winbind libpam-winbind libnss-winbind</code>
在 ubuntu 系統上安裝 samba 套件
5、 安裝包在執行的過程中将會詢問你一系列的問題以便完成域控制器的配置。
在第一屏中你需要以大寫為 kerberos 預設 realm 輸入一個名字。以大寫為你的域環境輸入名字,然後單擊回車繼續。
配置 kerosene 認證服務
6、 下一步,輸入你的域中 kerberos 伺服器的主機名。使用和上面相同的名字,這一次使用小寫,然後單擊回車繼續。
設定 kerberos 伺服器的主機名
7、 最後,指定 kerberos realm 管理伺服器的主機名。使用更上面相同的名字,單擊回車安裝完成。
設定管理伺服器的主機名
8、 在為域伺服器配置 samba 服務之前,先運作如下指令來停止并禁用所有 samba 程序。
<code>$ sudo systemctl stop samba-ad-dc.service smbd.service nmbd.service winbind.service</code>
<code>$ sudo systemctl disable samba-ad-dc.service smbd.service nmbd.service winbind.service</code>
9、 下一步,重命名或删除 samba 原始配置檔案。在開啟 samba 服務之前,必須執行這一步操作,因為在開啟服務的過程中 samba 将會建立一個新的配置檔案,如果檢測到原有的 <code>smb.conf</code> 配置檔案則會報錯。
<code>$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.initial</code>
10、 現在,使用 root 權限的賬号并接受 samba 提示的預設選項,以互動方式啟動域供給domain provision。
還有,輸入正确的 dns 伺服器位址并且為 administrator 賬号設定強密碼。如果使用的是弱密碼,則域供給過程會失敗。
<code>$ sudo samba-tool domain provision --use-rfc2307 –interactive</code>
samba 域供給
11、 最後,使用以下指令重命名或删除 kerberos 認證在 <code>/etc</code> 目錄下的主配置檔案,并且把 samba 新生成的 kerberos 配置檔案建立一個軟連結指向 <code>/etc</code> 目錄。
<code>$ sudo mv /etc/krb6.conf /etc/krb5.conf.initial</code>
<code>$ sudo ln –s /var/lib/samba/private/krb5.conf /etc/</code>
建立 kerberos 配置檔案
12、 啟動并開啟 samba 活動目錄域控制器背景程序
<code>$ sudo systemctl start samba-ad-dc.service</code>
<code>$ sudo systemctl status samba-ad-dc.service</code>
<code>$ sudo systemctl enable samba-ad-dc.service</code>
開啟 samba 活動目錄域控制器服務
<code>$ sudo netstat –tulpn| egrep ‘smbd|samba’</code>
驗證 samba 活動目錄
14、 此刻,samba 應該跟你想像的一樣,完全運作正常。samba 現在實作的域功能級别可以完全跟 windows ad dc 2008 r2 相媲美。
可以使用 <code>samba-tool</code> 工具來驗證 samba 服務是否正常:
<code>$ sudo samba-tool domain level show</code>
驗證 samba 域服務級别
15、 為了滿足 dns 本地解析的需求,你可以編輯網卡配置檔案,修改 <code>dns-nameservers</code> 參數的值為域控制器位址(使用 127.0.0.1 作為本地 dns 解析位址),并且設定 <code>dns-search</code> 參數為你的 realm 值。
<code>$ sudo cat /etc/network/interfaces</code>
<code>$ sudo cat /etc/resolv.conf</code>
為 samba 配置 dns 伺服器位址
設定完成後,重新開機伺服器并檢查解析檔案是否指向正确的 dns 伺服器位址。
16、 最後,通過 <code>ping</code> 指令查詢結果來檢查某些重要的 ad dc 記錄是否正常,使用類似下面的指令,替換對應的域名。
<code>$ ping –c3 tecmint.lan # 域名</code>
<code>$ ping –c3 adc1.tecmint.lan # fqdn</code>
<code>$ ping –c3 adc1 # 主機</code>
檢查 samba ad dns 記錄
執行下面的一些查詢指令來檢查 samba 活動目錄域控制器是否正常。
<code>$ host –t a tecmint.lan</code>
<code>$ host –t a adc1.tecmint.lan</code>
<code>$ host –t srv _kerberos._udp.tecmint.lan # udp kerberos srv record</code>
<code>$ host -t srv _ldap._tcp.tecmint.lan # tcp ldap srv record</code>
17、 并且,通過請求一個域管理者賬号的身份來列出緩存的票據資訊以驗證 kerberos 認證是否正常。注意域名部分使用大寫。
<code>$ kinit [email protected]</code>
<code>$ klist</code>
檢查域環境中的 kerberos 認證是否正确
至此! 你目前的網絡環境中已經完全運作着一個 ad 域控制器,你現在可以把 windows 或 linux 系統的主機內建到 samba ad 中了。
原文釋出時間為:2017-12-27
本文來自雲栖社群合作夥伴“linux中國”