ITPub博客

首页 > IT基础架构 > 网络安全 > 簡易 SAMBA 伺服器

簡易 SAMBA 伺服器

原创 网络安全 作者:m77m78 时间:2006-05-20 01:10:42 0 删除 编辑
簡易 SAMBA 伺服器
原理:
    在這個章節中,我們要教大家跳的是熱情有勁的巴西 SAMBA 舞蹈.....喔不~搞錯了~是要向大家介紹 SAMBA 這個好用的伺服器啦!咦!怪了!怎麼伺服器的名稱會使用 SAMBA 呢?還真是怪怪的呢!那麼這個 SAMBA 伺服器的功能是什麼呢?另外,他最早是經由什麼樣的想法而開發出來的呢?呵呵!底下就讓我們慢慢的談一談吧!
     
[@more@]
簡易 SAMBA 伺服器
原理:
    在這個章節中,我們要教大家跳的是熱情有勁的巴西 SAMBA 舞蹈.....喔不~搞錯了~是要向大家介紹 SAMBA 這個好用的伺服器啦!咦!怪了!怎麼伺服器的名稱會使用 SAMBA 呢?還真是怪怪的呢!那麼這個 SAMBA 伺服器的功能是什麼呢?另外,他最早是經由什麼樣的想法而開發出來的呢?呵呵!底下就讓我們慢慢的談一談吧!
     
SAMBA 的發展歷史與名稱的由來

 
在早期的網路世界當中,檔案資料在不同主機之間的傳輸大多是使用 FTP 這個好用的伺服器軟體來進行傳送。不過,使用 FTP 傳輸檔案卻有個小小的問題,那就是您無法直接修改主機上面的檔案資料!也就是說,您想要更改 Linux 主機上面的某個檔案時,必需要由 Server 端將該檔案下載到您工作的 Client 端後才能修改,也因此該檔案在 Server 與 Client 端都會存在。這個時候,萬一如果有一天您修改了某個檔案,卻忘記將資料上傳回主機,那麼等過了一陣子之後,呵呵,您如何知道那個檔案才是最新的?!
 
