Linux混合環(huán)境中的文件共享與打印服務
本文旨在幫助系統(tǒng)管理員學習、了解混合環(huán)境中的 SMB/CIFS、文件共享和打印服務的相關概念。
概述
在本文中,學習以下概念:
●Server Message Block (SMB)/Common Internet File System (CIFS)
●文件共享
●打印服務
先決條件
為了最有效地利用本系列中的文章,您應該具有高級 Linux 知識,并需要準備一個 Linux 系統(tǒng),用于練習本文介紹的命令。另外,您應該能夠訪問一個用于測試文件和打印訪問的 Windows 環(huán)境。
文件和打印共享
文件和打印共享的目標是支持計算機使用其他計算機上的磁盤和打印機,就好像它們是本地連接的一樣。這個功能允許更多人使用相同的昂貴資源并從任意位置訪問那些資源。作為中央資源,文件和打印機可能被更嚴格地控制和審計,如果需要的話。
一個文件和打印共享解決方案的理想屬性包括:
●此解決方案應該是網絡獨立的 — 即,獨立于它在其上運行的網絡類型(以太網、令牌網)。
●應用程序應該不需要知道它們訪問的是本地磁盤上的文件還是遠程磁盤上的文件,也不需要知道它們正在打印到本地打印機還是遠程打印機。
●應該有一些方法來協調對同一個資源的多個同步請求,比如兩個人想要同時打印到同一臺打印機。
●此解決方案應該實現某種類型的身份驗證系統(tǒng)來理解誰正在請求一個資源,并實現一個授權系統(tǒng)來決定是否向其授予訪問權。
有幾種方法可以共享文件和打印機。許多 UNIX 工具,比如 Berkeley 打印系統(tǒng),從上世紀 80 年代初期起一直具有網絡意識。Sun Microsystems 于 1984 年引入了 Network File System (NFS),NFS 允許 UNIX 計算機通過網絡裝載文件系統(tǒng)。IBM 和 Microsoft 使用 SMB 協議來執(zhí)行許多網絡共享任務,包括共享文件和打印機。文件和打印共享可以通過專用服務器、單獨的工作站或者二者的結合來執(zhí)行。
文件共享
即使是從工作站共享文件,擁有用于共享的磁盤資源的設備也稱為服務器,訪問磁盤的設備稱為客戶端。服務器用于導出文件系統(tǒng)(UNIX 術語),或者共享磁盤和目錄(Windows 術語)。然后,客戶端將文件系統(tǒng)裝載為一個本地磁盤或連接,以便共享。
共享關系的性質可以是臨時的,也可以是長期的??蛻舳丝梢赃B接到服務器,獲取幾個文件,然后斷開連接;客戶端也可以一直保持連接,直到重新啟動。客戶端可以將遠程文件系統(tǒng)視為一個本地磁盤或本地文件系統(tǒng)的一部分;它也可以選擇在應用程序層訪問資源,就像 File Transfer Protocol (FTP) 客戶端所做的那樣。
文件共享的另一個相關特性是概念瀏覽(browsing)。瀏覽允許客戶端找到網絡上的服務器 — 通常從一個動態(tài)填充的列表。
打印共享
打印機可能沒有直接連接到服務器,因此可能出現多種級別的共享。當多個客戶端都配置同一臺打印機時,它們通常通過一個名為后臺處理程序(spooler)的服務來完成配置。后臺處理程序的工作是管理打印作業(yè)列表,也稱為打印隊列。當多人提交打印作業(yè)時,后臺處理程序將作業(yè)存儲到磁盤。一旦打印機閑置,后臺處理程序就可以將作業(yè)發(fā)送到打印機,而不必擔心其他打印作業(yè)爭用。
即便可以將多臺打印機連接到網絡,也通常使用一個服務器作為后臺處理程序,該服務器然后通過網絡打印到打印機。這樣做的原因有三點:第一,與打印機相比,服務器可能擁有一個更大、更健壯的緩存區(qū);第二,服務器能夠進行訪問控制;第三,服務器能夠分發(fā)打印機驅動程序,如果需要的話。#p#
SMB 和 CIFS
SMB 是一個協議,而不是一個實現。這個協議已經在許多不同的操作系統(tǒng)中實現 — 從 Windows 到 UNIX 甚至到大型機環(huán)境。
歷史
SMB 起源于 IBM,但 Microsoft 在上世紀 90 年代初開始聯網其產品時將其實現。那時,SMB 需要一個單獨的產品,比如 LAN Manager 或 Windows for Workgroups,但文件共享在 Microsoft Windows NT 中最終成為常規(guī)操作系統(tǒng)的一部分。
為了在其操作系統(tǒng)中引入一些新特性,Microsoft 繼續(xù)改進 SMB,最終誕生了一個名為 CIFS 版本,CIFS 然后被提交到 Internet Engineering Task Force 進行標準化。
大約與此同時,澳大利亞的一位博士生 Andrew Tridgell 開始反向工程 SMB 的一個大型機實現,并開始開發(fā)一個最終成為開源實現的 SMB 實現和一些稱為 Samba 的 Microsoft 協議。這個項目開始作為一種文件移動方法,現在已經發(fā)展為一個完整的客戶端和服務器實現,包括充當一個 Windows 域控制器和不久以后將充當一個 Active Directory 服務器的能力。
SMB 和 CIFS 對比
從技術上講,CIFS 是一種 SMB 方言。SMB 協議多年來一直在修改,因此,客戶端和服務器有必要協商使用哪種協議方言。CIFS 引用 NT LAN Manager (NTLM) 系列擴展。奇怪的是,這個協議并不使用字符串 CIFS 來標識自身,而是使用 NT LM 0.12。
出于實際應用目的,SMB 和 CIFS 這兩個術語可以互換,這是因為現在使用的是 SMB 的 CIFS 方言。CIFS 偶爾會被發(fā)音為“siffs”,而不是拼寫為 SMB。
SMB 協議概述
作為一個客戶端-服務器協議,客戶端與服務器進行聯系。SMB 開始需要一個稱為 Network Basic Input/Output System (NetBIOS) 的應用程序編程接口(API)層。這個 API 提供 SMB 使用的幾個服務,以及幾個名稱解析和網絡瀏覽相關服務。與 NetBIOS 聯用時,SMB 可以在下面的網絡上運行:
●Raw Ethernet,這時,SMB 使用 NetBIOS Frames(通常稱為 NetBEUI)
●Novell Internetwork Packet Exchange (IPX)/Sequenced Packet Exchange(SPX),這時,SMB 使用 NetBIOS over IPX/SPX (NBX)
●TCP/IP,這時 SMB 使用 NetBIOS over TCP/IP (NBT)
NetBIOS 向 Microsoft 網絡提供三個關鍵服務:
●名稱服務,以發(fā)現網絡上的主機
●會話服務,用于客戶端和服務器之間的可靠通信和傳輸
●數據報分布服務,用于小消息和網絡廣播
因此,SMB 主要利用會話服務,但也要依賴其他兩種服務的支持,比如使用名稱服務來查找服務器地址。
最終,TCP/IP 的支配地位和 Microsoft 轉為依賴 Domain Name System (DNS) 進行名稱解析導致 SMB 以一種稱為直接托管(direct hosting)的方式直接在 TCP/IP 之上運行。盡管 NBT 在 TCP 和 User Datagram Protocol (UDP) 端口 137-139 上運行,直接托管使用 TCP 和 UDP 端口 445。
OSI 堆棧中的 SMB
圖 1 展示了 Open Systems Interconnection (OSI) 模型,該模型用于解釋網絡協議之間的交互。OSI 描述使應用程序通過網絡工作所需的特性并將那些特性分解到一系列層中。每一層都使用下面的層提供的服務,并向上面的層提供服務。
圖 1. OSI 模型
層 1 和層 2 分別是物理層和數據鏈接層,通過以太網實現。這兩個層從一個網絡跳到另一個網絡,收集小型信息片段。TCP 和 IP 占據下面兩層,分別是傳輸和網絡層。網絡層負責端到端連通性,而傳輸層允許從小型消息構建大型消息,并允許一個服務器上存在多個服務。每一層都使用它下面的層,因此網絡層不必擔心網絡上的每次跳轉如何使用物理和數據鏈接等問題。
在使用 NetBIOS 的網絡上,會話層 被使用。會話層提供此前描述的會話服務。SMB 在應用程序層(這里沒有使用呈現層)操作,這意味著它能利用下面的層提供的所有特性。
在不使用 NetBIOS 的網絡上,會話層將被簡單地省略。TCP 已經有能力處理大多數會話服務,而名稱服務則由 DNS 處理。#p#
Uniform Naming Convention
在 Internet 上,您已經熟悉了統(tǒng)一資源定位符(URI),比如 http://ibm.com/developerworks。URI 標識特定文檔或其他內容所處的位置。在上面的示例 URI 中,http 指的是主題 — 在本例中,文檔將使用 HTTP 檢索。請求內容的主機名為ibm.com,/developerworks 指那個主機上被請求的資源。
類似地,Uniform Naming Convention (UNC) 路徑標識 Windows 網絡資源。UNC 路徑看起來類似于\\shorty\documents\public\photo.jpg。UNC 路徑從兩個反斜杠(\\)開始,然后依次是服務器名稱,又一個反斜杠,共享文件夾名稱,以及一個針對共享文件夾的相對路徑,該路徑標識資源路徑。
UNC 與 URI 有幾點區(qū)別:
●不必使用主題,而 SMB 使用主題。
●使用反斜杠而不是正斜杠(/);盡管有時也可以使用正斜杠。
●共享文件夾看起來就像資源名稱的一部分,但引用的是服務器上的文件共享的名稱,它不必存在于服務器的文件系統(tǒng)上。
Samba
Samba 宣稱自己為“Linux 和 UNIX 程序的標準 Windows 互操作性套件”。盡管 Linux 和 UNIX 風格滲透到裝載 SMB 文件共享的其他方法中,但更貼近 Samba 的功能的說法是,Samba 既是客戶端又是服務器,或者更進一步,Samba 是進入 Windows 網絡的一個集成點。
Samba 包含幾個在后臺運行并提供服務的守護進程和幾個用于與 Windows 或 Samba 服務交互的命令行工具。本文章系列將詳細討論這些守護進程和工具,但其中一些需要特別注意的二進制文件是:
●smbd。 這個守護進程充當 SMB 文件和打印服務器。
●nmbd。 這個守護進程提供 NetBIOS 命名服務。
●mount.cifs。 這個工具將一個遠程 SMB 文件系統(tǒng)裝載到本地 UNIX 文件系統(tǒng)上,很像一個本地磁盤或 NFS 共享。
●smblient。 這個工具提供對 SMB 資源的命令行訪問,很像一個 FTP 客戶端。它還能列示遠程服務器上的共享并瀏覽網絡。
●smb.conf。 這不是一個工具,而是所有工具的配置文件,因此值得在二進制文件上下文中指出。
與其他開源軟件一樣,可以從源代碼編譯 Samba 或將其下載為您的發(fā)行版的一部分。它通過系統(tǒng)初始化腳本和配置文件管理。
原文鏈接:http://www.ibm.com/developerworks/cn/linux/l-lpic3-310-1/index.html?ca=drs-
【編輯推薦】