Samba系統簡介
本文將介紹Samba系統的一些初始安裝配置,並且可以從本文中學習到如何測試從Windows到Linux的連線以及測試從Linux到Windows的連線。除非你從上個世紀的80年代末突然消失在時空隧道中,直到最近才出現在這個世界上,否則,你都應該知道這種現實--如今Linux已經將其自己作為微軟桌面系統的競爭者並且將其自己作為許多大型組織的
伺服器系統的替代者。首先,Linux系統通過使用Samba系統來允許在Linux下訪問Windows的檔案和印表機,它希望通過使用這種包含Windows的客戶端和伺服器的方式來幫助它取代微軟。在
微軟自己的手冊中曾經就有這么一頁,它之所以包含了 Novell,就是要在後來取而代之。
什麼是Samba?
Samba在市場上並不是一個新面孔。它最初出現在大家面前的時間是1992年。Samba系統通過利用越來越多的
開放原始碼軟體,獲得了豐富多彩的性能,並且變得越來越穩定。隨著Samba系統的不斷進化,對於那些正在考慮將其檔案和列印解決方案遷移到Linux的系統管理員來說,如今它已經成為這些管理員的一個真正的可選項。
另外,在Linux系統上構建存儲解決方案也是一種非常便宜的方法。首先,在機箱中安裝一個支持IDE RAID 卡,安裝Linux,啟動Samba,然後你就可以一個在自己的網路上安排大量存儲的
存儲空間,這是一種成本非常低的實現方法。對於那些移動專家的筆記本電腦的備份以及需要進行長期歸檔工作的企業來說,這種解決方案是非常理想的。
SMB協定
在安裝Samba系統之前,很有必要了解一下Samba是如何工作的。Samba之所以能夠工作,是因為它模仿的是Windows
核心的檔案和列印共享協定,該協定稱之為SMB 協定(Server Message Block )。SMB在Windows出現之前就已經存在了。該協定可以追溯到上個世紀的80年代,它是由
英特爾、
微軟、IBM、施樂以及3com等公司聯合提出的。雖然在過去的20年中,該協定得到了擴展,但是該協定的基本理論仍然是相同的。
微軟已經將SMB改名為公共網際網路檔案系統(CIFS,Common Internet File System )。這在一定程度上是由於它想與最初的基於NetBIOS的SMB保持一定的距離。最初,NetBIOS是一個偉大的工具,但是漸漸地顯示出該工具無法處理在內部網路中連線到計算機上的全部計算機的個數,或者在網際網路上無法顯示連線到當前計算機上的計算機的個數。
Samba也執行了SMB (或者叫做CIFS,如果你願意的話)的一個版本,這個版本在很大程度上與大多數的Windows版本兼容。有時候,
微軟Samba系統會出現崩潰,例如在Windows 2000的補丁包中,當正常的認證方式被改變時,就會導致Samba系統的崩潰。唯一的能夠讓Samba重新工作的方法是通過註冊表來將認證方式改回來。儘管存在這些細小的缺陷,雖然這些缺陷在大量集成之後總是會出現的,但是,無論是從Windows連線到Linux還是從Linux連線到Windows 機器,Samba系統對於實現檔案和列印服務來說總是很穩定的。
提示: 本文將以Red Hat 9.0上的Samba系統作為討論的基礎。但是你不要因此而考慮太多。因為無論你運行的是哪個版本的Linux,Samba系統在實質上是相同的,但是,在具體的配置細節上可能會有所不同。
安裝Samba
自從Red Hat 9發行之後,Samba系統隨之也發行了它的更新版本。正因為如此,你需要從RedHat網站上下載新的可用的更新版本。通過點擊這裡,可以登錄Red Hat的Samba系統更新頁面。
一旦你有了更新版本,你就可以使用下面的命令來安裝他們:
rpm -ivh samba-2.2.7a-8.9.0.i386.rpm samba-common-2.2.7a-8.9.0.i386.rpm samba-client-2.2.7a-8.9.0.i386.rpm samba-swat-2.2.7a-8.9.0.i386.rpm
使用這個命令可以安裝Samba系統的所有組件,包括一個稱之為swat的配置工具。雖然我在本文中將不使用swat,但是你應該注意到這是一個非常有用的工具,該工具可以幫助你在Samba系統中配置更為複雜的選項。
Samba的基本配置
控制Samba安裝的檔案在"/etc/samba"目錄下,其檔案的名字是smb.conf。要想讓Samba系統工作,需要對這個檔案進行一些基本的編輯工作。 首先你必須改變"Hosts Allow"行中的內容,使該行中包含你的區域網路信息。如果你不對此行進行編輯的話,你的網路中的任何人都無法訪問你的系統。此行中應該包含你的區域網路的前綴。例如,我的實驗室網路運行在10.254.1.0/24上。因此我可以將10.或者10.254.或者10.254.1 放在"host allow"行中來允許我的網路中所有的機器來使用這個Samba系統。當然,我指定的網路地址越少,對於其他人來說,就有越多的機會來使用我的 Samba伺服器。
密碼
要確保Samba系統正確運行的最後一步是要對每個
用戶帳戶至少設定一個密碼。由於在 Linux和Windows系統中保存密碼的方式各不相同,所以對於SMB的密碼資料庫來說,你需要使用一個工具來進行管理。你可以在控制台提示中輸入 "smbpasswd -a root"命令來實現這個目的。 在這種情況下,該工具將提示你對選定的用戶輸入密碼,然後確認密碼(這裡假設是個根用戶)。一旦完成這個過程,根用戶就可以從一個Windows機器中連線到Samba的配置檔案中指定的預設
已分享檔案夾。在這種情況下,根用戶的 "home"目錄以及一個選定的安裝好了的印表機就已經可以使用了。
測試從Windows到Linux的連線
最快捷的測試激活Samba功能的Linux系統方法是:在同一個網路中尋找一個安裝了Windows系統的機器。點擊Windows系統中的"開始"選單中的"運行",在"運行"視窗中,輸入兩個反斜槓,後面緊跟你的裝有Samba伺服器的IP位址。使用IP位址的目的在於消除你的網路中可能存在的域名解析方面的問題。如果你願意的話,你可以使用機器的名字來測試,但是要注意的是這種使用名字的方法可能會無法實現你的測試目的。
此時系統應該會提示你輸入用戶名與密碼。輸入你在前面已經輸入的根用戶的名字和密碼就可以了。此時你應該可以看到一個資料夾,該資料夾中包含一個名字為"root"的資料夾和一個名字為"Printers"的資料夾。即使在你的Samba伺服器上沒有安裝印表機,也會出現"Printers"資料夾。
如果沒有出現輸入用戶名和密碼的提示,這可能意味著你的Linux機器上的Samba伺服器還沒有運行起來。你可以檢查一下,以確認smbd進程確實已經啟動,檢查的方法是在命令行中輸入"ps -ea | grep smbd"就可以知道該進程是否啟動。如果沒有返回任何信息,說明Samba進程可能會由於某種原因沒有啟動。你可以到"/var/log/samba" 目錄下查看一下日誌檔案,通過這些檔案你可能可以找到導致進程沒有啟動的原因。
測試從Linux到Windows的連線
同樣,從Linux系統中建立一個到Windows機器的連線也是非常簡單的事情。第一步要確保你已經創建了一個
掛載點來安裝網路共享。例如,我用 "/mnt/smb"來進行測試。在你以根用戶登錄時,你可以在根驅動器下通過使用"mkdir /mnt/smb"命令來創建這個目錄。
一旦完成了目錄的創建,你就可以使用"mount"命令來載入網路共享。在這裡,對於"mount"命令和Samba系統來說,有三個關鍵因素需要你注意。首先,檔案系統類型是smbfs。這意味著你在"mount"命令行中必須指定"-t smbfs"。其次,在遠程機器上的用戶名最好不要和
本地機器上的用戶名相同,所以必須指定一個用戶名。你可以使用一下的命令來實現:
-o username=domain\\user
需要注意的是,在"username(用戶名)"中使用的是兩個反斜槓來分離域名和用戶名。之所以要這樣,是因為
命令行解釋器將這兩個反斜槓只解釋為一個反斜槓。
最後,在用於共享的UNC路徑中,Windows一般都是使用
反斜槓。在UNIX命令解釋器中,由於存在
反斜槓的翻譯問題,所以在"mount"命令中使用前向反斜槓。所以,最後的命令應該如下:
mount /mnt/smb //server/share -t smbfs -o username=MYDOMAIN\\Administrator
系統會提示輸入你的密碼,並且一旦你成功的輸入了你的密碼,你就可以通過你已經定義的
掛載點來訪問遠程
已分享檔案夾中的檔案,在本文中該資料夾就是"/mnt/smb"。
未來的方向
Samba 的支持並不是沒有局限性。目前的Samba系統能夠較好的和Windows2000和Windows XP
客戶端進行合作,但是它還沒有完全集成到
微軟的
活動目錄結構中。這也是它的3.0版本所要實現的。雖然現在已經可以得到公開的Beta測試版本,但是在作者寫作本文時,該版本仍在進一步研發中。 Samba系統的真正目的在於幫助簡化混合作業系統環境中所存在的挑戰。對於大企業來說,在
已分享檔案和共享列印的訪問方面存在巨大挑戰,而Samba系統的目的在於改變這種現象。