既然有這樣的問題,那麼好吧,我可不可以在 Client 端的機器上面直接取用 Server 上面的檔案,如果可以在 Client 端直接進行 Server 端檔案的存取,那麼我在 Client 端就不需要存在該檔案資料囉,也就是說,我只要有 Server 上面的檔案資料存在就可以啦!有沒有這樣的檔案系統啊 ( File System ) ,呵呵!很高興的是,前面我們已經提過的 Network File System, NFS 就是這樣的檔案系統之一啦!我只要在 Client 端將 Server 所提供分享的目錄掛載進來,那麼在我 Client 的機器上面就可以直接取用 Server 上的檔案資料囉,而且,該資料就像是我 Client 端上面的 partition 一般,真是好用!而除了可以讓 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 互相的分享資料囉!( 註:再次的給他強調一次,在 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 這兩個不同的作業平台,這麼做有什麼好處呢?剛剛我們上面不就已經說過了,最大的好處就是您不必讓同樣的一份資料放置在不同的地方,搞到後來都不曉得哪一份資料是最新的!而且也可以透過這樣的一個檔案系統上 Linux 與 Windows 的檔案傳輸變得更為簡單!也就是說,您以後可以透過『網路上的芳鄰』來進行 Linux 與 Windows 檔案的傳輸啦!那麼 SAMBA 可以進行哪些動作呢?
 
  • 分享檔案與印表機服務;
  • 可以提供使用者登入 SAMBA 主機時的身份認證,以提供不同身份者的個別資料;
  • 可以進行 Windows 網路上的主機名稱解析 (NetBIOS name)
  • 可以進行裝置的分享 ( 例如 Zip, CDROM... )
 
底下我們來談幾個 SAMBA 伺服器的應用實例吧!
 
應用實例一:以鳥哥為例,由於我都是使用 Windows 系統來編輯我的網頁畫面,然後再傳到我的 Linux 機器上。一開始,鳥哥也是以 FTP 來傳送我的網頁的,後來發現,這樣在我的 Windows 上面需要有一份網頁資料,然後修改完成之後又要傳到 Linux 上面,如此便有兩個相同的檔案,最麻煩的是,有時候下載下來的檔案已經經過好多修改了,卻在下次的 FTP 作業,不小心又下載一次舊資料,結果將已經修改過的資料覆蓋過去~天吶!又要重寫一遍.....真是討厭!後來,鳥哥就安裝了 SAMBA 伺服器,將 Linux 上我的網頁目錄打開成可以資源分享,如此一來,鳥哥就可以直接透過 Windows 的『網路上的芳鄰』來修改我的網頁資料囉!而且,這就有點像是『線上編修』呢,一修改完成,在 Internet 上面可以立刻檢驗,方便的很吶!
 
應用實例二:在我們實驗室中,由於電腦數量不多,研究生常常會使用到不同的電腦 ( 因為大家都得搶沒有人用的電腦啊! ),此外,也常常有研究生拿自己的 NoteBook 來工作,因此,有些團隊的資料就分散在各個電腦當中,使用上相當的不方便。這個時候,我就使用 SAMBA 將硬碟空間分享出來,由於使用者要登入 SAMBA 這個伺服器主機時需要輸入使用者資料 ( 帳號與密碼 ),而不同的登入者會取得不一樣的目錄資源,所以,可以避免自己的資料在公用電腦上面被窺視,此外,在不同的公用電腦上面都可以登入 SAMBA 主機,資料的使用上面真是相當的棒啊!
 
應用實例三:SAMBA 除了分享檔案系統外,也可以分享印表機喔,我們研究室好幾部電腦就是直接以 Linux 分享的印表機來印製報告的。您會說『啊 Windows 也可以辦的到啊!沒有什麼了不起的!』是啊。但是因為 Linux 做為伺服器主機時,鳥哥認為 Linux 畢竟還是比較穩定一點,可以 24 小時且全年無休的努力工作吶。此外,因為目前透過『網路上的芳鄰』來攻擊區域網路的 Windows 作業系統的電腦病毒實在是太多了,防不勝防, Linux 對於這樣的攻擊並沒有很大的影響 (因為常見的攻擊手法均針對 Windows 而來~),所以也比較安全一些說~
 
SAMBA 的應用挺廣泛的,尤其對於區域網路內的電腦來說,更是一項不可多得的好用的伺服器,更多的應用您可以自行發掘吶!
 

NetBIOS 通訊協定
 
事實上,就像 NFS 是架構在 RPC Server 上面一樣, SAMBA 這個檔案系統是架構在 NetBIOS ( Network Basic Input/Output System, NetBIOS )這個通訊協定上面所開發出來的。既然如此,我們當然就要瞭解一下 NetBIOS 囉!最早 IBM 發展出 NetBIOS 的目的僅是要讓區域網路內少數電腦進行網路連結的一個通訊協定而已,所以考慮的角度並不是針對大型網路,因此,這個 NetBIOS 是無法跨路由的 (Router/Gateway)。這個 NetBIOS 在區域網路內 ( Local Area Network, LAN ) 實在是很好用,所以微軟的網路架構就使用了這個咚咚來進行溝通的吶!而 SAMBA 最早發展的時候,其實是想要讓 Linux 系統可以加入 Windows 的系統當中來分享使用彼此的檔案資料的,所以當然 SAMBA 就架構在 NetBIOS 發展出來囉。
 
不過,如果單純的使用 NetBIOS 而已,偏偏 NetBIOS 是無法跨路由的,那麼該伺服器的使用範圍不就受限相當的多了?好在,我們還有所謂的 NetBIOS over TCP/IP 的技術呢!這是什麼樣的技術啊?!舉個例子來說好了,我們知道 TCP/IP 是目前網路連接的基本協定,現在,我們將 NetBIOS 想成是一封明信片,這個明信片只能讓您自己欣賞而已,如果今天我們要將這個明信片送到遠方的朋友那邊時,呵呵!就需要透過郵件系統 ( 例如郵局啦、國際快遞啦等等的 ) 來傳送了!這個 TCP/IP 就可以視為郵件傳遞系統啦!透過這個 NetBIOS over TCP/IP 的技術,我們就可以跨路由的使用 SAMBA 伺服器所提供的功能咯!當然啦,目前 SAMBA 還是比較廣泛的使用在 LAN 裡面說。

註:或許您會發現在 Windows 網路設定裡面常常看到 NetBEUI 這個咚咚,那是什麼呢?事實上,那個是 NetBIOS Extened User Interface 的簡寫,也是 IBM 在 NetBIOS 發展出來之後的改良版本。雖然這兩者的技術不太相同,不過,我們只要知道一些簡單的概念就可以了!所以,在這裡我們不針對 NetBEUI 來介紹。
 


SAMBA 使用的 daemons
 
知道了 SAMBA 的主要目的是讓 Linux 主機加入 Windows 的網路系統當中來分享使用彼此的資料,而 Windows 使用的是 NetBIOS 這個通訊協定,所以說,SAMBA 主要是使用 NetBIOS over TCP/IP 的技術。好了,我們再來談一談,那麼 SAMBA 在 Linux 作業系統上面工作時,需要啟用什麼服務呢 ( daemons )?讓我們先以 Windows 的『網路上的芳鄰』來做簡單的說明:
 
  • 當我們想要登入某部 Windows 主機使用他所提供的檔案資料時,必需要加入該 Windows 主機的群組 ( Workgroup ),並且我們的機器也必需要設定一個主機名稱,注意喔,這個主機名稱跟 Hostname 是不一樣的,因為這個主機名稱是架構在 NetBIOS 協定上的,我們可以簡單的稱呼他為 NetBIOS Name 好了。在同一個群組當中,NetBIOS Name 必需要是獨一無二的喔
 
  • 好了,等到我們登入該主機之後,能不能使用該主機所提供的檔案資料還要看 Windows 主機有沒有提供我們使用的權限吶!所以,並不是登入該 Windows 主機之後,我們就可以無限制的取用該主機的檔案資源了。也就是說,如果對方主機允許你登入,但是卻沒有開放任何資源讓您取用,呵呵,登入主機也無法查看對方的硬碟裡面的資料的啦!
 
瞭解了呴,同樣的 SAMBA 主機就使用兩個 daemons 來管理這兩個不同的服務:
 
  • smbd :這個 daemon 的主要功能就是用來管理 SAMBA 主機分享什麼目錄、檔案與印表機等等的內容。
  • nmbd :這個 daemon 則是用來管理群組啦、NetBIOS name 啦等等的解析。
 
所以囉, SAMBA 每次啟動至少都需要有這兩個 daemons 喔!這可不要忘記囉! ^_^而當我們啟動了 SAMBA 之後,主機系統就會啟動 137, 138, 139 三個 port ,且同時會有 UDP/TCP 的監聽服務喔!這可不要忘記了!因為後面設定防火牆的時候,還會使用到這三個 port 的呢!
 

連線模式的介紹 ( peer/peer, domain model )
 
SAMBA 主機的應用相當的廣泛,而且可以依照不同的網域連線與使用者帳號、密碼的控管方式不同,來加以不同的類別應用,例如最常見的 Workgroup 及 Domain 兩種方式的連線模式呢!底下我們就是要來談一談這兩種最常見的區域網路的連線模式 peer/peer 及domain model。
 
  • peer/peer ( Workgroup model )
     
    peer 有同等、同輩的意思存在,那麼 peer/peer 由字面上的解釋來看,當然就是同等地位的 PC 架構了!這是什麼意思呢?簡單的來說,在區域網路裡面的所有 PC 均可以在自己的電腦上面管理自己的帳號與密碼,同時每一部電腦也都具有獨力可以執行各項軟體的能力,只是藉由網路將各個 PC 連結在一起而已的一個架構,所以,每一部機器都是可以獨立咦鞯泥福《?谶@樣的架構下,如果有兩部電腦,電腦名稱假設為 pc1 與 pc2 好了,那麼當您要坐在 pc1 這部電腦前使用 pc1 的資源時,就必須要知道登入 pc1 的使用者名稱與密碼,才能夠登入使用。而如果您想由 pc1 經過網路連線到 pc2 來使用 pc2 的檔案資源時,就必須要知道 pc2 的帳號與密碼才可以順利的登入 pc2 吶!
     
    這樣的架構在目前小型辦公室裡面是最常見的。例如辦公室裡面有十個人,每個人桌上可能都安裝有一套 Windows 作業系統的個人電腦,而這十部電腦都可以獨立進行辦公室軟體的執行啊、獨立上網啊、獨立玩遊戲啊等等的,因為這十部電腦都可以獨立咦鳎??圆粫?幸徊侩娔X關掉,其他的電腦就無法工作的情況發生,這就是 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 的架構呢?!想起來了嗎?!沒錯!就是藉由 Windows 的『網路上的芳鄰』所達成的『工作群組(workgroup)』的架構,那就是典型的 peer/peer 架構啦!所以, peer/peer 也可以直接說成 workgroup 的連線架構喔。
     
    使用 peer/peer 的架構的好處,是每部電腦均可以獨立咦鳎??皇芩?说挠绊懀〔贿^,缺點就是當整個網域內的所有人員都要進行資料分享時,光是知道所有電腦裡面的帳號與密碼,就會很傷腦筋了!所以, Peer/Peer 的架構是比較適合 (1)小型的網域,或者是 (2)沒有需要常常進行檔案資料分享的網路環境,或者是 (3)每個使用者都獨自擁有該電腦的擁有權(就是說,該電腦是使用者的,而不是公用的啦!)!而,如果該單位的所有 PC 均是公有的,而且您需要統一控管整個網域裡面的帳號與密碼的話,那就得使用底下的 domain models 了!
 
  • domain model
     
    假設今天您服務的單位有 10 部電腦,但是您的單位有 20 個員工,這也就是說,這 20 個員工輪流搶著用這 10 部電腦。如果每部電腦都如同 peer/peer 的架構時,那麼每部電腦都需要輸入這 20 個員工的帳號與密碼來提供他們登入喔,而且,今天假如有個員工想要變更自己的密碼時,就需要到 10 台電腦上面進行密碼變更的作業!否則他就必須要記得這 10 部電腦裡面,那一部電腦是記憶那一個密碼.....好煩那~
     
    如果上述是這樣的情況,使用 peer/peer 架構就不是一個好方法了!這個時候就需要藉由 domain model 來達成您的需求啦!所謂的 domain model 概念其實也很簡單,既然使用電腦資源需要帳號與密碼,那麼我將所有的帳號與密碼都放置在一部主控電腦 ( Primary Domain Controller, PDC ) 上面,在我的網域裡面,任何人想要使用任何電腦時,都需要在螢幕前方輸入帳號與密碼,然後通通藉由 PDC 主機的辨識後,才給予適當的使用權限,也就是說,不同的身份還具有不一樣的電腦資源使用權限就是了!例如底下的圖示:
     
     
    PDC 主機控管整個網域裡面的各個機器 (PC A ~ PC D) 的帳號與密碼的資訊,假如今天有個使用者帳號名稱為 Ken ,且密碼為 mypasswd 時,他不論使用哪一部電腦 (PC A ~ PC D) 只要在螢幕前方輸入 ken 與他的密碼,則該機器會先到 PDC 上面查驗是否有 ken ,以及 ken 的密碼,並且 PDC 主機會給予 ken 這個使用者相關的電腦資源使用權限。當 ken 在任何一部主機上面登入成功後,他就可以使用相關的電腦資源了!
     
    這樣的架構比較適合人來人往的企業架構,當系統管理員要控管新進人員的電腦資源使用權時,可以直接針對 PDC 來修改就好了,不需要每一部主機都去修修改改的,對於系統管理員來說,這樣的架構在控管帳號資源上,當然是比較簡單的啦!
 
各種架構適用的環境與適用的人都不相同,並沒有那個是最好啦!請依照您的工作環境來選擇連線的模式囉!當然, SAMBA 可以達到上述兩種模式的啦!底下我們會分別來介紹喔!
套件安裝:
    事實上, SAMBA 的安裝一點也不難,而且這個咚咚在各主要 distribution 上面都有提供,也都大同小異,所以,比較建議使用您自己的 distribution 所提供的 RPM 檔案來安裝喔!當然啦,您也可以自行使用 Tarball 來安裝的啦!
     

    使用 RPM 來安裝
     
    使用 RPM 來安裝真是一點都不難啦!不過,要注意一下安裝的套件名稱就是了,因為不同的 distribution 對於 RPM 檔案的命名都不太一樣!舉個例子來說, Red Hat 9 對於 SAMBA 這個伺服器總共需要至少三個套件,分別是:
     
    • samba:這個套件主要包含了 SAMBA 的主要 daemon 檔案 ( smbd 及 nmbd )、 SAMBA 的文件檔 ( document )、以及其他與 SAMBA 相關的 logrotate 設定檔及開機預設選項檔案等;
    • samba-common:這個套件則主要提供了 SAMBA 的主要設定檔 (smb.conf) 、 smb.conf 語法檢驗的測試程式 ( testparm )等等;
    • samba-client:這個套件則提供了當 Linux 做為 SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 檔案格式的執行檔 smbmount 等等。
     
    不過,在 Mandrake 9.1 當中,則將 samba 這個套件又分為 samba-server 與 samba-doc 兩個套件,所以在 MDK 9.1 則有四個套件需要安裝: samba-server, samba-doc, samba-common, samba-client
     
    RPM 的安裝不用再介紹了吧?!請拿出您的光碟, mount 上他,然後再將裡頭的 samba 套件給他 RPM 上去即可!在最後檢驗的時候,您的系統應該有點像底下這個樣子(以 Red Hat 9 為例):
     
    [root@test root]# rpm -qa | grep samba
    samba-common-2.2.7a-8.9.0
    redhat-config-samba-1.0.4-1
    samba-2.2.7a-8.9.0
    samba-client-2.2.7a-8.9.0
    注意一下,上面顯示的例子是 Red Hat 9 的檔案,其中那個 redhat-config-samba
    是 Red Hat 額外提供的設定功能,可以不用安裝他啦!
     

    使用 Tarball 來安裝
     
    一般來說,因為各個 distribution 提供的 SAMBA 的功能都差不多,所以實在沒有必要使用 Tarball 來進行額外的安裝與設定,不過,如果您還是想要自己建置自己的 SAMBA 的話,可以到 SAMBA 的官方網站上下載 samba 的原始程式碼,然後在自己的機器上面編譯。不過,連到國外去總是有點慢,建議可以到中山大學下載最新的 SAMBA 原始碼:
       
    目前 ( 2003/07/20 ) 最新的版本是 2.2.8a 這個版本,您可以下載 samba-2.2.8a.tar.gz 這個檔案,然後將他解開,解開後,記得察看一下 samba-2.2.8a 裡面的 README 喔!接下來,您就可以這樣編譯看看:(註:底下的測試是在 Red Hat 9 上面進行的,如果您的系統並不是 Red Hat 9 時,請注意 source 那個目錄底下的 config.log 那個檔案,裡面會記錄相關的錯誤訊息喔!)
     
    [root@test root]# wget http://ftp.nsysu.edu.tw/Unix/Samba/samba-2.2.8a.tar.gz
    註:上面的網址只是一個範例,請自行到中山大學下載!
     
    [root@test root]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/samba-2.2.8a.tar.gz
    這個時候會有一個目錄跑出來: /usr/local/src/samba-2.2.8a
     
    [root@test src]# cd samba-2.2.8a #(在這個目錄中察看一下 README 喔!)
    [root@test samba-2.2.8a]# cd source
    [root@test source]# ./configure --prefix=/usr/local/samba
    > --with-automount --with-smbmount --with-pam
    > --with-mmap --with-quotas --with-libsmbclient
    還是要重複的給他強調一下:
    1. 請先以 ./configure --help 察看一下 configure 的一些相關的參數用法
    2. 如果發生任何錯誤,請不要往下進行 make 的動作,因為還是不對的!
    3. 萬一發生任何錯誤時,通常是由於一些函式庫找不到的緣故,請參考此目錄
      下的 config.log 這個檔案的內容,裡面會記錄一些錯誤的歷程。
     
    [root@test source]# make #(開始進行編譯!)
    這個過程會花一些時間,因為他會將原始碼 (source code) 以您剛剛的設定
    並以 gcc 這個 compiler 來進行編譯喔!所以會花一些時間的啦!
     
    [root@test source]# make install
    將剛剛編譯完成的可執行 binary 檔案安裝到 /usr/local/samba 裡面去!
    在這個例子當中,未來您在設定 SAMBA 時,必需要到 /usr/local/samba 當中喔!
     
    一般來說,除非您的 Linux distribution 已經相當的老舊了 (例如 Red Hat 6.x 以前的版本),並且在舊的系統上面正在正常的咦饕恍┓?眨?鴥H想要增加 SAMBA 的服務,那就只好使用 Tarball 的方式來安裝 SAMBA ,否則的話,蠻強烈的建議直接以 RPM 的方法來安裝您的 SAMBA 伺服器軟體即可!因為既簡單方便,又容易統一設定喔! ^_^

Server 端的設定
    由於 SAMBA 幾乎一定包含在各個主要的 Linux distribution 當中,並且不同版本之間的功能差異也不是很大,所以,底下的介紹我們都以 RPM 安裝的 SAMBA 套件來進行說明。當然啦,即使同樣是 RPM 的檔案,但是在各個 Linux distribution 當中, SAMBA 的主要檔案放置的目錄還是可能會不太一樣。不過,因為 SAMBA 的設定檔檔名都是不變的 ( smb.conf ),所以,雖然底下我們是以 Red Hat 9 為範例,不過,您依舊可以使用 locate, find, whereis 等指令在不同的 distribution 系統下找出 SAMBA 主要的設定檔與執行檔喔! ( 這就是為什麼我們喜歡教大家使用 vi 以及純文字模式學習 Linux 的原因,因為一法通,萬法通啊!)
     
    另外,我一開始的範例當中都是針對沒有設定防火牆的情況下所進行設定與測試,如果您的環境裡面已經有架設防火牆的話,那麼您應該要先瞭解防火牆的架構,並將 SAMBA 需要的 port 給他開放,否則很難測試成功喔!或者直接察看本章節較後面專門談安全的部分,尤其是 iptables 與 /etc/hosts.allow(deny) 這部份喔!
     

    SAMBA 的套件結構
     
    我們這裡以 Red Hat 9 的 SAMBA 套件來介紹他相關的一些設定檔與執行檔,不過,如果您的 distribution 並不是 Red Hat 9 ,那也沒有關係,因為都是大同小異的啦!善用 locate 這個指令去搜尋喔!
     
    • SAMBA 的設定檔:
      在較早期的版本中, SAMBA 的設定檔都直接放置在 /etc 底下,後來的版本則將設定檔通通放置到 /etc/samba 底下去了 ( 有的 distribution 放在 /etc/smb 有的則是 /etc/samba.d ,請使用 locate 搜尋! )。在 /etc/samba 底下的幾個重要的設定檔有:
       
      • /etc/samba/smb.conf:這個就是 SAMBA 最主要的設定檔了!在較為簡單的設定當中,這也是唯一的一個設定檔!此外,這個檔案本身就含有相當豐富的說明,所以,在設定之前,請使用 vi 好好的詳細的觀看一下這個檔案吧!這個設定檔主要的設定分為兩部份,分別是 [global] 這個設定主機功能的項目,以及接下來的每個分享出去的目錄的屬性設定。我們會在後續的部分進行更多的說明。
       
      • /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 才行喔!
       
    • SAMBA 的執行檔:
      SAMBA 的執行檔可就多了!一般來說,做為 SAMBA Server 的執行檔有 testparm, smbd, nmbd, smbpasswd,至於做為 SAMBA Client 的執行檔主要則是:smbmount, smbclient。
       
      • smbd nmbd:還記得我們在原理部分提到的 SAMBA 需要啟動的 daemons 吧?!呵呵!這兩個執行檔就是那兩個主要的 daemons 囉!每次啟動 SAMBA 都會使用到的兩個執行檔啦!
       
      • testparm:當我們設定完成了 smb.conf 這個主要設定檔之後,而想要查看一下 SAMBA 的所有設定參數與 smb.conf 的設定項目是否正確時,就需要使用這個 testparm 來查看囉 ( 其實就是 test parameters 的簡寫!)!所以說,每次在修改完 smb.conf 之後,請務必要使用 testparm 查看看是否有設定錯誤喔!
         
      • smbpasswd:如果您的 SAMBA 設定的較為嚴格,需要規定使用者的帳號與密碼,那麼那個密碼檔案的建立就需要使用 smbpasswd 來建置才可以的喔!所以這個指令與建立 SAMBA 的密碼有關咯!
       
      • smbclient:當你的 Linux 主機想要藉由『網路上的芳鄰』的功能來查看別台電腦所分享出來的目錄與裝置時,就可以使用 smbclient 來查看啦!這個指令也可以使用在自己的 SAMBA 主機上面,用來查看是否設定成功哩!
       
      • smbmount:在 Windows 上面我們可以設定『網路磁碟機』來連接到自己的主機上面,同樣的,在 Linux 上面,我們可以透過 smbmount 來將遠端主機分享的檔案與目錄掛載到自己的 Linux 主機上面哪!不過,其實我們也可以直接使用 mount 這個指令來進行同樣的功能就是了。
       
    • SAMBA 的相關目錄:
      這部份需要較為注意的應該算是 SAMBA 的『登錄檔』吧!因為最近以來,利用『網路上的芳鄰』來進行破壞的病毒是越來越多了!而且也有越來越多的搞怪者會以網路上的芳鄰的相關漏洞進行入侵的伎倆,所以囉,瞭解一下登錄檔放置的地點,並且加以分析,呵呵!可以得到不小的監測呢!
       
      • /usr/share/doc/samba:這個目錄包含了 SAMBA 的所有相關的技術手冊喔!也就是說,當您安裝好了 SAMBA 之後,您的系統裡面就已經含有相當豐富而完整的 SAMBA 使用手冊了!值得高興吧! ^_^,所以,趕緊自行參考喔!
       
      • /var/log/samba:這個目錄就是 SAMBA 預設的登錄檔放置目錄了!如果您的 SAMBA 老是設定不起來,又或者懷疑被人家以 port 137~139 入侵的話,就到這裡來觀察吧!
         
      • /usr/share/samba/codepages:這個目錄裡面放置的就是各個語言的支援格式。舉例來說,想讓您的 SAMBA 支援中文嗎?那麼就需要 codepage.950 這個檔案的支援囉!當然啦,在 smb.conf 裡面設定即可!
     

    主機的規劃技巧建議
     
    如果您的 Linux 主機單純要用來做為檔案伺服器的話 (File Server) ,那麼建議您 Linux 主機就不要安裝 X Window 的咚咚,以節省一些硬碟的空間。此外,如果您想要針對不同的使用者開放不同的登入權限,那表示您的 SAMBA 主機將會有很多人物同時進進出出的存取資料檔案。為了避免某些使用者佔用了大部分的硬碟空間,也為了維護上的便利,這個時候挺建議您將 /home 這個目錄獨立出一個 parition ,此外,空間也要大一點,因為每個使用者登入 SAMBA 系統的時候,預設都是會進入到個人的家目錄的,而 Linux 預設的個人家目錄就在 /home 底下,所以吶, /home 是需要大一些些的。
     
    • 在安裝 Linux 的時候,建議不需要安裝 X Window ;
    • 在規劃 Linux 時,/home 最好獨立出一個 partition ,而且硬碟空間最好能夠大一些;
    • /home 獨立出來的 partition 可以單獨進行 quota 的作業,以規範每個使用者能夠使用的最大硬碟容量;
    • 由於 SAMBA 可以做為印表機伺服器,所以建議印表機可以直接連接在 Linux 主機的列印埠 (LPT1);
    • 由於 SAMBA 一般來說都僅針對內部 ( LAN ) 主機進行開放,所以,可能的話, SAMBA 主機直接使用內部保留 IP 來設定即可 (Private IP),當然啦, SAMBA 是否使用 private IP 還得視您的整個網域的 IP 網段的特性來規劃。以我們研究室來說,因為實驗室所有電腦的 IP 都是 Public IP,那麼 SAMBA 如果使用 Private IP ,當然大家都無法連接上啊! ^_^
    • 如果您的 SAMBA 主機使用 Public IP 時,請特別留意規範好防火牆的設定,盡量僅讓 LAN 內的電腦可以連線進來即可,不要對 Internet 開放喔!
     

    基礎的設定流程與 smb.conf 的主要規劃
     
    在開始設定 SAMBA 這個伺服器之前,我們先來談一談應該如何較為簡單的設定 SAMBA 吧!因為 SAMBA 的功能很強大,可以做為簡單的單一主機控管自己分享出去的資料,也可以做為整個區域內所有電腦的帳號管理主機 ( Primary Domain Controller, 這部份我們會在後面進行介紹喔! )。不過,整個 SAMBA 的設定流程倒是沒有多大的差異性!嗯!既然 SAMBA 是要讓 Linux 加入 Windows 網路上的芳鄰的一項工具,那麼我們就先來談一談,在 Windows 上面,您要如何分享你機器上面的目錄給大家使用呢?
     
    1. 先在自己的電腦上面安裝必要的協定:那就是 NetBIOS ( 有時候會是 NetBEUI 喔!)的安裝咯!直接在網路設定裡面設定好即可;
    2. 再來則是在檔案總管裡面設定好要分享的目錄、磁碟或者是裝置(如印表機);
    3. 然後,給這個分享出來的咚咚一組帳號及密碼(如果需要的話),讓外部使用者可以使用這組帳號密碼登入 Windows 主機;
    4. 然後就開始咦髁耍?/font>
     
    整個流程大概就是這麼簡單吧!事實上,在 Linux 底下的設定也是這麼簡單的啦!
     
    1. 先參考 區域網路的設定 那一章節,先搞定硬體的連線吧!
    2. 之後,先在 linux 上面的 SAMBA 設定檔 smb.conf 裡面設定好主機所支援的各項功能,例如是否需要密碼、是否支援 PDC 等等;
    3. 然後在 smb.conf 的後半部當中設定好想要分享的目錄與該目錄的屬性;
    4. 如果在步驟 2 裡面的 smb.conf 檔案內設定的分享方法是需要帳號與密碼的登入時,就以 smbpasswd 建立使用者的帳號與密碼;
    5. 啟動 smb 的服務,開始咿D囉!
     
    呵呵!所以會動到的設定檔幾乎就是只有 smb.conf 這個 SAMBA 的設定檔,當然啦,還需要 smbpasswd 來建立使用者的帳號與密碼就是了! ^_^既然這個 smb.conf 這麼重要,我們就得瞭解一下 smb.conf 囉!
     
    smb.conf 這個檔案裡面主要是以 [global/share directory] 開始一個主要設定的內容,這個檔案裡面,『 # 』與『 ; 』都是註解的意思喔!我們先來談一談比較重要的 [global] 這個牽涉到 SAMBA 主機的主要設定的內容吧!
     
    [root@test root]# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak.raw
    [root@test root]# vi /etc/samba/smb.conf
    # 這個檔案本身就是很詳細的說明檔,限於篇幅,我們沒有將註解的部分寫下來,
    # 這裡的目的是想讓大家瞭解 smb.conf 的內容規劃咯!
    [global]
    workgroup = birdhouse
    server string = Linux Samba Server
    netbios name = birdlinux
    client code page = 950
    printcap name = /etc/printcap
    load printers = yes
    printing = lprng
    log file = /var/log/samba/log.%m
    max log size = 500
    # 那個 500 數字是 Kb 喔!
    security = user
    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    # 上面的幾行當中,注意 [global] ,由 [global] 到底下的 [Webpage] 之間的設定
    # 都是 [global] 的設定項目!而 [global] 的主要內容都是與主機的設定有關!
    # 比較重要的有底下幾個設定值:
    # workgroup  工作群組:同一個區域網路內,要具有相同的 workgroup
    # netbios name 主機名稱:這個主機名稱就是 netbios 的名字!請注意,如果你
    #        沒有設定 netbios name 的話,預設的 NetBIOS name 會以
    #        HOSTNAME 來替代!
    # server string 這個是主機的說明,隨便寫寫沒關係!
    # security   這個重要,是用來規定 SAMBA 主機的安全登入項目,有底下幾種:
    #        share :不進行安全登入,亦即沒有設定帳號與密碼
    #        user  :設定主機的密碼檔作為登入的驗證檔案,這與底下的
    #            smb passwd file 有關喔!
    #        domain :就是讓您的 SAMBA 作為 PDC 囉!
    # log file   登錄檔放置的目錄所在喔!
    # 其他相關的幾個設定項目請參考 man 5 smb.conf 我們底下也會列出幾個常用的
    # 設定項目說~
     
    [Webpage]
    comment = My Home Page
    path = /var/www/html
    read only = no
    public = yes
    writable = yes
    create mode = 0664
    directory mode = 0775
    # 這個部分則是針對每個分享的目錄或者是裝置進行權限方面的規定了!
    # 幾個簡單的設定項目有:
    # comment :這個目錄的說明!
    # path   :這個項目真正的 Linux 檔案系統裡面的目錄,請看底下的說明
    # read only:是否唯讀?
    # public :是否讓所有可以登入的使用者看到這個項目?
    # writable :是否可以寫入?!這裡需要注意一下喔!那個 read only 與 writable
    #      不是兩個蠻相似的設定值嗎?如果 writable 在這裡設定為 no ,亦即
    #      不可寫入,那跟 read only 不就互相抵觸了?!那個才是正確的設定?
    #      答案是:最後出現的那個設定值為主要的設定
    # create mode 與 directory mode 都與權限有關的咯!
     
    注意一下,在上面的案例中,我們只有兩個主要的設定群:
     
    • 一個是 [global] 的主機相關設定,這個是每個 SAMBA 主機都需要設定的喔!裡面的規定都與 SAMBA 主機的環境有關!
     
    • 至於 [Webpage] 呢?他是什麼玩意~這裡我們舉個實際的例子好了,當您在區域網路內以網路上的芳鄰登入某部主機之後,不是會看到該主機所提供的『目錄或者裝置的名稱』嗎?!那個 Webpage 就是名稱啦!也就是說,當您以網路上的芳鄰登入 linux 時,看到的 Linux 所分享出來的目錄名稱就是『Webpage』啦!不過,這個 Webpage 只是在 SAMBA 服務當中所顯示的名稱而已,並不是真正的 Linux 檔案系統上面的目錄!這個 Webpage 所代表的真正的目錄要看底下設定項目的『path』設定項目才行!這也就是說,當您在網路上的芳鄰登入 Linux 後,看到 Webpage 這個目錄,用滑鼠將他點下去,接下來看到的內容就是 /var/www/html 這個真正 Linux 檔案系統裡面的資料咯!
     
  • 關於變數:
    在上面的例子當中,我們有看到一個比較有趣的設定是『log file = /var/log/samba/log.%m』,怎麼會有個 %m 啊?!呵呵!那個就是 SAMBA 裡面的變數值啦!在 SAMBA 當中,為了便利使用者的設定,所以會有許多的變數值提供給系統管理員來使用,主要的變數有底下幾個:
     
    • %S:取代目前的設定項目值,所謂的『設定項目值』就是在 [ ] 裡面的內容!舉例來說:
      [homes]
      valid users = %S
      ....
      因為 valid users 是允許的登入者,設定為 %S 表示任何可登入的使用者都能夠登入的意思~今天如果 test 這個使用者登入之後,那個 [homes] 就會自動的變成了 [test] 了!這樣可以明白了嗎?! %S 的用意就是在替換掉目前 [ ] 裡面的內容啦!
       
    • %m:代表 Client 端的 NetBIOS 主機名稱喔!例如上面案例的登錄檔!
    • %M:代表 Client 端的 Internet 主機名稱喔!就是 HOSTNAME。
    • %L:代表 SAMBA 主機的 NetBIOS 主機名稱。
     
    • %H:代表使用者的家目錄。
     
    • %U:代表目前登入的使用者的使用者名稱
     
    • %g:代表登入的使用者的群組名稱。
     
    • %h:代表目前這部 SAMBA 主機的 HOSTNAME 喔!注意是 hostname 不是 NetBIOS name 喔!
     
    • %I:代表 Client 的 IP 咯。
     
    • %T:代表目前的日期與時間
     
    至於相關的變數哂茫?覀儠?诘紫碌脑O定當中略做介紹喔!
     

    沒有防備的 SAMBA 分享檔案設定
     
    所謂的『沒有防備的 SAMBA 分享檔案』就是你啟用了一個 SAMBA Server ,設定了分享的目錄,但是卻完全沒有規範權限,也就是任何人都可以登入這個系統的意思啦!事實上是不太應該介紹這個沒有防備的 SAMBA 主機的!因為.....太過於危險了!不過,有些沒有連上 Internet 的區域網路內還是可以嘗試看看的。所以這裡我們先以較為簡單的無防備 SAMBA 主機作為第一個 SAMBA 的設定介紹吧!
     
    1. 主機預計分享的狀況:
      在整個 LAN 裡面的工作群組 ( workgroup )為:birdhouse
      我的 Linux 主機 NetBIOS 名稱為 ( netbios name ):birdhome
      安全設定為沒有防備的 share (share 為 smb.conf 裡面 security 的設定值)
      僅僅分享 /tmp 這個目錄而已~
       
    2. 設定 lmhosts :
      事實上,這個檔案目前是可以不用設定了!不過,如果保險一點來看,設定一下也沒有什麼不好的!在這個檔案當中,您要設定的資料很簡單,就是每一部 PC 的 NetBIOS name 以及對應的 IP 即可!以我為例:
      [root@test root]# vi /etc/samba/lmhosts
      127.0.0.1 localhost
      192.168.0.100 birdhome
      192.168.0.110 birdbrother1
      192.168.0.120 birdbrother2
      在我的區網當中總共有三部電腦,分別是 Linux 主機的 192.168.0.100 以及兩部 Windows 主機 192.168.0.110 及 120 ,請注意喔!這三部電腦的工作群組都必須是 birdhouse 而電腦名稱請個別取 birdbrother1, birdbrother2 等不同的主機名稱呢!再次強調,這個名稱是 NetBIOS name 喔!
       
    3. 開始設定 smb.conf:
      在這個例子當中,我們僅分享出 /tmp 而已,並且沒有設定任何的登入權限的限制喔!而因為 smb.conf 原本的設定當中就已經開放出很多的目錄,所以您必須要將其他的分享先關閉!關閉的方法有很多,您可以將 smb.conf 備份後移除,重新建一個,或者是將沒有用到的那一行以『;』或者是『#』將他註解掉喔!(比較詳細的說明請參考前幾個章節的『基礎設定流程』裡面的介紹!)
      [root@test root]# cd /etc/samba
      [root@test samba]# cp smb.conf smb.conf.bak
      # 玩伺服器最重要的一個概念就是『有備無患』啊!
      # 所以,先將重要的資料給他備份下來! ^_^
       
      [root@test samsa]# vi smb.conf
      # 底下的設定為最基礎的設定值!最重要的地方在於 security = share 的地方!
      [global]
      workgroup = birdhouse
      netbios name = birdhome
      server string = Bird's testing SAMBA Server
      client code page = 950
      # 這個 client code page 的設定有趣的很!因為 SAMBA 支援多語系的編碼,
      # 我們習慣的編碼為 cp590 亦即是 code page 950 這個編碼,所以,
      # 想要讓您的 SAMBA 可以正確的在 Windows 上面顯示出中文,就得加入
      # client code page = 950 喔! (如果沒有設定,那麼預設值是 850 呢!)
      # 如果 max log size = 0 的話,那表示登錄檔檔案大小沒有限制!
      log file = /var/log/samba/log.%m
      max log size = 0
      security = share
      socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
      interfaces = 192.168.0.100
      dns proxy = no
      [tmp]
      comment = Temporary file space
      path = /tmp
      # 真正的開放出來的路徑在這裡!
      read only = no
      public = yes
      # 上面兩個設定在告訴大家,不但可以存取(read only = no)
      # 也可以讓大家查詢(public = yes)!
       
      [root@test samba]# grep -v '^#' smb.conf |grep -v '^;'|grep -v '^$'
      # 這個動作在確認一下上面的設定是否相同,因為有時候可能會忘記將某個
      # 設定給註解掉呢! ^_^
       
    4. 測試 smb.conf 設定值與啟動 SAMBA :
      設定好了最主要的設定檔 smb.conf 之後,接下來就得要開始測試與啟動 SAMBA 囉!動作也是很簡單的:
      [root@test samba]# testparm
      Load smb config files from /etc/samba/smb.conf
      Processing section "[tmp]"
      Loaded services file OK.
      Press enter to see a dump of your service definitions <==這裡按下 Enter
      # Global parameters
      [global]
      client code page = 950
      code page directory = /usr/share/samba/codepages
      workgroup = birdhouse
      netbios name = birdhome
      netbios aliases =
      netbios scope =
      server string = Bird's test SAMBA Server
      interfaces = 192.168.0.100
      bind interfaces only = No
      security = SHARE
      encrypt passwords = No
      .....
      [tmp]
      comment = Temporary file space
      path = /tmp
      read only = No
      guest ok = Yes
      # 你應該會看到如上的畫面,這個 testparm 可以用來察看所有 SAMBA 的屬性,
      # 這些屬性很多都是預設值!如果沒有 smb.conf 裡面設定時,就是預設值,
       
      [root@test samba]# /etc/rc.d/init.d/smb restart
      Shutting down SMB services: [ OK ]
      Shutting down NMB services: [ OK ]
      Starting SMB services: [ OK ]
      Starting NMB services: [ OK ]
      # 請注意,上面 /etc/rc.d/init.d/smb 這個檔名是 Red Hat 的設定值,
      # 很多其他的套件不見得是使用這個檔名的!例如 OpenLinux 使用 samba 這個,
      # 所以請您務必使用 RPM 的相關指令來檢驗一下檔案名稱,或者使用
      # 按鍵來讓系統自動補齊檔名,就可以知道是什麼檔名囉!
      # 另外,如前所說的, SAMBA 會啟用兩個 daemons ,所以這裡顯示兩個 OK!
       
      [root@test samba]# netstat -tlunp | grep ':13'
      tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 4307/smbd
      udp 0 0 192.168.0.100:137 0.0.0.0:* 4311/nmbd
      udp 0 0 0.0.0.0:137 0.0.0.0:* 4311/nmbd
      udp 0 0 192.168.0.100:138 0.0.0.0:* 4311/nmbd
      udp 0 0 0.0.0.0:138 0.0.0.0:* 4311/nmbd
      # 如果看到這樣,呵呵!就應該沒有問題啦!
      事實上,當您完成了 smb.conf 的設定時,請務必使用 testparm 來檢查一下 smb.conf 的設定是否正確喔!因為很多時候,我們都會一不小心忘記這、忘記那的,所以,使用 testparm 來查閱一下設定值,確實有幫助的吶!此外,啟動後,記得去察看一下 port 是否有啟動喔!還有還有,不要忘記了,如果您原先就有設定防火牆的話,一定要去察看一下防火牆的設定是否已經啟動了 137 ~ 139 的登入?!
       
    5. Client 端的測試:
      Client 端的測試在 Windows 或 Linux 當中都差不多,所以我將他獨立到另一個章節來說明,底下僅列出在本機上面的自我測試(亦即本機是主機,同時也是 client 就是了!)
      [root@test root]# smbclient -L //birdhome
      added interface ip=192.168.0.100 bcast=192.168.0.255 nmask=255.255.255.0
      Password: <==這裡按 Enter
      Domain=[birdhouse] OS=[Unix] Server=[Samba 2.2.7a-security-rollup-fix]

      Sharename Type Comment
      --------- ---- -------
      tmp Disk Temporary file space
      IPC$ IPC IPC Service (Bird's testing SAMBA Server)
      ADMIN$ Disk IPC Service (Bird's testing SAMBA Server)

      Server Comment
      --------- -------
      birdhome Bird's testing SAMBA Server

      Workgroup Master
      --------- -------
      birdhouse birdhome

      看到上面顯示的嗎?!那個 smbclient 指令可以用來(1)查詢某部主機的分享內容與(2)登入某部主機進行資料的存取!更詳的用法我們會在底下說明!在上面的案例下,我們使用 -L 這個參數,去察看主機名稱(注意,這裡是以 netbios name 為主機名稱喔!)分享出來的資料有哪些?!如上所示,列出 birdhome 該部主機的分享的目錄 (tmp) 以及主機名稱還有群組特性!這就表示 SAMBA 設定完成啦!
     
    這樣就簡單的設定完畢了!大家都可以使用網路上的芳鄰登入您的 Linux 主機,並且使用 /tmp 這個目錄喔!而,如果您想要增加其他的目錄開放給大家使用時,就請自行模仿 [tmp] 底下的設定值,

    不過,需要特別留意的僅是 Linux 的檔案權限與 SAMBA 設定的權限關係!這個問題我們會在安全性與問題克服裡面進行詳細的說明喔! (註:這個問題最常發生在使用者身上,因為『即使 SAMBA 主機設定您可以無限制的使用某個目錄下的檔案,但是是否能夠使用,仍然得視登入 SAMBA 的該使用者對於 Linux 的檔案系統是否有存取的權限』喔!)
     


    設定需要使用者登入的 Workgroup
     
    上面介紹了沒有防備的 SAMBA 主機之後,您是否覺得:『呵呵!SAMBA 還真是不錯用』啊!是沒錯啦!設定方面確實很簡單,然而還是有缺點的,就是萬一有外人不小心在網路上的芳鄰上面點一點、按一按,剛好進入到您的主機系統當中,由於您的主機系統是沒有防備的,所以他可以自由的進出您的主機,也可以隨意的將資料下載(或者是上傳)到您的 SAMBA 主機上面,更可能由於區域網路內有 Nimda 等網路芳鄰攻擊型病毒,而將病毒硬塞一份到您的 SAMBA 主機當中,使得您的區域網路裡面的網路頻寬被吃掉之外,還可能使其他的區域網路內的 Windows PC 作業系統被搞破壞掉~哇!真是問題多多啊!所以囉!不建議在公共的場合底下設定無防備的 SAMBA ,即使是私人單位內部,還是不建議架設上面的沒有任何防備措施的 SAMBA 主機喔!
     
    所以呢,接下來,我們要介紹的就是需要使用者提供帳號密碼才能登入 SAMBA 主機的設定方法咯!使用者必須要能夠提供帳號與密碼供主機判定身份,若身份合格,才能夠使用主機的相關資源喔!底下我們要介紹的是比較簡單的 peer/peer 的連線 ( 相關的連線模式,請參考前面的連線模式一節 ),此外,使用的還是 workgroup 的方式來設定的喔!
     
    1. 主機預計分享的狀況:
      在整個 LAN 裡面的工作群組 ( workgroup )為:birdhouse
      我的 Linux 主機 NetBIOS 名稱為 ( netbios name ):birdhome
      安全設定為工作群組類型 user
      分享家目錄與特定目錄 /home/public 給所有使用者使用
       
    2. 設定 lmhosts:
      同樣的,我有三部主機,請參考上一章節的設定

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/34329/viewspace-836568/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 簡易 DNS 伺服器
请登录后发表评论 登录
全部评论

注册时间:2008-04-25

  • 博文量
    168
  • 访问量
    735349