如下內容摘選自筆者即將出版上市的新做——《金牌網管師——大中型企業網絡組建、配置與管理》一書。 7.5 ads模式Samba服務器配置示例ios
本 節要介紹ads模式下Samba服務器的配置方法。相對於前面介紹的user模式下的Samab服務器,ads模式的配置更爲複雜,由於它涉及到 Windows域網絡中的Kerberos身份驗證技術,除了須要配置主配置文件smb.conf外,還須要配置用於Kerberos身份認證的配置文件 /etc/krb5.conf,用於控制Samba服務器Linux系統帳戶與Windows域帳戶交換的/etc/nsswitch.conf文件。還 須要使用「net ads join -S」命令把Samba服務器加入到Windows AD域中。shell
仍採用上節的兩個共享目 錄:/usr/share和/etc/program,要求使用主機名爲lycb-DC1,域名爲lycb.local的Windows Server 2003域控制器進行身份驗證,容許全部用戶對/usr/share共享目錄具備只讀權限,僅容許administrators組成員對/etc /program共享目錄具備寫入權限,而其餘的用戶對/usr/share共享目錄具備只讀權限。固然首先也要確保Windows Server 2003域網絡與Samba服務器處於同一網段。若是不處於同一網段,則要配置好相應的網絡路由。另外,在Samba服務器中要用DNS域名格式配置好主 機名和域搜索路徑。bash
7.5.1 ads模式主配置文件配置示例服務器
根據上述要求,能夠寫以下Samba服務器主配置文件smb.conf。網絡
[global]app
workgroup = lycb # 指定AD域的NetBIOS名稱。必須有這個語句,不然不能在域網絡中搜索獲得該Samba服務器dom
server string = File Server測試
netbios name = Sambaserverui
security = ads # 指定Samba服務器的工做模式爲adsdebug
hosts allow = 172.16. 127.
encrypt passwords = yes
guest account = alice # 指定alice用戶做爲來賓訪問帳戶
realm = lycb.local # 指定Windows域名(DNS格式)
password server =172.16.0.1 # 指定擔當身份驗證服務器的服務器IP地址
[homes]
comment = Home Directories
browseable = no
writable = yes
path = /home/%U
valid users = %U
[share]
comment = All user's share directory
path = /usr/share
public = no
guest ok =yes
readonly = yes
[program]
comment = Program Files
path = /etc/program
valid users = @administrator alice # 指定該共享目錄僅容許域網絡中的administrtors組成員和alice用戶訪問
public = no
writable = yes
另外,建議在[global]部分使用如下所示配置,使得winbind服務能夠列出Samba服務器加入的AD中的全部用戶和組信息。確保在windbind服務運行時,可使用在DC中的用戶和組來進行相似文件/目錄權限設置,以及samba共享定義等。
idmap uid = 15000-20000 # 指定一個uid範圍,該範圍內的uid被用來映射Linux用戶到Windows用戶SID,並且要確保這個id範圍內沒有被本地或者NIS用戶佔用,在winbind服務啓動後,也不能在該ID範圍內添加用戶。
idmap gid = 15000-20000 # 指定一個gid範圍,該範圍內的gid被用來映射Linux用戶到Windows的組SID,並且要確保這個id範圍內沒有被本地或者NIS組佔用,在winbind啓動之後,也不能在該ID範圍內添加新組。
winbind enum groups = yes # 指定winbind服務是否能在系統上建立Windows域組。通常狀況下都要設置爲yes,除非你處於某種緣由但願關閉該功能。
winbind enum users = yes # 指定winbind服務是否能在系統上建立Windows域用戶。通常狀況下都要設置爲yes,除非你處於某種緣由但願關閉該功能。
winbind separator = + # 指定一個字符做爲分隔符,winbind將使用該分隔符來用戶或組名。使用該配置將使得域用戶表示爲"MYDOMAIN+username",域組被表示爲"MYDOMAIN+Domain Users"
template homedir = /homes/%D/%U # 用來指定爲域用戶產生主目錄。使用變量替換可以使winbind服務把用戶主目錄設置爲/homes/MYDOMAIN/username。
template shell = /bin/bash # 控制samba在哪裏尋找域用戶的主目錄。
而後,管理員須要手工編輯/etc/nsswitch.conf文件,這樣winbind能實現使用域上的用戶。具體將在7.4.3節介紹。
使用testparm命令檢查主配置文件的語法和完整的綜合有效設置,確認無識後便可進行下面的krb5.conf配置文件。
7.5.2 krb5.conf配置文件配置示例
在配置ads模式Samba服務器時,/etc/krb5.conf配置文件必須配置的。它是做爲Kerberos身份驗證模塊,可使Samba服務器對Windows AD域有更好的支持。
在 /etc/krb5.conf配置文件主要是配置與域有名的項目,在RedHat Enterprise Linux 5系統中屬於包krb5-libs-1.5-17.i386.rpm。打開/etc/krb5.conf配置文件,而後按下面格式進行修改並保存(本示例 域名爲lycb.local)。
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = LYCB.LOCAL # 指定默認領域名
dns_lookup_realm = false # 指定無需DNS解析領域請求包
dns_lookup_kdc = ture # 指定容許DNS解析kdc請求包
ticket_lifetime = 24h # 指定Kerberos認證票證有效期
forwardable = yes # 容許轉發解析請求
[realms]
LYCB.LOCAL = {
kdc = 172.16.0.1:88 # 指定KDC服務器和KDC服務端口
admin_server = 172.16.0.1:749 # 指定域控制器和管理端口
default_domain = lycb.local # 指定默認域
}
[domain_realm]
.lycb.local = LYCB.LOCAL
lycb.local = LYCB.LOCAL
# 以上兩條實際上是設置一個領域搜索範圍,並經過這兩個語句可使得領域名與大小寫無關。
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true # 容許轉發請求
krb4_convert = false
}
把以上內容(「#」說明部分無須要粘貼)所有替換原/etc/krb5.conf配置文件中的原有內容並保存。但必定要注意其中各部分的領域名大小寫不能寫錯,哪怕一個字母的大小寫錯了都不行。這一點很是重要。
這 時咱們能夠用kinit命令來測試一下Samba服務器與Windows Server 2003域控制器間的通訊是否正常。後面接一下Windows Server 2003域中已存在並啓用的用戶帳戶便可。如直接用域管理員帳戶administrator帳戶,則可輸入該帳戶的如下命令(後面的域名必定要大寫):
Kinit administrator@LYCB.COM
正 常狀況下會提示你輸入administrator帳戶的密碼,以下所示。若是出現「kinit(v5): Cannot find KDC for requested realm while getting initial credentia」這樣的錯誤提示,則多是上面在administrator@LYCB.COM中的域名部分不是所有大寫,或者是你在/etc /krb5.conf配置文件中有關領域名稱配置語句中的大小寫輸入錯誤,必定要按照本示例,或者默認配置文件那樣正確輸入大寫或小寫域名。
[root@sambaserver ~]# kinit administrator@LYCB.LOCAL
Password for administrator@LYCB.LOCAL:
7.5.3 nsswitch.conf配置文件配置示例
Nsswitch.conf 配置文件是用來控制在用戶訪問Samba服務器時與Windows域中DC中的用戶帳戶的切換,使用DC中的用戶帳戶來進行身份驗證。 Nsswitch.conf配置文件是在/etc目錄下,要配置的內容也很是簡單。只須要編輯如下兩行語句便可:
passwd: files winbind
group: files winbind
shadow: files winbind
hosts: files dns wins
networks: files dns
protocols: db files
services: db files
ethers: db files
rpc: db files
用「#」符號註釋掉全部與上面語句配置不一致的語句,保存配置文件。
7.5.4 把Samba服務器加入到AD域
通 過前面幾個配置文件的成功配置,如今就能夠把Samba服務器加入到Windows Server 2003域網絡中,成中域客戶端了。但首先要使用「service smb restart」和「service winbind restart」命令重啓smb和winbind服務。而後使用如下命令把Samba服務器加入到域中(此時只能使用有權把客戶機加入到域的域用戶帳戶, 一般是直接使用域管理員帳戶administrator)。正常狀況下會出現要求你輸入管理員帳戶的密碼,而後過一會就會出現成功加入XXX.XXX領域 的提示,如圖7-21就是成功加入到本示例中LYCB.COM領域的提示。
net ads join –U administrator
圖7-21 Samba服務器成功加入AD域的提示
一 般來講若是經過前面用kinit命令對兩服務器間通訊的測試,則本步也不會有什麼問題。但建議不要在上面的命令中的管理員帳戶 administrartor後再加領域尾綴,由於此時在Samba服務器上已創建了與DC上同名且密碼同樣的administrator帳戶了。再加上 領域尾綴,反而可能會出現「SMB Signature verification failed on incoming packet!」這樣的錯誤提示,結果加入不成功。
而後使用「wbinfo –u」能夠在Samba服務器上查看域中現有的域用戶帳戶,使用「wbinfo –g」命令能夠查看域中現有的組帳戶。若是能列出這些帳戶出來(如圖7-22所示),證實域加入真正成功了。用「wbinfo –t」命令確認Samba主機賬號在AD中正確註冊。若是註冊成功會有「checking the trust secret via RPC calls succeeded」的提示。
這時咱們能夠在Windows Server 2003 DC的「Active Directory用戶和計算機」管理單元的「Computers」容器中見到Samba服務器了。如本示例中的Samba服務器NetBIOS名稱爲 sambaserver,如圖7-23所示。這時Samba服務器就至關於AD中的一臺客戶機,而且已使用了administrator帳戶登陸。上一切 正常後就能夠在Windows Server 2003域網絡中的客戶端機訪問Samba服務器了。這時Samba服務器成爲了域成員了,域用戶能夠像訪問Windows系統域成員主機同樣訪問 Samba服務器的共享資源了,固然是否能訪問這也得得依照相應共享資源的用戶訪問權限來定。
但是發如今Windows系統域客戶端, 或者Linux客戶端中訪問Samba服務器時出現如圖7-24所示的錯誤提示。看似是因爲防火牆阻止了,但是此時Samba服務器上的防火牆關了還不 行,確定再也不與防火牆有關了。此時我在DC上管理這臺機時出現不能管理localhost.localhost這臺計算機的錯誤提示。這臺Samba服務 器已改爲sambaserver.lycb.local了啊,並且在smb.conf主配置文件中也加了「netbios name = sambaserver」這個語句。何況在DC中也正確顯示了這個名稱啊,爲何仍是顯示localhost.localhost這個默認的主機名呢?
圖7-22 在Samba服務器上列出的域用戶和組帳戶
圖7-23 在DC上見到的Samba服務器
圖7-24 在域網絡中訪問Samba服務器時出現的錯誤提示
網 上查了好久,都沒有找到答案,最終仍是本身想到了前面介紹的lmhosts這個主機文件,打開一看,果真還是「127.0.0.1 hostlocal」這樣的設置,把它改爲「172.16.3.100 sambaserver.lycb.local」,重啓smb進程,再次訪問,就再也不有這個錯誤提示了。直接在「網上鄰居」中可見到Samba服務器的共 享資源了(如圖7-25所示),連身份驗證都不用,由於此時Samba服務器已成爲了域成員,全部域用戶均可以在其被授予的權限範圍內訪問所能訪問的共享 資源,就像Windows域內其餘Windows系統主機同樣。
咱們再來打開在本示例中不容許匿名訪問,僅容許administrators組成員和alice用戶訪問的program目錄,此時會打開如圖7-26所示身份驗證對話框。輸入賬戶和密碼後即進入到這個共享目錄,如圖7-27所示。
圖7-25 在域網絡Windows系統主機上打開的Samba服務器
圖7-26 訪問非容許匿名訪問共享目錄時彈出的身份驗證對話框 圖7-27 進入到的program共享目錄