- 浏览: 1547510 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
最近更新日期:2006/12/29
在一般的區域網路中 (LAN) 如果都是 Windows 電腦,那麼使用『網路上的芳鄰』這個功能,就可以讓不同的 Windows 電腦分享彼此的檔案囉!但萬一這個 LAN 裡面有個 Linux 主機時,我怎麼讓 Linux 也加入這個 Windows 電腦當中的『網路上的芳鄰』呢?也就是說,讓 Windows 電腦可以透過『網路上的芳鄰』來存取 Linux 主機上面的檔案!呵呵!那就是 SAMBA 這個伺服器的主要目的了!SAMBA 是很有用的一個伺服器,他可以讓您的 Linux 剎那間成為一個檔案伺服器 (File Server),並提供整個 LAN 裡面的 Windows 很簡單的就可以對 Linux 主機進行檔案的存取動作。不僅如此, SAMBA 也可以讓 Linux 上面的印表機成為印表機伺服器 (Printer Server) ,鳥哥個人覺得, SAMBA 對於整個 LAN 的貢獻真的是很大!那麼就趕緊來玩一玩吧! ^_^ |
1. 本章的行前準備工作
2. 什麼是 SAMBA ?
2.1 SAMBA 的發展歷史與名稱的由來
2.2 SAMBA 常見的應用
2.3 SMB 使用的 NetBIOS 通訊協定
2.4 SAMBA 使用的 daemons
2.5 連線模式的介紹 (peer/peer, domain model)
3. SAMBA 伺服器的基礎設定
3.1 Samba 所需套件及其套件結構
3.2 基礎設定流程與 smb.conf 的主要規劃:
主機整體參數, 分享目錄參數, 變數特性
3.3 沒有密碼的 smb.conf 設定(純測試) (lmhosts, testparm, smbclient)
3.4 安全等級為使用者的工作群組設定 (smbpasswd)
3.5 設定成為印表機伺服器 (CUPS 系統) (cupsaddsmb)
3.6 安全性管理: iptables, smb.conf 設定值, Quota, 關於備份
3.7 主機安裝時的規劃與中文磁區掛載
4. Samba 用戶端軟體功能
4.1 Windows 系統的使用: WinXP 防火牆, port 445
4.2 Linux 系統的使用: smbclient, smbmount, nmblookup, smbstatus
5. 伺服器進階管理
5.1 讓 Samba 管理網域使用者:PDC
5.2 問題克服
5.3 使用者修改自己的密碼
5.4 利用 ACL 配合單一使用者時的控管
6. 重點回顧
7. 課後練習
8. 參考資料
9. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?p=118976
2. 什麼是 SAMBA ?
2.1 SAMBA 的發展歷史與名稱的由來
2.2 SAMBA 常見的應用
2.3 SMB 使用的 NetBIOS 通訊協定
2.4 SAMBA 使用的 daemons
2.5 連線模式的介紹 (peer/peer, domain model)
3. SAMBA 伺服器的基礎設定
3.1 Samba 所需套件及其套件結構
3.2 基礎設定流程與 smb.conf 的主要規劃:
主機整體參數, 分享目錄參數, 變數特性
3.3 沒有密碼的 smb.conf 設定(純測試) (lmhosts, testparm, smbclient)
3.4 安全等級為使用者的工作群組設定 (smbpasswd)
3.5 設定成為印表機伺服器 (CUPS 系統) (cupsaddsmb)
3.6 安全性管理: iptables, smb.conf 設定值, Quota, 關於備份
3.7 主機安裝時的規劃與中文磁區掛載
4. Samba 用戶端軟體功能
4.1 Windows 系統的使用: WinXP 防火牆, port 445
4.2 Linux 系統的使用: smbclient, smbmount, nmblookup, smbstatus
5. 伺服器進階管理
5.1 讓 Samba 管理網域使用者:PDC
5.2 問題克服
5.3 使用者修改自己的密碼
5.4 利用 ACL 配合單一使用者時的控管
6. 重點回顧
7. 課後練習
8. 參考資料
9. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?p=118976
本章的行前準備工作
這一章的主要目的為介紹在不同的平台上面利用同樣的協定來進行檔案的傳輸, 其實主要就是讓 Linux 與 Windows 主機之間能彼此透過『網路上的芳鄰』這個方式來分享檔案, 而最主要的目的就是當你的區域網路內辦公用的主機大多是 Windows 系統時, 可以透過網芳來存取 Linux 主機上面的資源,讓你不覺得有任何不一樣! 而閱讀之前你至少需要有底下的一些基礎概念:
什麼是 SAMBA ?
在這個章節中,我們要教大家跳的是熱情有勁的巴西 SAMBA 舞蹈..... 喔不~搞錯了~是要向大家介紹SAMBA 這個好用的伺服器啦!咦!怪了! 怎麼伺服器的名稱會使用 SAMBA 呢?還真是怪怪的呢!那麼這個 SAMBA 伺服器的功能是什麼呢?另外, 他最早是經由什麼樣的想法而開發出來的呢?呵呵!底下就讓我們慢慢的談一談吧!
SAMBA 的發展歷史與名稱的由來
SAMBA 常見的應用
SMB 使用的 NetBIOS 通訊協定
SAMBA 使用的 daemons
連線模式的介紹 (peer/peer, domain model)
SAMBA 的發展歷史與名稱的由來
在早期的網路世界當中,檔案資料在不同主機之間的傳輸大多是使用 FTP 這個好用的伺服器軟體來進行傳送。不過使用 FTP 傳輸檔案卻有個小小的問題, 那就是您無法直接修改主機上面的檔案資料!也就是說,您想要更改 Linux 主機上面的某個檔案時,你必須要將該檔案自伺服器上下載下來後才能修改。 也因此該檔案在伺服器與用戶端都會存在。這個時候,萬一如果有一天您修改了某個檔案, 卻忘記將資料上傳回主機,那麼等過了一陣子之後,呵呵,您如何知道那個檔案才是最新的?
讓檔案在兩部主機之間直接修改
利用封包偵測逆向工程發展的 SMB Server
取名 SAMBA 的主因 ^_^
既然有這樣的問題,那麼好吧,我可不可以在用戶端的機器上面直接取用 server 上面的檔案, 如果可以在用戶端直接進行 Server 端檔案的存取,那麼我在用戶端就不需要存在該檔案資料囉,也就是說, 我只要有 Server 上面的檔案資料存在就可以啦!有沒有這樣的檔案系統啊 (File System)! 很高興的是,前面我們已經提過的 Network File System, NFS 就是這樣的檔案系統之一啦!我只要在用戶端將 Server 所提供分享的目錄掛載進來, 那麼在用戶端的機器上面就可以直接取用 Server 上的檔案資料囉,而且, 該資料就像是我用戶端上面的 partition 一般,真是好用!
而除了可以讓 Unix Like 的機器互相分享檔案的 NFS 伺服器之外,在微軟 (Microsoft) 作業系統上面也有類似的檔案系統,那就是 Common Internet File System, CIFS 這個咚咚啦!CIFS 最簡單的想法就是目前常見的『網路上的芳鄰』咯! Windows 系統的電腦可以透過桌面上『網路上的芳鄰』來分享別人所提供的檔案資料哩!真是方便。 不過,NFS 僅能讓 Unix 機器溝通, CIFS 只能讓 Windows 機器溝通。傷腦筋,那麼有沒有讓 Windows 與 Unix-Like 這兩個不同的平台相互分享檔案資料的檔案系統呢?
而除了可以讓 Unix Like 的機器互相分享檔案的 NFS 伺服器之外,在微軟 (Microsoft) 作業系統上面也有類似的檔案系統,那就是 Common Internet File System, CIFS 這個咚咚啦!CIFS 最簡單的想法就是目前常見的『網路上的芳鄰』咯! Windows 系統的電腦可以透過桌面上『網路上的芳鄰』來分享別人所提供的檔案資料哩!真是方便。 不過,NFS 僅能讓 Unix 機器溝通, CIFS 只能讓 Windows 機器溝通。傷腦筋,那麼有沒有讓 Windows 與 Unix-Like 這兩個不同的平台相互分享檔案資料的檔案系統呢?
在 1991 年一個名叫 Andrew Tridgwell 的大學生就有這樣的困擾,他手上有三部機器,分別是跑 DOS 的個人電腦、DEC公司的 Digital Unix 系統以及 Sun 的 Unix 系統。在當時, DEC 公司有發展出一套稱為 PATHWORKS 的軟體,這套軟體可以用來分享 DEC 的 Unix 與個人電腦的 DOS 這兩個作業系統的檔案資料,可惜讓 Tridgwell 覺得較困擾的是,Sun 的 Unix 無法藉由這個軟體來達到資料分享的目的。
這個時候 Tridgwell 就想說:『咦!既然這兩部系統可以相互溝通,沒道理 Sun 就必需這麼苦命吧?可不可以將這兩部系統的運作原理找出來,然後讓 Sun 這部機器也能夠分享檔案資料呢?』, 為了解決這樣的的問題,他老兄就自行寫了個 program 去偵測當 DOS 與 DEC 的 Unix 系統在進行資料分享傳送時所使用到的通訊協定資訊,然後將這些重要的資訊擷取下來, 並且基於上述所找到的通訊協定而開發出Server Message Block (SMB) 這個檔案系統,而就是這套 SMB 軟體就能夠讓 Unix 與 DOS 互相的分享資料囉!
這個時候 Tridgwell 就想說:『咦!既然這兩部系統可以相互溝通,沒道理 Sun 就必需這麼苦命吧?可不可以將這兩部系統的運作原理找出來,然後讓 Sun 這部機器也能夠分享檔案資料呢?』, 為了解決這樣的的問題,他老兄就自行寫了個 program 去偵測當 DOS 與 DEC 的 Unix 系統在進行資料分享傳送時所使用到的通訊協定資訊,然後將這些重要的資訊擷取下來, 並且基於上述所找到的通訊協定而開發出Server Message Block (SMB) 這個檔案系統,而就是這套 SMB 軟體就能夠讓 Unix 與 DOS 互相的分享資料囉!
Tips: 再次的給他強調一次,在 Unix Like 上面可以分享檔案資料的 file system 是 NFS,那麼在 Windows 上面使用的『網路上的芳鄰』所使用的檔案系統則稱為 Common Internet File System, CIFS |
既然寫成了軟體,想一想,總是需要註冊一下商標吧!因此 Tridgwell 就去申請了 SMBServer (Server Message Block 的簡寫) 這個名字來做為他撰寫的這個軟體的商標,可惜的是,因為 SMB 是沒有意義的文字,因此沒有辦法達成註冊。既然如此的話,那麼能不能在字典裡面找到相關的字詞可以做為商標來註冊呢? 翻了老半天,呵呵!這個 SAMBA 剛好含有 SMB , 又是熱情有勁的拉丁舞蹈的名稱,不然就用這個名字來做為商標好了! 這成為我們今天所使用的 SAMBA 的名稱由來啦! ^_^
SAMBA 常見的應用
由上面說明的 SAMBA 發展緣由,您就應該不難知道咯, SAMBA 最初發展的主要目就是要用來溝通 Windows 與 Unix Like 這兩個不同的作業平台,那麼 SAMBA 可以進行哪些動作呢?
利用軟體直接編修 WWW 主機上面的網頁資料
做成可直接連線的檔案伺服器
印表機伺服器
- 分享檔案與印表機服務;
- 可以提供使用者登入 SAMBA 主機時的身份認證,以提供不同身份者的個別資料;
- 可以進行 Windows 網路上的主機名稱解析 (NetBIOS name)
- 可以進行裝置的分享 (例如 Zip, CDROM...)
相信很多人都是利用個人電腦將網頁製作完畢之後,再以類似 FTP 之類的服務將網頁上傳到 WWW 主機的, 但這樣有個困擾,那就是同時在用戶端與 WWW 主機上頭都有一份網頁資料,常常會忘記哪一份是最新的, 最麻煩的是,有時候下載下來的檔案已經經過好多修改了,卻在下次的 FTP 作業,不小心又下載一次舊資料, 結果將已經修改過的資料覆蓋過去~天吶!又要重寫一遍.....真是討厭!
如果你有安裝 SAMBA 伺服器的設定的話,那麼透過『網芳』的功能,直接連線遠端伺服器所提供的目錄, 如此一來你可以直接在你的個人電腦上面修改主機的檔案資料,只有一份正確的資料而已喔! 這就有點像是『線上編修』呢,一修改完成,在 Internet 上面可以立刻檢驗,方便的很吶!
如果你有安裝 SAMBA 伺服器的設定的話,那麼透過『網芳』的功能,直接連線遠端伺服器所提供的目錄, 如此一來你可以直接在你的個人電腦上面修改主機的檔案資料,只有一份正確的資料而已喔! 這就有點像是『線上編修』呢,一修改完成,在 Internet 上面可以立刻檢驗,方便的很吶!
在鳥哥實驗室中,由於電腦數量不多,研究生常常會使用到不同的電腦 (因為大家都得搶沒有人用的電腦啊!) ,此外,也常常有研究生拿自己的 NoteBook 來工作,因此,有些團隊的資料就分散在各個電腦當中,使用上相當的不方便。 這個時候,鳥哥就使用 SAMBA 將硬碟空間分享出來,由於使用者要登入 SAMBA 這個伺服器主機時需要輸入使用者資料 (帳號與密碼),而不同的登入者會取得不一樣的目錄資源,所以可以避免自己的資料在公用電腦上面被窺視, 此外,在不同的公用電腦上面都可以登入 SAMBA 主機,資料的使用上面真是相當的棒啊!
SAMBA 除了分享檔案系統外,也可以分享印表機喔,鳥哥的研究室好幾部電腦就是直接以 Linux 分享的印表機來印製報告的。您會說『啊 Windows 也可以辦的到啊!沒有什麼了不起的!』是啊。 但是因為 Linux 做為伺服器主機時,鳥哥認為 Linux 畢竟還是比較穩定一點,可以 24 小時且全年無休的努力工作吶。此外,因為目前透過『網路上的芳鄰』來攻擊區域網路的 Windows 作業系統的電腦病毒實在是太多了,防不勝防, Linux 對於這樣的攻擊並沒有很大的影響 (因為常見的攻擊手法均針對 Windows 而來~),所以也比較安全一些說~
SAMBA 的應用挺廣泛的,尤其對於區域網路內的電腦來說,更是一項不可多得的好用的伺服器, 雖然或許你會說,SAMBA 的功能不過是模仿 Windows 的網芳以及 AD 相關的軟體, 那我直接使用 Windows 不就 OK 了?可惜的是, Windows XP 對於網芳的連線限制依版本而有所不同, 以企業常見的專業版 (Professional) 來說,他僅能提供最多同時十個連線到網芳的連線能力,這.....不太夠用吧! 所以囉,SAMBA 穩定、可靠又沒有限制連線數,值得學習吧!^_^!更多的應用您可以自行發掘吶!SMB 使用的 NetBIOS 通訊協定
事實上,就像 NFS 是架構在 RPC Server 上面一樣, SAMBA 這個檔案系統是架構在 NetBIOS (Network Basic Input/Output System, NetBIOS) 這個通訊協定上面所開發出來的。既然如此,我們當然就要瞭解一下 NetBIOS 囉!
最早 IBM 發展出 NetBIOS 的目的僅是要讓區域網路內少數電腦進行網路連結的一個通訊協定而已, 所以考慮的角度並不是針對大型網路,因此,這個 NetBIOS 是無法跨路由的 (Router / Gateway)。這個 NetBIOS 在區域網路內實在是很好用, 所以微軟的網路架構就使用了這個咚咚來進行溝通的吶!而 SAMBA 最早發展的時候,其實是想要讓 Linux 系統可以加入 Windows 的系統當中來分享使用彼此的檔案資料的,所以當然 SAMBA 就架構在 NetBIOS 發展出來囉。
不過 NetBIOS 是無法跨路由的,因此使用 NetBIOS 發展起來的伺服器理論上也是無法跨越路由的呢! 那麼該伺服器的使用範圍不就受限相當的多了?好在,我們還有所謂的 NetBIOS over TCP/IP 的技術呢!這是什麼樣的技術啊?
舉個例子來說好了,我們知道 TCP/IP 是目前網路連接的基本協定,現在我們將 NetBIOS 想成是一封明信片, 這個明信片只能讓您自己欣賞而已,如果今天我們要將這個明信片送到遠方的朋友那邊時!就需要透過郵件系統 (例如郵局啦、國際快遞啦等等的) 來傳送了!這個 TCP/IP 就可以視為郵件傳遞系統啦!透過這個 NetBIOS over TCP/IP 的技術,我們就可以跨路由的使用 SAMBA 伺服器所提供的功能咯! 當然啦,目前 SAMBA 還是比較廣泛的使用在 LAN 裡面說。
最早 IBM 發展出 NetBIOS 的目的僅是要讓區域網路內少數電腦進行網路連結的一個通訊協定而已, 所以考慮的角度並不是針對大型網路,因此,這個 NetBIOS 是無法跨路由的 (Router / Gateway)。這個 NetBIOS 在區域網路內實在是很好用, 所以微軟的網路架構就使用了這個咚咚來進行溝通的吶!而 SAMBA 最早發展的時候,其實是想要讓 Linux 系統可以加入 Windows 的系統當中來分享使用彼此的檔案資料的,所以當然 SAMBA 就架構在 NetBIOS 發展出來囉。
不過 NetBIOS 是無法跨路由的,因此使用 NetBIOS 發展起來的伺服器理論上也是無法跨越路由的呢! 那麼該伺服器的使用範圍不就受限相當的多了?好在,我們還有所謂的 NetBIOS over TCP/IP 的技術呢!這是什麼樣的技術啊?
舉個例子來說好了,我們知道 TCP/IP 是目前網路連接的基本協定,現在我們將 NetBIOS 想成是一封明信片, 這個明信片只能讓您自己欣賞而已,如果今天我們要將這個明信片送到遠方的朋友那邊時!就需要透過郵件系統 (例如郵局啦、國際快遞啦等等的) 來傳送了!這個 TCP/IP 就可以視為郵件傳遞系統啦!透過這個 NetBIOS over TCP/IP 的技術,我們就可以跨路由的使用 SAMBA 伺服器所提供的功能咯! 當然啦,目前 SAMBA 還是比較廣泛的使用在 LAN 裡面說。
Tips: 或許您會發現在 Windows 網路設定裡面常常看到 NetBEUI 這個咚咚,那是什麼呢?那個是 NetBIOS Extened User Interface 的簡寫,也是 IBM 在 NetBIOS 發展出來之後的改良版本。雖然這兩者的技術不太相同, 不過,我們只要知道一些簡單的概念就可以了!所以,在這裡我們不針對 NetBEUI 來介紹。 |
SAMBA 使用的 daemons
NetBIOS 當初發展時就著眼在區域網路內的快速資料交流,而因為是定義在區域網路內,因此他並沒有使用類似 TCP/IP 之類的傳輸協定,也就不需要 IP 的設定。如此一來資料如何在兩部主機之間交流呢? 其實主機在 NetBIOS 協定當中的定義為使用『NetBIOS Name』,每一部主機必須要有不同的 NetBIOS Name 才行, 而檔案資料就是在不同的 NetBIOS name 之間溝通囉!我們以一個網芳的設定來作簡單的說明好了:
- 取得對方主機的 NetBIOS name 定位該主機所在:
當我們想要登入某部 Windows 主機使用他所提供的檔案資料時,必需要加入該 Windows 主機的群組 (Workgroup),並且我們的機器也必需要設定一個主機名稱,注意喔,這個主機名稱跟 Hostname 是不一樣的,因為這個主機名稱是架構在 NetBIOS 協定上的,我們可以簡單的稱呼他為 NetBIOS Name 好了。在同一個群組當中,NetBIOS Name 必需要是獨一無二的喔! - 利用對方給予權限存取可用資源:
在我們找到該主機名稱後,是否能登入該對方主機或者是取用對方主機所提供的資源, 還要看對方 Windows 主機有沒有提供我們使用的權限吶!所以,並不是登入該 Windows 主機之後我們就可以無限制的取用該主機的檔案資源了。也就是說,如果對方主機允許你登入, 但是卻沒有開放任何資源讓您取用,呵呵,登入主機也無法查看對方的硬碟裡面的資料的啦!
- nmbd :這個 daemon 是用來管理工作群組啦、NetBIOS name 啦等等的解析。 主要利用 UDP 協定開啟 port 137, 138 來負責名稱解析的任務;
- smbd :這個 daemon 的主要功能就是用來管理 SAMBA 主機分享的目錄、檔案與印表機等等。 主要利用可靠的 TCP 協定來傳輸資料,開放的埠口為 139 及 445(不一定存在) 。
連線模式的介紹 (peer/peer, domain model)
SAMBA 主機的應用相當的廣泛,而且可以依照不同的網域連線與使用者帳號、密碼的控管方式不同, 來加以不同的類別應用,例如最常見的 Workgroup 及 Domain 兩種方式的連線模式呢! 底下我們就是要來談一談這兩種最常見的區域網路的連線模式 peer/peer 及domain model。
peer/peer (Workgroup model):
domain model
peer 有同等、同輩的意思存在,那麼 peer/peer 由字面上的解釋來看,當然就是同等地位的 PC 架構了!這是什麼意思呢?簡單的來說,在區域網路裡面的所有 PC 均可以在自己的電腦上面管理自己的帳號與密碼, 同時每一部電腦也都具有獨力可以執行各項軟體的能力,只是藉由網路將各個 PC 連結在一起而已的一個架構, 所以,每一部機器都是可以獨立運作的喔!
這樣的架構在目前小型辦公室裡面是最常見的。例如辦公室裡面有十個人,每個人桌上可能都安裝有一套 Windows 作業系統的個人電腦,而這十部電腦都可以獨立進行辦公室軟體的執行啊、獨立上網啊、獨立玩遊戲啊等等的, 因為這十部電腦都可以獨立運作,所以不會有一部電腦關掉,其他的電腦就無法工作的情況發生,這就是 peer/peer 的典型架構。
以下圖的架構為例,在這樣的架構下,假設 A 君寫了一個報告書,而 B 君想要以網路直接取用這個報告書時,他就必須要知道 A 君使用的電腦的帳號與密碼,並且 A 君必須要在 PC A 上面啟用 Windows 的『資源分享(或者是共用)』之後,才能夠讓 B 君連線進入喔 (此時 PC A 為 Server) !而且, A 君可以隨時依照自己的喜好來更改自己的帳號與密碼,而不受 B 君的影響,不過, B 君就得要取得 A 君同意取得新的帳號與密碼後,才能夠登入 PC A 喔!反過來說,同樣的, A 要取得 B 的資料時,同樣需要取得 PC B 的帳號與密碼後,才能夠順利登入啊 (此時 PC A 為 Client 喔)!因為 PC A, PC B, PC C 的角色與地位都同時可以為 Client 與 Server ,所以就是 peer/peer 的架構了!
圖一、Peer/Peer 的連線模式
生活周遭中,哪裡看到的這種 peer/peer 的架構呢?想起來了嗎?沒錯!就是藉由 Windows 的『網路上的芳鄰』所達成的『工作群組(workgroup)』的架構,那就是典型的 peer/peer 架構啦!所以, peer/peer 也可以直接說成 workgroup 的連線架構喔。
使用 peer/peer 的架構的好處,是每部電腦均可以獨立運作,而不受他人的影響!不過, 缺點就是當整個網域內的所有人員都要進行資料分享時,光是知道所有電腦裡面的帳號與密碼,就會很傷腦筋了! 所以, Peer/Peer 的架構是比較適合 (1)小型的網域,或者是 (2)沒有需要常常進行檔案資料分享的網路環境,或者是 (3)每個使用者都獨自擁有該電腦的擁有權(就是說,該電腦是使用者的,而不是公用的啦!) 而,如果該單位的所有 PC 均是公有的,而且您需要統一控管整個網域裡面的帳號與密碼的話,那就得使用底下的 domain models 了!
這樣的架構在目前小型辦公室裡面是最常見的。例如辦公室裡面有十個人,每個人桌上可能都安裝有一套 Windows 作業系統的個人電腦,而這十部電腦都可以獨立進行辦公室軟體的執行啊、獨立上網啊、獨立玩遊戲啊等等的, 因為這十部電腦都可以獨立運作,所以不會有一部電腦關掉,其他的電腦就無法工作的情況發生,這就是 peer/peer 的典型架構。
以下圖的架構為例,在這樣的架構下,假設 A 君寫了一個報告書,而 B 君想要以網路直接取用這個報告書時,他就必須要知道 A 君使用的電腦的帳號與密碼,並且 A 君必須要在 PC A 上面啟用 Windows 的『資源分享(或者是共用)』之後,才能夠讓 B 君連線進入喔 (此時 PC A 為 Server) !而且, A 君可以隨時依照自己的喜好來更改自己的帳號與密碼,而不受 B 君的影響,不過, B 君就得要取得 A 君同意取得新的帳號與密碼後,才能夠登入 PC A 喔!反過來說,同樣的, A 要取得 B 的資料時,同樣需要取得 PC B 的帳號與密碼後,才能夠順利登入啊 (此時 PC A 為 Client 喔)!因為 PC A, PC B, PC C 的角色與地位都同時可以為 Client 與 Server ,所以就是 peer/peer 的架構了!
圖一、Peer/Peer 的連線模式
生活周遭中,哪裡看到的這種 peer/peer 的架構呢?想起來了嗎?沒錯!就是藉由 Windows 的『網路上的芳鄰』所達成的『工作群組(workgroup)』的架構,那就是典型的 peer/peer 架構啦!所以, peer/peer 也可以直接說成 workgroup 的連線架構喔。
使用 peer/peer 的架構的好處,是每部電腦均可以獨立運作,而不受他人的影響!不過, 缺點就是當整個網域內的所有人員都要進行資料分享時,光是知道所有電腦裡面的帳號與密碼,就會很傷腦筋了! 所以, Peer/Peer 的架構是比較適合 (1)小型的網域,或者是 (2)沒有需要常常進行檔案資料分享的網路環境,或者是 (3)每個使用者都獨自擁有該電腦的擁有權(就是說,該電腦是使用者的,而不是公用的啦!) 而,如果該單位的所有 PC 均是公有的,而且您需要統一控管整個網域裡面的帳號與密碼的話,那就得使用底下的 domain models 了!
假設今天您服務的單位有 10 部電腦,但是您的單位有 20 個員工,這也就是說,這 20 個員工輪流搶著用這 10 部電腦。如果每部電腦都如同 peer/peer 的架構時,那麼每部電腦都需要輸入這 20 個員工的帳號與密碼來提供他們登入喔,而且,今天假如有個員工想要變更自己的密碼時,就需要到 10 台電腦上面進行密碼變更的作業!否則他就必須要記得這 10 部電腦裡面,那一部電腦是記憶那一個密碼.....好煩那~
如果上述是這樣的情況,使用 peer/peer 架構就不是一個好方法了!這個時候就需要藉由 domain model 來達成您的需求啦!所謂的 domain model 概念其實也很簡單,既然使用電腦資源需要帳號與密碼, 那麼我將所有的帳號與密碼都放置在一部主控電腦 (Primary Domain Controller, PDC) 上面,在我的網域裡面,任何人想要使用任何電腦時,都需要在螢幕前方輸入帳號與密碼,然後通通藉由 PDC 主機的辨識後,才給予適當的使用權限,也就是說,不同的身份還具有不一樣的電腦資源使用權限就是了! 例如底下的圖示:
圖二、domain model 的連線模式
PDC 主機控管整個網域裡面的各個機器 (PC A ~ PC D) 的帳號與密碼的資訊,假如今天有個使用者帳號名稱為 Ken ,且密碼為 mypasswd 時,他不論使用哪一部電腦 (PC A ~ PC D) 只要在螢幕前方輸入 ken 與他的密碼,則該機器會先到 PDC 上面查驗是否有 ken ,以及 ken 的密碼,並且 PDC 主機會給予 ken 這個使用者相關的電腦資源使用權限。當 ken 在任何一部主機上面登入成功後,他就可以使用相關的電腦資源了!
這樣的架構比較適合人來人往的企業架構,當系統管理員要控管新進人員的電腦資源使用權時,可以直接針對 PDC 來修改就好了,不需要每一部主機都去修修改改的,對於系統管理員來說,這樣的架構在控管帳號資源上,當然是比較簡單的啦!
各種架構適用的環境與適用的人都不相同,並沒有那個是最好啦!請依照您的工作環境來選擇連線的模式囉!當然, SAMBA 可以達到上述兩種模式的啦!底下我們會分別來介紹喔!如果上述是這樣的情況,使用 peer/peer 架構就不是一個好方法了!這個時候就需要藉由 domain model 來達成您的需求啦!所謂的 domain model 概念其實也很簡單,既然使用電腦資源需要帳號與密碼, 那麼我將所有的帳號與密碼都放置在一部主控電腦 (Primary Domain Controller, PDC) 上面,在我的網域裡面,任何人想要使用任何電腦時,都需要在螢幕前方輸入帳號與密碼,然後通通藉由 PDC 主機的辨識後,才給予適當的使用權限,也就是說,不同的身份還具有不一樣的電腦資源使用權限就是了! 例如底下的圖示:
圖二、domain model 的連線模式
PDC 主機控管整個網域裡面的各個機器 (PC A ~ PC D) 的帳號與密碼的資訊,假如今天有個使用者帳號名稱為 Ken ,且密碼為 mypasswd 時,他不論使用哪一部電腦 (PC A ~ PC D) 只要在螢幕前方輸入 ken 與他的密碼,則該機器會先到 PDC 上面查驗是否有 ken ,以及 ken 的密碼,並且 PDC 主機會給予 ken 這個使用者相關的電腦資源使用權限。當 ken 在任何一部主機上面登入成功後,他就可以使用相關的電腦資源了!
這樣的架構比較適合人來人往的企業架構,當系統管理員要控管新進人員的電腦資源使用權時,可以直接針對 PDC 來修改就好了,不需要每一部主機都去修修改改的,對於系統管理員來說,這樣的架構在控管帳號資源上,當然是比較簡單的啦!
SAMBA 伺服器的基礎設定
SAMBA 這個套件幾乎在所有的 Linux distributions 上面都有提供,因為即使你的 Linux 僅做為個人桌上型電腦使用時, 你依舊可能會需要連線到遠端的 Windows 的網芳的,那個時候就得要 samba 提供的用戶端軟體功能囉! 因此你只要直接安裝系統上面提供的預設 samba 版本即可。底下我們會先介紹 samba 伺服器,然後在介紹用戶端功能喔!
Samba 所需套件及其套件結構
基礎設定流程與 smb.conf 的主要規劃
Samba 所需套件及其套件結構
目前常見的 samba 版本為 3.x 版,舊版的 2.x 版在設定上有點不一樣,因此在進入設定前請先確認你的 samba 版本。 咱們的 CentOS 4.x 提供的是 Samba 3.x 的版本。那麼你需要什麼套件呢?基本上有這些:
- samba:
這個套件主要包含了 SAMBA 的主要 daemon 檔案 (smbd 及 nmbd)、 SAMBA 的文件檔 (document)、以及其他與 SAMBA 相關的 logrotate 設定檔及開機預設選項檔案等; - samba-common:
這個套件則主要提供了 SAMBA 的主要設定檔 (smb.conf) 、 smb.conf 語法檢驗的測試程式 (testparm)等等; - samba-client:
這個套件則提供了當 Linux 做為 SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 檔案格式的執行檔 smbmount 等等。
- /etc/samba/smb.conf:
smb.conf 是 Samba 的主要設定檔名,如果你的 distribution 的 SAMBA 設定檔不在 /etc/samba/ 目錄當中, 那麼你應該使用 locate 或 find 等方式將他找出來就好啦。基本上,咱們的 Samba 就僅有這個設定檔而已, 且這個設定檔本身就是很詳細的說明文件了,請用 vi 去查閱他吧!這個檔案主要在設定工作群組、 NetBIOS 名稱以及分享的目錄等相關設定,我們後續要介紹的都是這個檔案而已啦! - /etc/samba/lmhosts:
這個檔案的主要目的在對應 NetBIOS name 與該主機名稱的 IP ,事實上他有點像是 /etc/hosts 的功能!只不過這個 lmhosts 對應的主機名稱是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!由於目前 SAMBA 的功能越來越強大,所以通常只要您一啟動 SAMBA 時,他就能自己捉到 LAN 裡面的相關電腦的 NetBIOS name 對應 IP 的資訊,因此這個檔案通常可以不用設定了! - /etc/samba/smbpasswd:
這個檔案預設並不存在啦!他是 SAMBA 預設的使用者密碼對應表。當我們設定的 SAMBA 伺服器是較為嚴密的,需要使用者輸入帳號與密碼後才能登入的狀態時,使用者的密碼預設就是放置在這裡咯 (當然囉,您可以自行在 smb.conf 裡面設定密碼放置的地方及密碼檔名, 不過我們這裡都以預設的狀態來說明) 。比較需要注意的是,這個檔案因為包含了使用者的密碼, 當然權限方面要較為注意啦!這個檔案的擁有者需要是 root ,且權限設定為 600 才行喔! - /etc/samba/smbusers:
由於 Windows 與 Unix-like 在管理員與訪客的帳號名稱不一致,分別為 administrator 及 root, 為了對應這兩者之間的帳號關係,可以使用這個檔案來設定。不過這個檔案的使用必須要經由 smb.conf 內的『 username map 』設定項目來啟動才行。 - testparm:
這個指令主要在檢驗 samba 設定檔 smb.conf 的語法正確與否,當你編輯過 smb.conf 時,請務必使用這個指令來檢查一次, 避免因為打字錯誤引起的困擾啊! - smbd, nmbd:
前幾個小節曾經提過的兩個主要 daemon 就在這裡! - smbstatus:
列出目前的 SMB server 的狀態,也是很有用途的一個指令啦! - smbpasswd:
如果您的 SAMBA 設定的較為嚴格,需要規定使用者的帳號與密碼,那麼那個密碼檔案的建立就需要使用 smbpasswd 來建置才可以的喔!所以這個指令與建立 SAMBA 的密碼有關咯! - smbclient:
當你的 Linux 主機想要藉由『網路上的芳鄰』的功能來查看別台電腦所分享出來的目錄與裝置時,就可以使用 smbclient 來查看啦!這個指令也可以使用在自己的 SAMBA 主機上面,用來查看是否設定成功哩! - smbmount:
在 Windows 上面我們可以設定『網路磁碟機』來連接到自己的主機上面,同樣的,在 Linux 上面,我們可以透過 smbmount 來將遠端主機分享的檔案與目錄掛載到自己的 Linux 主機上面哪!不過,其實我們也可以直接使用 mount 這個指令來進行同樣的功能就是了。 - nmblookup:
有點類似 nslookup 啦!重點在查出 NetBIOS name 就是了。 - smbtree:
這玩意就有點像 Windows 系統的網路上的芳鄰顯示的結果,可以顯示類似『靠近我的電腦』之類的資料, 能夠查到工作群組與電腦名稱的樹狀目錄分佈圖,有趣吧! - /usr/share/doc/samba-<版本>:
這個目錄包含了 SAMBA 的所有相關的技術手冊喔!也就是說,當您安裝好了 SAMBA 之後,您的系統裡面就已經含有相當豐富而完整的 SAMBA 使用手冊了!值得高興吧! ^_^,所以,趕緊自行參考喔!
基礎設定流程與 smb.conf 的主要規劃
既然 Samba 是要加入 Windows 的網芳當中,所以他的設定方式應該是要與網芳差不多才是。所以我們先來聊一聊 Windows 的一些設定方法再說。在早期 Windows 的網芳設定真是很簡單,不過也因為太簡單, 所以產生的安全問題可是相當的麻煩的。後來在 Windows XP 的 sp2 (服務包第二版) 加入了很多的預設防火牆機制, 因此使用網芳的預設限制常常會是這樣的:
主機整體參數
分享目錄參數
變數特性
- 主機與主機之間必須要在同一個網域當中 (否則需要修改 Windows 預設防火牆);
- 最好設定為同一工作群組;
- 主機的名稱不可相同 (NetBIOS name);
- 專業版 Windows XP 最多僅能提供同時十個用戶連線到網芳。
- 叫出檔案總管,然後在要分享的目錄、磁碟或裝置 (如印表機) 上面按下右鍵,選擇『共用』,然後就能夠設定好分享的資料了;
- 最好建立一組給用戶使用的帳號與密碼,讓其他主機的使用者可以透過該帳號密碼連線進入網芳;
- 在 smb.conf 當中設定好工作群組、NetBIOS 主機名、密碼使用狀態等等與主機相關的資訊;
- 在 smb.conf 內設定好預計要分享的目錄或裝置以及可供使用的使用者資料;
- 根據步驟 2 的設定,在 Linux 檔案系統當中建立好分享出去的檔案或裝置的使用權限;
- 根據步驟 2 的設定,以 smbpasswd 建立起使用者的帳號及密碼
- 啟動 Samba 的 smbd, nmbd 服務,開始運轉哩!
在 smb.conf 這個設定檔當中的設定有點像底下這樣:
在 global 當中的就是一些主機的整體參數了,包括工作群組、主機的 NetBIOS 名稱、字元編碼的顯示、登錄檔的設定、 是否使用密碼以及使用密碼驗證的機制等等,都是在這個 [global] 項目中設定的。至於 [分享資源名稱] 則是針對你開放的目錄來進權限方面的設定,包括誰可以瀏覽該目錄、是否可以讀寫等等參數。 在 [global] 部分關於主機名稱資訊方面的參數主要有:
我們的網友 eyesblue 寫得太好了!所以建議大家直接前往查閱即可!除此之外,還有登錄檔方面的資訊, 包括這些參數:
# 會有很多加上 # 或 ; 的註解說明,你也可以自行加上來提醒自己相關設定 [global] 參數項目 = 設定內容 .... [分享資源名稱] 參數項目 = 設定內容 .... |
- workgroup = 工作群組的名稱:注意,主機群要相同;
- netbios name = 主機的 NetBIOS 名稱啊,每部主機均不同;
- server string = 主機的簡易說明,這個隨便寫即可。
- display charset = 自己伺服器上面的顯示編碼, 例如你在終端機時所查閱的編碼資訊。一般來說,與底下的 unix charset 會相同。
- unix charset = 在 Linux 伺服器上面所使用的編碼,一般來說就是 i18n 的編碼囉! 所以你必須要參考 /etc/sysconfig/i18n 內的『預設』編碼。
- dos charset = 就是 Windows 用戶端的編碼了! 一般來說我們的繁體中文 Windows 使用的是 big5 編碼,這個編碼在 Samba 內的格式被稱為『 cp950 』喔!
我們的網友 eyesblue 寫得太好了!所以建議大家直接前往查閱即可!除此之外,還有登錄檔方面的資訊, 包括這些參數:
- log file = 登錄檔放置的檔案,檔名可能會使用變數處理;
- max log size = 登錄檔最大僅能到多少 Kbytes ,若大於該數字,則會被 rotate 掉。
- security = user, server, domain, share 四選一,這四個設定值分別代表:
- user :使用 SAMBA 本身的密碼資料庫,密碼資料庫與底下的 smb passwd file 有關;
- share:分享的資料不需要密碼即可分享;
- server, domain:使用外部主機的密碼,亦即 SAMBA 是用戶端之意,如果設定這個項目, 你還得要提供『password server = IP』的設定值才行;
- encrypt passwords = Yes 代表密碼要加密,注意那個 passwords 要有 s 才對!
- smb passwd file = 密碼放置的檔案,通常是 /etc/samba/smbpasswd 。
在目錄參數部分,主要有底下這幾個常見的參數喔:
- [分享名稱] :這個分享名稱很重要,他是一個『代號』而已。 舉例來說,你在 Windows 當中使用『共用』來分享網芳時,假設你將『D:\game』分享出來, 系統不是還會要你輸入一個『在網路上面的名稱』嗎?假設你輸入『My_Games』這個名稱好了, 那麼未來大家在網芳看到的這個資料夾 (D:\game) 名稱其實是『\\你的IP\My_Games』啦!
- comment :這個目錄的說明!
- path :在網芳中顯示的名稱 [分享名稱] 中,所實際進入的 Linux 檔案系統。 也就是說,在網芳當中看到的是 [分享] 的名稱,而實際操作的檔案系統則是在 path 裡頭所設定的。
- read only:是否唯讀?
- public :是否讓所有可以登入的使用者看到這個項目?
- writable :是否可以寫入?這裡需要注意一下喔!那個 read only 與 writable 不是兩個蠻相似的設定值嗎?如果 writable 在這裡設定為 no ,亦即不可寫入,那跟 read only 不就互相抵觸了!那個才是正確的設定?答案是:最後出現的那個設定值為主要的設定!
- create mode 與 directory mode 都與權限有關的咯!
- valid users = 使用者,這個項目可以指定能夠進入到此資源的特定使用者。
為了簡化設定值,Samba 提供很多不同的變數給我們來使用,主要有底下這幾個變數喔:
- %S:取代目前的設定項目值,所謂的『設定項目值』就是在 [分享] 裡面的內容! 舉例來說,例如底下的設定範例:
相关推荐
16_檔案伺服器之二: SAMBA 伺服器.pdf 17_區網控制者: Proxy 伺服器.pdf 18_網路磁碟裝置: iSCSI 伺服器.pdf 19_主機名稱控制者: DNS 伺服器.pdf 20_WWW 伺服器.pdf 21_檔案伺服器之三: FTP 伺服器.pdf 22_郵件...
Samba服务器配置及访问Samba共享 Samba服务器是一种基于SMB/CIFS协议的文件和打印机共享服务器,主要用于Linux和Windows之间的资源共享。下面是Samba服务器配置及访问Samba共享的知识点总结: 一、Samba服务器安装...
在这种搭建中,我们需要首先安装 Windows Server 2008 作为域控制器,然后安装 SAMBA 文件服务器,并配置域控制器和 SAMBA 文件服务器的相关设置。 一、域控制器的安装和配置 首先,我们需要下载和安装 Windows ...
Samba是一款开源的软件,它使得Linux和Unix系统能够与Microsoft Windows网络无缝集成,实现文件和打印服务共享。在Ubuntu操作系统中,Samba扮演着重要的角色,为跨平台的文件共享提供支持。以下是对"Samba离线安装和...
在Ubuntu下安装Samba可以通过系统自带的包管理器进行,以Ubuntu 12.04为例,系统已经自带了Samba。在旧版本的Ubuntu系统中,可以通过命令“sudo apt-get install samba samba-common”来安装Samba。 配置Samba...
可以使用文本编辑器打开 /etc/samba/smb.conf 文件,并在 [global] 部分添加以下内容: workgroup = WORKGROUP hosts allow = 192.168.0. security = user encrypt passwords = yes smb passwd file = /etc/samba/...
Windows客户端可以通过网络邻居或“映射网络驱动器”功能找到并访问这个共享。 记住,为了安全,你可能还需要设置Samba的日志记录、限制匿名访问、设定用户权限等。文档`Centos配置samba文件共享服务器.docx`会提供...
只需在 Windows 的文件资源管理器中输入: ```plaintext \\<Samba服务器IP地址> ``` 然后输入之前创建的 Samba 用户名和密码即可访问共享资源。 通过以上步骤,您应该能够顺利地在 CentOS 7 上配置并使用 Samba ...
在嵌入式系统中,ARM处理器因其低功耗和高性能的特点被广泛应用,而Samba服务器则是将Linux或类Unix系统与Windows网络环境整合的关键组件。本文将深入探讨如何在ARM板上移植Samba服务器,帮助你理解这个过程并提供...
samba为script文件,可启动,停止Samba服务器或回报目前的状态。 Samba是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为...
Ubuntu 上建立 Samba 服务器以及交叉编译环境配置 在这篇文章中,我们将讨论如何在 Ubuntu 上建立 Samba 服务器,并配置交叉编译环境。本文将详细介绍建立 Samba 服务器的步骤,以及配置交叉编译环境的过程。 一、...
1. **安装**:在大多数Linux发行版中,可以通过包管理器(如apt、yum或dnf)轻松安装Samba。例如,在Ubuntu上,可以运行`sudo apt-get install samba`。 2. **配置**:Samba的主要配置文件是`/etc/samba/smb.conf`...
RPM(Red Hat Package Manager)是一种软件包管理器,用于安装、升级、查询和删除软件。此包将安装System-config-samba的主程序,使得你可以通过图形界面来管理Samba服务。 3. system-config-samba-docs-1.0.9-1.fc...
RPM格式是Linux发行版中广泛使用的软件包管理器,便于软件的安装、升级和卸载。 描述中提到的是Linux环境下安装Samba服务所需的几个关键RPM文件。"samba-client"是Samba客户端组件,它允许Linux用户连接到Windows...
在大多数Linux发行版中,可以通过包管理器安装Samba。例如,在基于Debian的系统中,可以使用以下命令安装Samba: ```bash sudo apt-get install samba ``` 在基于Red Hat的系统中,则可以使用: ```bash sudo yum...
标题提到的“samba服务安装rpm包”,意味着我们要在Linux系统上通过RPM包管理器来安装Samba。RPM是Linux发行版如Red Hat、CentOS等广泛使用的软件包管理系统,它可以方便地安装、升级和卸载软件。 首先,了解Samba...
在大多数Linux发行版中,你可以通过包管理器轻松安装Samba。例如,在Ubuntu或Debian上: ```bash sudo apt-get install samba samba-common-bin ``` 在CentOS或Fedora上: ```bash sudo yum install samba samba-...
linux下samba安装rpm包,其中包含: samba-2.2.7a-7.9.0.i386.rpm, samba-client-2.2.7a-7.9.0.i386.rpm, samba-common-2.2.7a-7.9.0.i386.rpm 全套三个安装包... 已经做好了镜像文件,直接加载即可。
CentOS 开启 Samba 服务 CentOS 开启 Samba 服务是 Linux 系统中实现文件共享和打印机共享的重要步骤。Samba 服务使用 SMB(Service Message Block)协议来实现数据传输,这个协议能够支持多种异构系统的网络互联。...