Windows 的系統透過 SMB (Session Message Block protocol, 也叫做 NetBIOS 或 LanManager protocol.) ,來進行檔案分享的傳輸協定,而 samba 是在 Linux 系統下使用 SMB (NetBIOS) 協定來進行檔案分享的傳輸方式.也因此藉由 samba 來讓 Windows 與 Linux 系統的檔案能夠使用同一種方式來進行分享. Windows 與 Linux 之間 SMB /NMB 協定關聯如下圖所:
那什麼是 SMB(NetBIOS)呢!!下面可以看到這個協定的演化過程.
- NetBIOS
最早由 IBM 開發出來的 NetBIOS API(Network Basic Input/Output System Application Program Interface),這個 NetBIOS 由 18 個 API 組成,可以用來命令當時的電腦建立連線服務. 因為 NetBIOS 使用廣播(broadcasts)來傳送資料.也因此資料無法繞送(routed).所以只能用在小型網路中傳輸.NetBIOS 屬於 session layer protocol(第5層,交談層)
- NetBEUI
接下來就有了NetBIOS的改良版,NetBEUI(NetBIOS Extened User Interface),不過他已經是一個完整的傳輸協定了.NetBEUI 屬於 data-link layer protocol (第2層,資料連結層). - SMB(NetBIOS)
Windows NT4.0 之前的網路芳鄰(檔案和印表機分享),名稱解析(wins)…皆是使用 NetBIOS over NetBEUI所實而做成.後來的 NetBIOS 也可以 over TCP/IP 如 Windows 2000 的網路芳鄰(檔案和印表機分享), Linux 的 samba server or NETBIOS over IPX(Internetwork Packet Exchange) 如 NT 下的 NWLINK
note:
- 使用廣播的方式傳遞資料,在遇到 Roter 時, Router 是會直接將此封包丟棄.原因是不能讓這種封包傳送到 InterNet 上,而產生無限封包.
- NetBEUI 屬於 data-link layer protocol (第2層,資料連結層)
Samba 的官方網站為 http://www.samba.org
一開始我們來認識一些 samba 的設定檔 以及 防火牆(iptables) 的設定
samba 提供了五種安全等級的身分驗證模式
那我們就來看看這五種不同模式的 samba server 要怎麼樣來與現有的 Windows 網域結合
- Share Level Security : 不使用密碼做身份驗證
security = share - User Level Security : 本身這台 samba server 做身份驗證,這也是設定檔的預設值
security = user - Server Security : 交由其他台 Windows NT/2000/2003 或 samba server 做身份驗證
encrypt passwords = Yes
security = server
password server = "NetBIOS_name_of_a_DC" - Domain Security Mode: 身份驗證交由 Windows AD (Domain 為 mixed mode)或者由 Windows NT 4 處理
workgroup = "name_of_NT_domain"
security = domain - ADS Security Mode: 身份驗證交由 Windows AD 處理(Domain 為 native mode)
realm = your.kerberos.REALM
security = ADS
ads server = your.kerberos.server
設定可以透過圖形介面 #system-config-samba (RHEL4 / RHEL5), #systemsettings (RHEL6) 或是修設定檔的方式進行修改設定.
samba 的其他功能
- samba(PDC) :
主要是將 samba server 模擬成 windows NT 4.X 的 PDC(Primary Domain Controller) - samba(winbind) :
winbind 是一個獨立 daman ,它主要是能讓 Linux 系統能取得 NT/AD 網域內使用者帳號來當做 Linux 的身份驗證. - samba(ACL) :
一般由samba server 分享出來的檔案無法直接在 windows 的檔案總管中進行權限設定,必須要修改 /etc/samba/smb.conf 的分享權限.所以這邊是要介紹如何讓 samba server 分享的檔案可以直接經由 windows 的檔案總管來修改權限. - samba(Join Domain) :
Linux 可以藉由 samba server 去 join windows 網域,可以藉此來存取 windows 網域的資料 - smb.conf :
其他設定資料與相關的其他指令. - Samba 檔案權限
當 samba server security 選 user 安全等級時是用本身這台 samba server 做身份驗證.因為需要身分所以第一步就是要先新增使用者.
沒有解決問題,試試搜尋本站其他內容
不是我愛嫌棄 RedHat 很多圖形介面的東西要做也不做好,像是我在使用 system-config-samba 新增使用者的時候,挖勒!!新增好就看不到了.再新增一次又被告知使用者已經存在(An account for this user already exists. Please try again).
恩!!!!這是怎麼一回事!!不過透過指令方式 #pdbedit -L 使用者真的已經加入,上網查了一下,果然是 system-config-samba 固定使用 /etc/samba/smbpasswd 當作他的使用者資料庫,但是我記得 RHEL5 不是已經將預設的使用者資料庫放在 passdb.tdb ,而且這一錯到 RHEL5.2 以前都沒修正,一直到 RHEL5.3 才修正.不過使用 RHEL5.2 之前版本也不用急著更新找到 system-config-samba-1.2.40 的版本就修正了,更新就可以使用了.
https://bugzilla.redhat.com/show_bug.cgi?id=236557
systemsettings
在 RHEL 6 中已經找不到 #system-config-samba 這一支 GUI 程式來設定 samba 不過 RHEL 6 提供另外一個整合多組 GUI 程式操作介面 #systemsettings 他反而有點類似 SuSE 的 yast2 .