SAMBA 的發(fā)展歷史與名稱的由來在早期的網(wǎng)路世界當(dāng)中,檔案資料在不同主機(jī)之間的傳輸大多是使用FTP這個(gè)好用的伺服器軟體來進(jìn)行傳送。不過使用 FTP 傳輸檔案卻有個(gè)小小的問題,那就是您無法直接修改主機(jī)上面的檔案資料!也就是說,您想要更改Linux 主機(jī)上面的某個(gè)檔案時(shí),你必須要將該檔案自伺服器上下載下來後才能修改。也因此該檔案在伺服器與用戶端都會(huì)存在。這個(gè)時(shí)候,萬一如果有一天您修改了某個(gè)檔案,卻忘記將資料上傳回主機(jī),那麼等過了一陣子之後,呵呵,您如何知道那個(gè)檔案才是最新的?讓檔案在兩部主機(jī)之間直接修改既然有這樣的問題,那麼好吧,我可不可以在用戶端的機(jī)器上面直接取用 server 上面的檔案,如果可以在用戶端直接進(jìn)行 Server 端檔案的存取,那麼我在用戶端就不需要存在該檔案資料囉,也就是說,我只要有 Server 上面的檔案資料存在就可以啦!有沒有這樣的檔案系統(tǒng)啊 (File System)!很高興的是,前面我們已經(jīng)提過的Network File System, NFS就是這樣的檔案系統(tǒng)之一啦!我只要在用戶端將 Server 所提供分享的目錄掛載進(jìn)來,那麼在用戶端的機(jī)器上面就可以直接取用 Server 上的檔案資料囉,而且,該資料就像是我用戶端上面的 partition 一般,真是好用!而除了可以讓 Unix Like 的機(jī)器互相分享檔案的 NFS 伺服器之外,在微軟 (Microsoft)作業(yè)系統(tǒng)上面也有類似的檔案系統(tǒng),那就是 Common Internet File System,CIFS 這個(gè)咚咚啦!CIFS 最簡(jiǎn)單的想法就是目前常見的『網(wǎng)路上的芳鄰』咯!Windows 系統(tǒng)的電腦可以透過桌面上『網(wǎng)路上的芳鄰』來分享別人所提供的檔案資料哩!真是方便。不過,NFS 僅能讓 Unix 機(jī)器溝通, CIFS 只能讓 Windows 機(jī)器溝通。傷腦筋,那麼有沒有讓W(xué)indows 與 Unix-Like 這兩個(gè)不同的平臺(tái)相互分享檔案資料的檔案系統(tǒng)呢?利用封包偵測(cè)逆向工程發(fā)展的 SMB Server在 1991 年一個(gè)名叫 Andrew Tridgell 的大學(xué)生就有這樣的困擾,他手上有三部機(jī)器,分別是跑 DOS的個(gè)人電腦、DEC公司的 Digital Unix 系統(tǒng)以及 Sun 的 Unix 系統(tǒng)。在當(dāng)時(shí), DEC 公司有發(fā)展出一套稱為PATHWORKS 的軟體,這套軟體可以用來分享 DEC 的 Unix 與個(gè)人電腦的 DOS 這兩個(gè)作業(yè)系統(tǒng)的檔案資料,可惜讓Tridgell 覺得較困擾的是,Sun 的 Unix 無法藉由這個(gè)軟體來達(dá)到資料分享的目的。這個(gè)時(shí)候 Tridgell 就想說:『咦!既然這兩部系統(tǒng)可以相互溝通,沒道理 Sun就必需這麼苦命吧?可不可以將這兩部系統(tǒng)的運(yùn)作原理找出來,然後讓 Sun 這部機(jī)器也能夠分享檔案資料呢?』,為了解決這樣的的問題,他老兄就自行寫了個(gè) program 去偵測(cè)當(dāng) DOS 與 DEC 的 Unix系統(tǒng)在進(jìn)行資料分享傳送時(shí)所使用到的通訊協(xié)定資訊,然後將這些重要的資訊擷取下來,並且基於上述所找到的通訊協(xié)定而開發(fā)出Server Message Block (SMB) 這個(gè)檔案系統(tǒng),而就是這套 SMB軟體就能夠讓 Unix 與 DOS 互相的分享資料囉!Tips:再次的給他強(qiáng)調(diào)一次,在 Unix Like 上面可以分享檔案資料的 file system 是 NFS,那麼在 Windows 上面使用的『網(wǎng)路上的芳鄰』所使用的檔案系統(tǒng)則稱為 Common Internet File System, CIFS
印表機(jī)伺服器SAMBA 除了分享檔案系統(tǒng)外,也可以分享印表機(jī)喔,鳥哥的研究室好幾部電腦就是直接以 Linux分享的印表機(jī)來印製報(bào)告的。您會(huì)說『啊 Windows 也可以辦的到??!沒有什麼了不起的!』是啊。但是因?yàn)?Linux 做為伺服器主機(jī)時(shí),鳥哥認(rèn)為 Linux 畢竟還是比較穩(wěn)定一點(diǎn),可以 24小時(shí)且全年無休的努力工作吶。此外,因?yàn)槟壳巴高^『網(wǎng)路上的芳鄰』來攻擊區(qū)域網(wǎng)路的 Windows作業(yè)系統(tǒng)的電腦病毒實(shí)在是太多了,防不勝防, Linux 對(duì)於這樣的攻擊並沒有很大的影響(因?yàn)槌R姷墓羰址ň槍?duì) Windows 而來~),所以也比較安全一些說~SAMBA 的應(yīng)用挺廣泛的,尤其對(duì)於區(qū)域網(wǎng)路內(nèi)的電腦來說,更是一項(xiàng)不可多得的好用的伺服器,雖然或許你會(huì)說,SAMBA 的功能不過是模仿 Windows 的網(wǎng)芳以及 AD 相關(guān)的軟體,那我直接使用 Windows 不就 OK 了?可惜的是, Windows XP 對(duì)於網(wǎng)芳的連線限制依版本而有所不同,以企業(yè)常見的專業(yè)版 (Professional) 來說,他僅能提供最多同時(shí)十個(gè)連線到網(wǎng)芳的連線能力,這.....不太夠用吧!所以囉,SAMBA 穩(wěn)定、可靠又沒有限制連線數(shù),值得學(xué)習(xí)吧!^_^!更多的應(yīng)用您可以自行發(fā)掘吶!
SMB 使用的 NetBIOS 通訊協(xié)定事實(shí)上,就像 NFS 是架構(gòu)在 RPC Server 上面一樣, SAMBA這個(gè)檔案系統(tǒng)是架構(gòu)在 NetBIOS (Network Basic Input/Output System, NetBIOS)這個(gè)通訊協(xié)定上面所開發(fā)出來的。既然如此,我們當(dāng)然就要瞭解一下 NetBIOS 囉!最早 IBM 發(fā)展出 NetBIOS 的目的僅是要讓區(qū)域網(wǎng)路內(nèi)少數(shù)電腦進(jìn)行網(wǎng)路連結(jié)的一個(gè)通訊協(xié)定而已,所以考慮的角度並不是針對(duì)大型網(wǎng)路,因此,這個(gè) NetBIOS 是無法跨路由的(Router / Gateway)。這個(gè) NetBIOS 在區(qū)域網(wǎng)路內(nèi)實(shí)在是很好用,所以微軟的網(wǎng)路架構(gòu)就使用了這個(gè)咚咚來進(jìn)行溝通的吶!而 SAMBA 最早發(fā)展的時(shí)候,其實(shí)是想要讓 Linux系統(tǒng)可以加入 Windows 的系統(tǒng)當(dāng)中來分享使用彼此的檔案資料的,所以當(dāng)然 SAMBA 就架構(gòu)在 NetBIOS 發(fā)展出來囉。不過 NetBIOS 是無法跨路由的,因此使用 NetBIOS 發(fā)展起來的伺服器理論上也是無法跨越路由的呢!那麼該伺服器的使用範(fàn)圍不就受限相當(dāng)?shù)亩嗔耍亢迷?,我們還有所謂的 NetBIOS overTCP/IP 的技術(shù)呢!這是什麼樣的技術(shù)???舉個(gè)例子來說好了,我們知道 TCP/IP 是目前網(wǎng)路連接的基本協(xié)定,現(xiàn)在我們將 NetBIOS 想成是一封明信片,這個(gè)明信片只能讓您自己欣賞而已,如果今天我們要將這個(gè)明信片送到遠(yuǎn)方的朋友那邊時(shí)!就需要透過郵件系統(tǒng)(例如郵局啦、國(guó)際快遞啦等等的) 來傳送了!這個(gè) TCP/IP 就可以視為郵件傳遞系統(tǒng)啦!透過這個(gè)NetBIOS over TCP/IP 的技術(shù),我們就可以跨路由的使用 SAMBA 伺服器所提供的功能咯!當(dāng)然啦,目前 SAMBA 還是比較廣泛的使用在 LAN 裡面說。Tips:或許您會(huì)發(fā)現(xiàn)在 Windows 網(wǎng)路設(shè)定裡面常常看到 NetBEUI 這個(gè)咚咚,那是什麼呢?那個(gè)是 NetBIOS Extened User Interface 的簡(jiǎn)寫,也是 IBM 在 NetBIOS 發(fā)展出來之後的改良版本。雖然這兩者的技術(shù)不太相同, 不過,我們只要知道一些簡(jiǎn)單的概念就可以了!所以,在這裡我們不針對(duì) NetBEUI 來介紹。
SAMBA 使用的 daemonsNetBIOS 當(dāng)初發(fā)展時(shí)就著眼在區(qū)域網(wǎng)路內(nèi)的快速資料交流,而因?yàn)槭嵌x在區(qū)域網(wǎng)路內(nèi),因此他並沒有使用類似TCP/IP 之類的傳輸協(xié)定,也就不需要 IP 的設(shè)定。如此一來資料如何在兩部主機(jī)之間交流呢?其實(shí)主機(jī)在 NetBIOS 協(xié)定當(dāng)中的定義為使用『NetBIOS Name』,每一部主機(jī)必須要有不同的 NetBIOS Name 才行,而檔案資料就是在不同的 NetBIOS name 之間溝通囉!我們以一個(gè)網(wǎng)芳的設(shè)定來作簡(jiǎn)單的說明好了:取得對(duì)方主機(jī)的 NetBIOS name 定位該主機(jī)所在:當(dāng)我們想要登入某部 Windows 主機(jī)使用他所提供的檔案資料時(shí),必需要加入該 Windows 主機(jī)的群組 (Workgroup),並且我們的機(jī)器也必需要設(shè)定一個(gè)主機(jī)名稱,注意喔,這個(gè)主機(jī)名稱跟 Hostname 是不一樣的,因?yàn)檫@個(gè)主機(jī)名稱是架構(gòu)在 NetBIOS 協(xié)定上的,我們可以簡(jiǎn)單的稱呼他為 NetBIOS Name 好了。在同一個(gè)群組當(dāng)中,NetBIOS Name 必需要是獨(dú)一無二的喔!利用對(duì)方給予權(quán)限存取可用資源:在我們找到該主機(jī)名稱後,是否能登入該對(duì)方主機(jī)或者是取用對(duì)方主機(jī)所提供的資源, 還要看對(duì)方 Windows 主機(jī)有沒有提供我們使用的權(quán)限吶!所以,並不是登入該 Windows 主機(jī)之後我們就可以無限制的取用該主機(jī)的檔案資源了。也就是說,如果對(duì)方主機(jī)允許你登入, 但是卻沒有開放任何資源讓您取用,呵呵,登入主機(jī)也無法查看對(duì)方的硬碟裡面的資料的啦!我們的 SAMBA 則是透過兩支服務(wù)來控制這兩個(gè)步驟,分別是:nmbd :這個(gè) daemon 是用來管理工作群組啦、NetBIOS name 啦等等的解析。 主要利用 UDP 協(xié)定開啟 port 137, 138 來負(fù)責(zé)名稱解析的任務(wù);smbd :這個(gè) daemon 的主要功能就是用來管理 SAMBA 主機(jī)分享的目錄、檔案與印表機(jī)等等。 主要利用可靠的 TCP 協(xié)定來傳輸資料,開放的埠口為 139 及 445(不一定存在) 。所以囉, SAMBA 每次啟動(dòng)至少都需要有這兩個(gè) daemons 喔!這可不要忘記囉! ^_^而當(dāng)我們啟動(dòng)了 SAMBA之後,主機(jī)系統(tǒng)就會(huì)啟動(dòng) 137, 138, 139 三個(gè) port ,且同時(shí)會(huì)有 UDP/TCP 的監(jiān)聽服務(wù)喔!這可不要忘記了!因?yàn)獒崦嬖O(shè)定防火牆的時(shí)候,還會(huì)使用到這三個(gè) port 的呢!
連線模式的介紹(peer/peer, domain model)SAMBA 主機(jī)的應(yīng)用相當(dāng)?shù)膹V泛,而且可以依照不同的網(wǎng)域連線與使用者帳號(hào)、密碼的控管方式不同,來加以不同的類別應(yīng)用,例如最常見的 Workgroup 及 Domain 兩種方式的連線模式呢!底下我們就是要來談一談這兩種最常見的區(qū)域網(wǎng)路的連線模式 peer/peer 及domain model。peer/peer (Workgroup model):peer 有同等、同輩的意思存在,那麼 peer/peer 由字面上的解釋來看,當(dāng)然就是同等地位的 PC架構(gòu)了!這是什麼意思呢?簡(jiǎn)單的來說,在區(qū)域網(wǎng)路裡面的所有 PC 均可以在自己的電腦上面管理自己的帳號(hào)與密碼,同時(shí)每一部電腦也都具有獨(dú)力可以執(zhí)行各項(xiàng)軟體的能力,只是藉由網(wǎng)路將各個(gè) PC 連結(jié)在一起而已的一個(gè)架構(gòu),所以,每一部機(jī)器都是可以獨(dú)立運(yùn)作的喔!這樣的架構(gòu)在目前小型辦公室裡面是最常見的。例如辦公室裡面有十個(gè)人,每個(gè)人桌上可能都安裝有一套 Windows作業(yè)系統(tǒng)的個(gè)人電腦,而這十部電腦都可以獨(dú)立進(jìn)行辦公室軟體的執(zhí)行啊、獨(dú)立上網(wǎng)啊、獨(dú)立玩遊戲啊等等的,因?yàn)檫@十部電腦都可以獨(dú)立運(yùn)作,所以不會(huì)有一部電腦關(guān)掉,其他的電腦就無法工作的情況發(fā)生,這就是 peer/peer的典型架構(gòu)。以下圖的架構(gòu)為例,在這樣的架構(gòu)下,假設(shè) A 君寫了一個(gè)報(bào)告書,而 B 君想要以網(wǎng)路直接取用這個(gè)報(bào)告書時(shí),他就必須要知道A 君使用的電腦的帳號(hào)與密碼,並且 A 君必須要在 PC A 上面啟用 Windows 的『資源分享(或者是共用)』之後,才能夠讓B 君連線進(jìn)入喔 (此時(shí) PC A 為 Server) !而且, A 君可以隨時(shí)依照自己的喜好來更改自己的帳號(hào)與密碼,而不受B 君的影響,不過, B 君就得要取得 A 君同意取得新的帳號(hào)與密碼後,才能夠登入 PC A 喔!反過來說,同樣的,A 要取得 B 的資料時(shí),同樣需要取得 PC B 的帳號(hào)與密碼後,才能夠順利登入啊 (此時(shí) PC A 為 Client 喔)!因?yàn)镻C A, PC B, PC C 的角色與地位都同時(shí)可以為 Client 與 Server ,所以就是 peer/peer 的架構(gòu)了!
圖二、domain model 的連線模式PDC 主機(jī)控管整個(gè)網(wǎng)域裡面的各個(gè)機(jī)器 (PC A ~ PC D) 的帳號(hào)與密碼的資訊,假如今天有個(gè)使用者帳號(hào)名稱為Ken ,且密碼為 mypasswd 時(shí),他不論使用哪一部電腦 (PC A ~ PC D) 只要在螢?zāi)磺胺捷斎?ken與他的密碼,則該機(jī)器會(huì)先到 PDC 上面查驗(yàn)是否有 ken ,以及 ken 的密碼,並且 PDC 主機(jī)會(huì)給予 ken這個(gè)使用者相關(guān)的電腦資源使用權(quán)限。當(dāng) ken 在任何一部主機(jī)上面登入成功後,他就可以使用相關(guān)的電腦資源了!這樣的架構(gòu)比較適合人來人往的企業(yè)架構(gòu),當(dāng)系統(tǒng)管理員要控管新進(jìn)人員的電腦資源使用權(quán)時(shí),可以直接針對(duì) PDC來修改就好了,不需要每一部主機(jī)都去修修改改的,對(duì)於系統(tǒng)管理員來說,這樣的架構(gòu)在控管帳號(hào)資源上,當(dāng)然是比較簡(jiǎn)單的啦!各種架構(gòu)適用的環(huán)境與適用的人都不相同,並沒有那個(gè)是最好啦!請(qǐng)依照您的工作環(huán)境來選擇連線的模式囉!當(dāng)然, SAMBA可以達(dá)到上述兩種模式的啦!底下我們會(huì)分別來介紹喔!
SAMBA 伺服器的基礎(chǔ)設(shè)定SAMBA 這個(gè)套件幾乎在所有的 Linux distributions 上面都有提供,因?yàn)榧词鼓愕?Linux 僅做為個(gè)人桌上型電腦使用時(shí),你依舊可能會(huì)需要連線到遠(yuǎn)端的 Windows 的網(wǎng)芳的,那個(gè)時(shí)候就得要 samba 提供的用戶端軟體功能囉!因此你只要直接安裝系統(tǒng)上面提供的預(yù)設(shè) samba 版本即可。底下我們會(huì)先介紹 samba 伺服器,然後再介紹用戶端功能喔!
主機(jī)安裝時(shí)的規(guī)劃與中文磁區(qū)掛載現(xiàn)在您知道 Samba 伺服器的功能是用來作為檔案伺服器的,每個(gè)使用者都可以擁有家目錄, 並透過網(wǎng)芳的功能來連結(jié)到 Samba 伺服器中。這就有個(gè)問題啦,那就是你的使用者如果太多, 並且將他們的重要資料都放到這部 Samba 主機(jī)上頭的話,那肯定 /home 未來會(huì)有點(diǎn)不足??! 所以 /home 所在的磁碟或許可以使用大一點(diǎn)的硬碟,或者使用磁碟陣列,使用LVM 也是個(gè)不錯(cuò)的方案。 底下為簡(jiǎn)單的思考方向:在安裝 Linux 的時(shí)候,建議不需要安裝 X Window ;在規(guī)劃 Linux 時(shí),/home 最好獨(dú)立出一個(gè) partition ,而且硬碟空間最好能夠大一些;/home 獨(dú)立出來的 partition 可以單獨(dú)進(jìn)行 quota 的作業(yè),以規(guī)範(fàn)每個(gè)使用者能夠使用的最大硬碟容量;由於 SAMBA 可以做為印表機(jī)伺服器,所以建議印表機(jī)可以直接連接在 Linux 主機(jī)的列印埠 (LPT1, USB...);由於 SAMBA 一般來說都僅針對(duì)內(nèi)部 (LAN) 主機(jī)進(jìn)行開放,所以,可能的話 SAMBA 主機(jī)直接使用內(nèi)部保留 IP 來設(shè)定即可,當(dāng)然啦, SAMBA 是否使用 private IP 還得視您的整個(gè)網(wǎng)域的 IP 網(wǎng)段的特性來規(guī)劃。 以鳥哥研究室來說,因?yàn)閷?shí)驗(yàn)室所有電腦的 IP 都是 Public IP,那麼 SAMBA 如果使用 Private IP ,當(dāng)然大家都無法連接上啊! ^_^如果您的 SAMBA 主機(jī)使用 Public IP 時(shí),請(qǐng)?zhí)貏e留意規(guī)範(fàn)好防火牆的設(shè)定,盡量?jī)H讓 LAN 內(nèi)的電腦可以連線進(jìn)來即可,不要對(duì) Internet 開放喔!另外,如果你的 Samba 伺服器需要掛載含有中文的 partition 時(shí),譬如說你將原本 Windows XP 的 FAT32 檔案系統(tǒng)挪到 Linux 系統(tǒng)下,此時(shí)如果用一般模式來掛載該分割槽時(shí),一些中文檔名可能會(huì)無法被順利的列印出來。 這個(gè)時(shí)候你就得需要這樣做了:mount -t vfat -o iocharset=big5,codepage=950 /dev/hd[a-d][1-16] /mount/point其中 iocharset 指的是本機(jī)的語系編碼方式, codepage 則與遠(yuǎn)端軟體有關(guān)。因?yàn)槲覀兪窃诒緳C(jī)進(jìn)行掛載, 所以實(shí)際上使用 iocharset 這個(gè)參數(shù)即可啦!更多說明則請(qǐng)看下節(jié)的用戶端設(shè)定部分囉!
Samba 用戶端軟體功能現(xiàn)在你已經(jīng)架設(shè)好了 Samba 伺服器啦!有伺服器當(dāng)然要有用戶端來使用才是好的伺服器嘛!不然要這個(gè)伺服器幹嘛? 而我們假設(shè)區(qū)域網(wǎng)路內(nèi)有 Windows/Linux 系統(tǒng),這兩種系統(tǒng)都是透過 NetBIOS over TCP/IP 來連上 Samba 主機(jī)的, 在設(shè)定之前你必須要知道的有幾件事:在區(qū)網(wǎng)內(nèi)的主機(jī)最好具有相同的工作群組,且具有不同的主機(jī)名稱;Windows XP pro. 最多僅能允許十個(gè)用戶同時(shí)連接到網(wǎng)芳;你可以在網(wǎng)芳當(dāng)中看到的通常是相同群組的主機(jī);可以使用『搜尋』-->『電腦』-->『輸入 IP』來查到 Samba 主機(jī);Windows 的網(wǎng)芳預(yù)設(shè)僅有同一網(wǎng)域的主機(jī)才能登入!接下來咱們就分別依照 Windows XP 及 Linux 系統(tǒng)來做說明吧!
Windows 系統(tǒng)的使用在 Windows 上面的搜尋實(shí)在挺簡(jiǎn)單的,你有好幾種方法可以處理:打開『檔案總管』,『網(wǎng)路上的芳鄰』、『整個(gè)網(wǎng)路』、『Microsoft Windows Network』 就能看到屬於您群組的所有電腦主機(jī)了!『開始』、『搜尋』、『檔案或資料夾』、『電腦或人員』、『網(wǎng)路上的電腦』, 然後在出現(xiàn)的方框當(dāng)中填寫正確的 IP ,按下『搜尋』即可! 這個(gè)方法可以適用於不在同一個(gè)群組當(dāng)中的網(wǎng)路主機(jī)喔!舉例來說,如果想要連接到我們的 Samba 主機(jī)的話,而又不知到這部 Samba 主機(jī)的 NetBIOS name , 那利用搜尋的結(jié)果會(huì)有點(diǎn)類似如下的圖示:
圖九、Windows XP 用戶端搜尋示意圖上圖九中先在左側(cè)的地方輸入正確的 IP 後,按下搜尋,如果一切順利的話那麼右上方就會(huì)出現(xiàn)這部 Samba 主機(jī)的說明了。 雙擊一下該主機(jī)名稱,就會(huì)出現(xiàn)右下方的項(xiàng)目!瞧!那就是我們所設(shè)定的幾個(gè)基本項(xiàng)目的啦!真是好高興! 然後你就可以開始進(jìn)入相對(duì)應(yīng)的目錄進(jìn)行資料的存取了,就這麼簡(jiǎn)單。 如果是印表機(jī)的話,那麼你將滑鼠移動(dòng)到印表機(jī)的上方,按下右鍵後可以選擇『連線』的項(xiàng)目, 如下所示:
圖十、Windows XP 用戶端連線印表機(jī)示意圖如果一切順利的話,嘿嘿!你就可以在點(diǎn)選『開始』、『設(shè)定』、『印表機(jī)和傳真』後所出現(xiàn)的視窗看到這部印表機(jī)囉! 真是好棒吶! ^_^讓 Windows 系統(tǒng)的網(wǎng)芳支援不同網(wǎng)域的 IP 連線由於 Windows XP sp2 這個(gè)作業(yè)系統(tǒng)版本預(yù)設(shè)的防火牆僅開放相同網(wǎng)域的 IP 來源使用本機(jī)的網(wǎng)芳資料, 所以如果是不同的網(wǎng)域想要使用時(shí),預(yù)設(shè)是無法穿透 Windows 防火牆的。此時(shí)你可以修改一下防火牆的設(shè)定啊! 請(qǐng)叫出控制臺(tái),然後點(diǎn)選『Windows 防火牆』就會(huì)出現(xiàn)如下的圖示了:
圖十一、Windows XP 伺服器防火牆示意圖按照上圖的說明,依序點(diǎn)選『例外』、『檔案及印表機(jī)共用』、『編輯』後, 就會(huì)出現(xiàn)該防火牆?rùn)C(jī)制所管理的埠口以及可連線的網(wǎng)域,如下圖所示:
圖十二、Windows XP 伺服器防火牆示意圖你可以將四組埠口通通改變成你所需要的 IP 來源,或者是將他設(shè)定為任何電腦都能連線。 不過,鳥哥不建議喔!可以參考底下的作法:
圖十三、Windows XP 伺服器防火牆示意圖選擇自訂的方式來設(shè)定能夠使用你 Windows 網(wǎng)芳資料的來源 IP 或網(wǎng)段即可,然後確定之後即可處理吶! 這樣一來,及時(shí)我們的 Linux 不與 Windows 同在一個(gè)網(wǎng)域中,也能夠登入 Windows 存取網(wǎng)芳資料哩。透過 port 445 的特殊登入方式如果你知道 Samba 主機(jī)有分享出 port 445 ,並且他已經(jīng)分享了某個(gè)目錄時(shí),舉例來說, 我們的 192.168.1.254 有分享出 public 這個(gè)分享資源名稱時(shí),那麼這個(gè)目錄的完整寫法為:『 \\192.168.1.254\public 』,我們可以透過『開始』、『執(zhí)行』來處理這個(gè)玩意兒! 如下所示:
圖十四、Windows XP 透過 port 445 連線如果可以登入的話就會(huì)順利登入,否則就會(huì)彈出一個(gè)要你輸入帳號(hào)密碼的視窗,輸入正確的資料即可! 呼呼!真過癮~除此之外,我們還可以登入別人 Windows 主機(jī)的 C 或 D 槽喔!寫法則變成這樣:\\192.168.1.21\c$ 所以說,怕了吧!俺還真害怕~所以啊,Samba 沒必要時(shí),那個(gè) port 445 應(yīng)該是可以關(guān)閉的吧!
Linux 系統(tǒng)的使用咱們的 Samba 有提供 Linux 網(wǎng)芳的用戶端功能喔!也就是說 Linux 可以掛載 Samba 主機(jī)也能掛載 Windows 提供的網(wǎng)芳啦! 主要是透過 smbclient 來觀察,再以 smbmount 或 mount 來掛載磁區(qū)哩。先來介紹一下 smbclient 這個(gè)指令吧:1. 關(guān)於查詢的功能 [root@linux ~]# smbclient -L //[IP|hostname] [-U username] [root@linux ~]# smbclient -L //127.0.0.1 -U dmtsai Password: Domain=[VBIRDSERVER] OS=[Unix] Server=[Samba 3.0.10-1.4E.9] ....分享的資源輸出省略.... Domain=[VBIRDSERVER] OS=[Unix] Server=[Samba 3.0.10-1.4E.9] Server Comment --------- ------- Workgroup Master --------- ------- VBIRDGRP VBIRD_OP_2 VBIRDHOUSE VBIRDSERVER # 從這裡可以知道在目前網(wǎng)域當(dāng)中有多少個(gè)工作群組與主要的名稱解析主機(jī)除了這個(gè)先前用過的查詢功能之外,我們可以這樣簡(jiǎn)易使用網(wǎng)芳的:2. 利用類似 FTP 的方式登入遠(yuǎn)端主機(jī) [root@linux ~]# smbclient '//[IP|hostname]/資源名稱' [-U username] # 意思是使用某個(gè)帳號(hào)來直接登入某部主機(jī)的某個(gè)分享資源,舉例如下: [root@linux ~]# smbclient '//127.0.0.1/dmtsai' -U dmtsai Password: Domain=[VBIRDSERVER] OS=[Unix] Server=[Samba 3.0.10-1.4E.9] smb: \> dir # 在 smb 底下其實(shí)就是在 //127.0.0.1/dmtsai 這個(gè)目錄底下啦!所以, # 我們可以使用 dir, get, put 等常用的 ftp 指令來進(jìn)行資料傳輸了! ? :列出所有可以用的指令,常用! cd :變換到遠(yuǎn)端主機(jī)的目錄 del :殺掉某個(gè)檔案 lcd :變換本機(jī)端的目錄 ls :察看目前所在目錄的檔案 dir :與 ls 相同 get :下載單一檔案 mget:下載大量檔案 mput:上傳大量檔案 put :上傳單一檔案 rm :刪除檔案 # 其他的指令用法請(qǐng)參考 man smbclient 喔!事實(shí)上,使用 smbclient 一點(diǎn)也不方便,因?yàn)槭褂玫氖?ftp 的功能語法,有點(diǎn)怪怪的~能不能像 Windows 那樣,可以直接連線網(wǎng)路磁碟機(jī)啊?這當(dāng)然沒有問題!不過就需要藉由 smbmount 來協(xié)助了!smbmount 可以將遠(yuǎn)端主機(jī)分享出來的目錄整個(gè)給他 mount 到本機(jī)的 mount point (某個(gè)目錄),如此一來, 遠(yuǎn)端主機(jī)的目錄就好像在我們本機(jī)的一個(gè) partition 一樣喔!可以直接執(zhí)行複製、編輯等動(dòng)作!這可就好用的多了! 底下我們來談一談怎麼用這個(gè) smbmount 吧![root@linux ~]# smbmount //IP/分享資源 /掛載點(diǎn) [-o options] 參數(shù): -o 後面接的參數(shù) (options) 常用的有底下這些: username=你的登入帳號(hào):例如 username=dmtsai password=你的登入密碼:需要與上面 username 相對(duì)應(yīng)??! iocharset=本機(jī)的語系編碼方式,如 big5 或 utf8 等等; codepage=遠(yuǎn)端主機(jī)的語系編碼方式,例如繁體中文為cp950 範(fàn)例一:以 dmtsai 的身份將其家目錄掛載至 /mnt/samba 中 [root@linux ~]# smbmount //127.0.0.1/dmtsai /mnt/samba > -o username=dmtsai,password=pw_test,codepage=cp950 [root@linux ~]# df //127.0.0.1/dmtsai 20161024 3088896 17072128 16% /mnt/samba經(jīng)由 smbmount 的動(dòng)作,我們就可以輕易的將遠(yuǎn)端分享出來的咚咚給他掛載到自己 Linux 本機(jī)上面!好用的很~事實(shí)上,原本 mount 這個(gè)指令如果有支援 smbfs 的話, 那也就可以直接掛載網(wǎng)路上的芳鄰分享出來的目錄了!例如上面的例子當(dāng)中,我們也可以這樣下達(dá)指令:mount -t smbfs //127.0.0.1/dmtsai /mnt/samba -o username=dmtsai,password=pw_test,codepage=cp950,iocharset=big5更詳細(xì)的 mount 用法,請(qǐng) man mount 或者看考『鳥哥的 Linux 私房菜 -- 基礎(chǔ)學(xué)習(xí)篇』的內(nèi)容喔! ^_^查詢 NetBIOS name 與 IP 及其他相關(guān)資訊:現(xiàn)在我們可以透過一些 NetBIOS 相關(guān)的功能來取得 NetBIOS name ,不過,如果你還想要知道這個(gè) NetBIOS name 的其他資訊時(shí), 例如 IP、分享的資源等等,那可以使用 nmblookup 這個(gè)指令來搞定即可。他是這麼使用的:[root@linux ~]# nmblookup [-S] [-U wins IP] [-A IP] name 參數(shù): -S :除了查詢 name 的 IP 之外,亦會(huì)找出該主機(jī)的分享資源與 MAC 等; -U :後面一般可接 Windows 的主要名稱管理伺服器的 IP ,可與 -R 互用; -R :與 -U 互用,以 Wins 伺服器來查詢某個(gè) Netbios name; -A :相對(duì)於其他的參數(shù), -A 後面可接 IP ,藉 IP 來找出相對(duì)的 NetBIOS 資料; 範(fàn)例一:藉由本機(jī)找出 vbirdserver 這部主機(jī)的 IP 位址 [root@linux ~]# nmblookup -U localhost vbirdserver querying vbirdserver on 127.0.0.1 192.168.1.254 vbirdserver<00> 範(fàn)例二:找出 vbirdserver 的 MAC 與 IP 等資訊: [root@linux ~]# nmblookup -S vbirdserver querying vbirdserver on 192.168.1.255 192.168.1.254 vbirdserver<00> Looking up status of 192.168.1.254 VBIRDSERVER <00> - B <ACTIVE> ..__MSBROWSE__. <01> - <GROUP> B <ACTIVE> VBIRDHOUSE <1e> - <GROUP> B <ACTIVE> MAC Address = 00-00-00-00-00-00 <==因?yàn)槭潜緳C(jī)資料,所以 MAC 會(huì)成為這樣利用 smbstatus 觀察 SAMBA 的狀態(tài)如果想要查閱目前 SAMBA 有多人人來連線且哪些資源分享已經(jīng)被使用的話,可以這樣看:[root@linux ~]# smbstatus [-pS] [-u username] 參數(shù): -p :列出已經(jīng)使用 SAMBA 連線的程序 PID ; -S :列出已經(jīng)被使用的資源分享狀態(tài); -u :只列出某個(gè)使用者相關(guān)的分享資料 範(fàn)例一:列出目前主機(jī)完整的 Samba 狀態(tài) [root@linux ~]# smbstatus Samba version 3.0.10-1.4E.9 PID Username Group Machine ------------------------------------------------------------------- 4973 dmtsai dmtsai 127.0.0.1 (127.0.0.1) # 上面列出的是與 PID 有關(guān)的資訊,可用 smbstatus -p 單純列出 Service pid machine Connected at ------------------------------------------------------- dmtsai 4973 127.0.0.1 Thu Dec 28 10:58:36 2006 # 上面列出的則是分享資源,那個(gè) Service 就是分享的目錄。你可以透過這個(gè)小程式來瞭解到目前有多少人使用你的 SAMBA 的啦!
伺服器進(jìn)階管理除了前面提到的幾個(gè)資訊之外,在這裡我們也來談?wù)勅绾巫屇愕?Samba 作更多的事情! 包括將 Windows 使用者的家目錄放到 Samba 上頭呢!^_^
讓 Samba 管理網(wǎng)域使用者:PDC前面介紹的內(nèi)容都是屬於 Peer/Peer 的連線狀況,也就是 Samba 伺服器與 Windows 用戶端其實(shí)是平等地位的啦! 所以 Windows 用戶端需要知道 Samba 伺服器內(nèi)的帳號(hào)密碼資料後,才能夠順利的使用 Samba 的資源。 不過,這樣的方式在較大型一些的區(qū)域網(wǎng)路環(huán)境可能就會(huì)有點(diǎn)困擾,例如學(xué)校的環(huán)境。舉例來說,如果你有一個(gè)電腦教室裡面有 50 部 Windows XP Pro. 的個(gè)人電腦,由於電腦教室大家都會(huì)使用, 因此裡面這 50 部個(gè)人電腦有使用還原精靈,也就是每次電腦重新開機(jī)後整個(gè)作業(yè)系統(tǒng)就會(huì)還原成原本的樣子。 但我們知道使用者總是需要有個(gè)人家目錄吧?他們總不希望這次的工作在重新開機(jī)後就失去了~ 所以我們可以利用一部主機(jī)來讓他們儲(chǔ)存資料??!那就是 Primary Domain Controller (PDC) 主機(jī)囉。其實(shí) Samba PDC 的作用很簡(jiǎn)單,就是讓 Samba PDC 成為整個(gè)區(qū)域網(wǎng)路的領(lǐng)域管理員 (domain controller), 然後讓 Windows 主機(jī)加入這個(gè)領(lǐng)域,未來使用者利用 Windows 登入時(shí),Windows 會(huì)前往 PDC 伺服器取得使用者的帳號(hào)密碼, 同時(shí) PDC 還會(huì)傳送使用者的重要資料到那部 Windows 個(gè)人電腦上,而 Windows 電腦上的使用者登出時(shí), 該使用者修改過的資料也會(huì)回傳給 PDC ,如此一來不管這個(gè)使用者在哪一部個(gè)人電腦上面登入, 他都能夠取得正確的個(gè)人資料!很棒的作用吧!PDC 是個(gè)很複雜的環(huán)境,他可以達(dá)到的功能相當(dāng)?shù)亩?,而且密碼的驗(yàn)證也不必在同一部 PDC 主機(jī)上面, 不過這裡我們不談那麼複雜的東西,只是做一個(gè)簡(jiǎn)單的練習(xí),因此底下的這部 PDC 使用自己的密碼來進(jìn)行驗(yàn)證, 並且也管理自己所分享出去的資源囉!整個(gè)基本的設(shè)定流程應(yīng)該是這樣的:設(shè)定好 PDC 主機(jī)的 TCP/IP 與 Windows 主機(jī)的網(wǎng)路,這個(gè)你應(yīng)該已知如何處理了;設(shè)定 PDC 的角色定位,因?yàn)?PDC 管理自己的密碼,所以 security = userPDC 最好擁有整個(gè)網(wǎng)域的名稱解析權(quán)力,亦即成為主要的名稱解析器;需有 netlogon 資源分享,提供 windows 2000/XP pro. 用戶端的登入之用;由於 Windows 需讀入個(gè)人設(shè)定檔,預(yù)設(shè)目錄為 profile,Linux 系統(tǒng)需預(yù)先設(shè)定此目錄;增加 PDC 上的使用者帳號(hào)以及機(jī)器代碼 (machine account) 等等在 Windows 2000/XP pro. 個(gè)人電腦上設(shè)定成為 PDC 的用戶端。底下咱們就來依序處理處理先!0. 設(shè)定 lmhosts 或 /etc/hosts 對(duì)應(yīng) Netbios 與 IP由於我們的 Samba 即將成為整個(gè)網(wǎng)域的名稱解析者,因此你最好將整個(gè)網(wǎng)域的 NetBIOS name 與 IP 的對(duì)應(yīng)寫入此這個(gè)檔案當(dāng)中。當(dāng)然啦,如果你的網(wǎng)域 IP 的取得為 DHCP ,那這個(gè)檔案就不要寫了吧! 以我們這個(gè)案例為例,這個(gè)檔案的內(nèi)容應(yīng)該是:[root@linux ~]# vi /etc/samba/lmhosts 127.0.0.1 localhost 192.168.1.254 vbirdserver 192.168.1.21 vbirdcpu2 192.168.1.11 vbirdcpu11. 設(shè)定 smb.conf 成為具有 PDC 的能力假設(shè)我們要讓 PDC 用戶端登入時(shí)可以取得他自己的家目錄,那麼需要這樣處理:[root@linux ~]# vi /etc/samba/smb.conf [global] workgroup = vbirdhouse netbios name = vbirdserver server string = This is vbird's samba server unix charset = utf8 display charset = utf8 dos charset = cp950 log file = /var/log/samba/%m.log max log size = 50 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 dns proxy = no template shell = /bin/false winbind use default domain = no security = user encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd printcap name = cups load printers = yes printing = cups # 與 PDC 有關(guān)的一些設(shè)定值: # 底下幾個(gè)設(shè)定值處理成為本區(qū)域網(wǎng)路內(nèi)的主要名稱解析器 preferred master = yes domain master = yes local master = yes wins support = yes # 作業(yè)系統(tǒng) (OS) 等級(jí)越高才能成為主網(wǎng)域的控制者,一般 NT 為 32, # Windows 2000 為 64 ,所以這裡我們?cè)O(shè)定高一點(diǎn),但不可超過 255 os level = 200 # 底下則是設(shè)定能否利用 PDC 登入,且登入需要進(jìn)行哪些動(dòng)作: domain logons = yes logon drive = K: <==登入後家目錄掛載成 Windows 哪一槽 logon script = startup.bat <==每個(gè)使用者登入後會(huì)自動(dòng)執(zhí)行的程式 time server = yes <==自動(dòng)調(diào)整 Windows 時(shí)間與 Samba 同步 admin users = root <==預(yù)設(shè)的管理員帳號(hào)!預(yù)設(shè)為 root # 因?yàn)轼B哥不喜歡在 Samba 當(dāng)中使用 root ,所以這裡你也可以指定成其他帳號(hào)。 # 這個(gè)在指定登入者能夠進(jìn)行的工作,裡面主要是具有許多執(zhí)行程式: [netlogon] <==與前面的 logon script 有關(guān),該程式放置在這裡 comment = Network Logon Service path = /home/samba/netlogon <==你要自己主動(dòng)建立此目錄 writable = no write list = root follow symlinks = yes guest ok = yes [homes] comment = Home directories browseable = no writable = yes valid users = %S create mode = 0664 directory mode = 0775 [temp] comment = Temporary file space path = /tmp read only = no public = yes [root@linux ~]# testparm [root@linux ~]# /etc/init.d/smb restart上面的設(shè)定有幾個(gè)地方比較有趣一點(diǎn):time server:要使 Samba 與 Windows 主機(jī)的時(shí)間同步,使用這個(gè)項(xiàng)目;logon script:當(dāng)使用者以 Windows 用戶端登入後,Samba 可以提供一支批次檔, 讓使用者去設(shè)定好他們自己的目錄配置。整個(gè)配置的內(nèi)容記錄在 startup.bat 當(dāng)中。 你要注意的是,這個(gè) startup.bat 檔名可以隨意更改,不過他必須要放置到 [netlogon] 所指定的目錄內(nèi);logon drive:那麼這個(gè)家目錄要掛載到那個(gè)分割槽? 在 Windows 底下大多以 C, D, E... 做為磁碟的代號(hào),你這裡可以指定一下家目錄要放置成為那個(gè)磁碟代號(hào);admin users:指定這個(gè) Samba PDC 的管理員身份。[netlogon]:指定利用網(wǎng)路登入時(shí)首先去查詢的目錄資源。2. 建立所需要的目錄與檔案先來建立 [netlogon] 內(nèi)所需要的資料好了,那就是一個(gè)目錄:[root@linux ~]# mkdir -p /home/samba/netlogon接下來我們還得要建立允許使用者執(zhí)行的檔案,就是那個(gè) startup.bat 才行! 注意一下,我們這裡假設(shè)使用者家目錄為 K 槽,而 Samba 額外分享的 temp 則為 L 槽, 那你可以這樣做:[root@linux ~]# vi /home/samba/netlogon/startup.bat net time \\vbirdserver /set /yes net use K: /home net use L: \\vbirdserver\temp # 這個(gè)檔案的格式為:net use [device:] [directory] # 再將該檔案轉(zhuǎn)成 DOS 的斷行格式才行!因?yàn)槭翘峁┙o Windows 系統(tǒng)嘛! [root@linux ~]# unix2dos /home/samba/netlogon/startup.bat [root@linux ~]# cat -A /home/samba/netlogon/startup.bat net time \\vbirdserver /set /yes^M$ net use K: /home^M$ net use L: \\vbirdserver\temp^M$ # 瞧見嗎?會(huì)多出個(gè)奇怪的 ^M 符號(hào),那就是 Windows 斷行字元。3. 建立使用者在 Samba 裡面建立使用者就是利用 smbpasswd 這個(gè)指令而已,我們已經(jīng)建立過,所以這裡不再說明。 但是由於我們需要 root 這個(gè)帳號(hào)來管理 PDC 與 Windows 用戶端之間連線建立時(shí)所需要的權(quán)限, 所以你必須要建立起這個(gè)使用者才行。建立的方法很簡(jiǎn)單,直接這樣做吧:[root@linux ~]# smbpasswd -a root另外,我們都知道 Windows XP pro. 的使用者設(shè)定檔會(huì)被放置到『 C:\Documents and Settings\使用者帳號(hào) 』目錄中, 在該目錄底下會(huì)有類似桌面、我的最愛、應(yīng)用程式設(shè)定、啟動(dòng)、我的文件夾啊等等的, 這些東西會(huì)放置到 Samba PDC 的哪裡去備份啊?其實(shí)是放置到:/home/使用者帳號(hào)/profile/ 目錄下的,該目錄預(yù)設(shè)會(huì)被主動(dòng)的建立起來,不過偶而會(huì)有一些權(quán)限錯(cuò)誤的問題~傷腦筋~ 所以你可以預(yù)先處理該目錄,以 chmod 或 chown 來改變成該使用者可以存取的權(quán)限。 另外,為了避免困擾,對(duì)於新增的使用者而言,你可以這樣做:[root@linux ~]# mkdir /etc/skel/profile那以後新增的使用者都有可以存放來自 Windows 的特殊設(shè)定檔目錄喔!比較好管理囉~ 當(dāng)然啦,使用 useradd 新增使用者後,記得也要使用 smbpasswd -a username 來讓該使用者可以使用 Samba 喔!4. 建立機(jī)器碼帳號(hào)由於 PDC 會(huì)針對(duì) Windows 用戶端的主機(jī)名稱 (NetBIOS name) 進(jìn)行主機(jī)帳號(hào)檢查, 所以我們也要為用戶端的主機(jī)名稱進(jìn)行帳號(hào)的設(shè)定。咦!啥是主機(jī)帳號(hào)? 一般使用者帳號(hào)是英文或數(shù)字,主機(jī)帳號(hào)則在該帳號(hào)最後面加上一個(gè)錢字號(hào)『$』即可! 舉例來說, vbirdcpu2 這部主機(jī)可設(shè)定的帳號(hào)名稱為 vbirdcpu2$。而我們知道要使用 smbpasswd 增加的使用者必須要在 /etc/passwd 當(dāng)中, 因此要建立這個(gè)帳號(hào)你就得要這樣做:[root@linux ~]# useradd -M -s /sbin/nologin -d /dev/null vbirdcpu2$ [root@linux ~]# useradd -M -s /sbin/nologin -d /dev/null vbirdcpu1$會(huì)增加 -M -s -d 等參數(shù)的原因是因?yàn)椴幌胍屵@個(gè)帳號(hào)具有可以登入的權(quán)限, 因此將這個(gè)主機(jī)帳號(hào)設(shè)定的比較怪一點(diǎn)~ ^_^~接下來讓 Samba 知道這個(gè)帳號(hào)是主機(jī)帳號(hào), 所以你應(yīng)該要這樣做:[root@linux ~]# smbpasswd -a -m vbirdcpu1$ [root@linux ~]# smbpasswd -a -m vbirdcpu2$這樣便加入主機(jī)帳號(hào)囉!而我們的 Samba PDC 也就可以透過『主機(jī)帳號(hào)』來判斷 Windows 用戶端能否連上來, 若連接上 PDC 與 Windows 用戶端後,接下來一般使用者帳號(hào)就可以在 windows 用戶端登入了!5. Windows XP Pro. 用戶端的連線與登入請(qǐng)注意,底下的方法僅是用於 Windows 2000, Windows XP 專業(yè)版 (Pro.),一般的 Windows XP home 版本是不支援的! 如果你用戶端的主機(jī)是隨機(jī)版的 Windows XP ,通常是 Windows XP home ,那底下的方法可能就無法適用囉! 要連接上 Samba PDC 的過程也是挺簡(jiǎn)單的,你可以這樣做:確認(rèn) windows 用戶端的網(wǎng)域與主機(jī)名稱首先我們必須要確認(rèn) Windows 用戶端的工作群組與主機(jī)名稱跟咱們的 Samba PDC 相同, 確認(rèn)的方式在區(qū)域網(wǎng)路裡面已經(jīng)提過了,這裡在強(qiáng)調(diào)一次。將滑鼠移動(dòng)到『我的電腦』上面,按下右鍵, 選擇『內(nèi)容』,然後點(diǎn)選『電腦名稱』,會(huì)出現(xiàn)如下圖示:
重點(diǎn)回顧Samba 名稱的由來是因?yàn)樾璋瑳]有意義的 SMB server 之故;SAMBA 可以讓 Linux 與 Windows 直接進(jìn)行檔案系統(tǒng)的使用;SAMBA 是由 Andrew Tridgell 在 1991 年的時(shí)候利用不同平臺(tái)所發(fā)展出來的;SAMBA 主要架構(gòu)在 NetBIOS 上發(fā)展的,且以 NetBIOS over TCP/IP 克服 NetBIOS 無法跨路由的問題;