Samba 服務器簡介與安裝

Samba 服務器簡介與安裝
2007-06-29 22:48
一、SMB 協議
     SMB(Server Message Block,服務信息塊)協議是一個高層協議,它提供了在網絡上的不同計算機之間共享文件、打印機和不同通信資料的手段。
     SMB 使用 NetBIOS API 實現面向連接的協議,該協議爲 Windows 客戶程序和服務提供了一個通過虛電路按照請求-響應方式進行通信的機制。SMB 的工作原理就是讓 NetBIOS 與SMB 協議運行在 TCP/IP 上,     並且使用 NetBIOS 的名字解釋器讓 Linux 機器可以在 Windows的網上鄰居中被看到,從而和 Windows 9X/NT/2000 進行相互溝通,共享文件和打印機。1992 年,SMB 成爲 Open Group 的國際標準,即“X/Open PC 機網絡互連協議:SMB,第二版,X/Open CAE 標準 C209”      。
二、Samba 簡介
     Samba 是一組軟件包,使 Linux 支持 SMB 協議,該協議是在 TCP/IP 上實現的,它是Windows 網絡文件和打印共享的基礎,負責處理和使用遠程文件和資源。在缺省情況下,Windows 工作站上的 Microsoft Client 使用服務消息塊(SMB)協議。正是由於 Samba 的存在,使得 Windows 和 Linux 可以集成並互相通信。安裝了 Samba 後,就可以直接而方便的在 Linux 和 Windows 之間共享資源,免去了以前必須使用 FTP 的麻煩。
     Samba 目前已經成爲各種 Linux 發佈版本中的一個基本軟件包。
     Samba 於 1991 年由澳大利亞人 Andrew Tridgell 研發,最初是爲了代替 PC-NFS 而開發的,幾年來經過 Samba 小組的共同努力,現在它已經成爲了一個功能非常強大的軟件包。Samba 可以在幾乎所有的類 UNIX 平臺上運行,當然包括 Linux。Samba 基於 GPL 發行,其版本更新速度很快,當前版本是 3.0.23d 版。
     Samba 的核心是兩個守護進程 smbd 和 nmbd。一般 smbd 監聽 139 TCP 端口,處理來自用戶的連接,實現文件、權限、用戶名的管理;nmbd 監聽 137 和 138 UDP 端口,幫助快速定位服務器,主要是主機名的定位。
     smbd 和 nmbd 使用的全部配置信息全都保存在 smb.conf 配置文件中。smb.conf 向 smbd和 nmbd 兩個守護進程說明輸出什麼,共享輸出給誰及如何進行輸出以便共享。Smbd 進程的作用是處理到來的 SMB 數據包,爲使用該軟件的資源與 Linux 進行協商,nmbd 進程使其它主機(或工作站)能瀏覽 Linux 服務器。
三、Samba 軟件的功能
     共享 Linux 的文件系統
     共享安裝在 Samba 服務器上的打印機
     支持 Windows 客戶通過網上鄰居瀏覽網絡
     使用 Windows 系統共享的文件和打印機
     支持 Windows 域控制器和 Windows 成員服務器對使用 Samba 資源的用戶進行認證
     支持 WINS 名字服務器解析及瀏覽
     支持 SSL 安全套接層協議
四、Linux 下安裝 Samba
     和 Linux 平臺上其他的軟件一樣,Samba 服務器也有源代碼(*.tar.gz)和二進制代碼(.rpm)兩種分發形式。
     二進制代碼形式一般以 RPM 包的方式提供,幾乎所有 Linux 的發行版本都提供 Samba服務器的 RPM 包,一般在安裝系統時會同時安裝。可用下面命令檢查是否安裝:
     # rpm -qa|grep samba
若沒有,則可從系統光盤上安裝,也可以從 Samba 主頁上下載 rpm 包,但要考慮版本的匹配和軟件包的相互依存性。
     這裏主要討論 Samba 服務器的源代碼安裝過程,本文以 samba-2.2.1 爲例:
      1、以 root 身份登錄,首先檢查本機是否已經安裝 Samba:
            # rpm -qa|grep samba
            若有,用命令刪除之:# rpm -e samba
      2、下載源代碼壓縮包
            作者已將 samba-2.2.1.tar.gz 下載至本地,大家可從主頁的下載區去下載,放在目錄
/root 下。
       3、解壓、解包源代碼壓縮包:
       # cd    /root                                  
       # gzip –d samba-2.2.1.tar.gz       (或 gunzip samba-2.2.1.tar.gz作用一樣)          
       會在/root 下得到解壓後包文件 samba-2.2.1.tar,然後再解包:
       # tar –xvf      samba-2.2.1.tar
       這樣在/root 下得到子目錄(文件夾)samba-2.2.1。
       你也可以直接用命令 tar 同時完成解壓和解包:
       # tar –zxvf      samba-2.2.1.tar.gz
       4、安裝源代碼軟件包:
       源代碼發佈形式的軟件安裝大致相同,分別用命令 configure,make,make install 來完成,但在具體軟件包的使用上,又有些微的區別,我們在安裝類似軟件包時,要區別對待。一般每個軟件包都有相應的類似 README 或 USERGUIDE 的說明性文件,可以參考。
       configure 腳本文件是在編譯並安裝軟件之前進行的配置工作,主要包括待安裝軟件的各種文件的安裝位置以及關於本軟件的一些特性設置, 一般情況下可不做任何修改。但你可以通過-help 參數來大致瞭解一下本軟件的配置情況,我們一般最關心的是 PREFIX 參數,它制定軟件的安裝位置。make 命令用來編譯待安裝軟件的源代碼,make install 命令用來安裝軟件。下面說明 samba-2.2.1 的安裝過程:
       # cd    /root/samba-2.2.1/source
       # ./configure    -help
       我們會看到配置情況,注意其中 PREFIX 爲/usr/local/samba,這說明 samba 將被安裝在該地方,        如果其它類型的文件沒有被指定在別的地方, 那麼以後要刪除該軟件就只需刪除該子目錄(文件夾)即可(注意源代碼的安裝不能用 rpm –e 去刪除)。如果你想將 samba 安裝在別的地方,用參數--PREFIX=/path 即可。下面我們不改變缺省路徑安裝。
       # ./configure
       # make
       # make install
       如果沒有出現錯誤信息(應該不會),則 samba 已經安裝。
       按照資料介紹,安裝完成後配置文件 smb.conf 會在/etc/samba/下或/usr/local/samba/lib/下,但經過查看發現兩個地方都沒有,而 smbd 和 nmbd 卻可以找到,總以爲安裝不正確,折騰了好長時間。最後通過查看 smbd 的啓動日誌,發現它要到/usr/local/samba/lib 下去找smb.conf,而 samba-2.2.1 在安裝時並沒有在/usr/local/samba/lib 下自動生成 smb.conf,後來發現 在 /root/samba-2.2.1/examples/ 下 有 文 件 smb.conf.default , 於 是 將 其 復 制 到/usr/local/samba/lib 下並改名 smb.conf 後試驗成功。 ————這是讓我耗時兩週的原因所在。
現在也請你如法炮製:
       # cp     /root/samba-2.2.1/examples/smb.conf.default        /usr/local/samba/lib/smb.conf
五、啓動 samba
       爲了能正常運行 samba,最好關閉防火牆,Linux 下的防火牆是指 iptables 服務,用以
下命令關閉:
       # service      iptables stop
       或
       # ntsysv
       將 iptables 反選,保存,然後重啓機器。
       如前所述,啓動 samba 只需執行 smbd 和 nmbd 即可,若要手工啓動,則按以下命令進
行:
       # /usr/local/samba/bin/smbd      -D
       # /usr/local/samba/bin/nmbd      -D
       -D 參數表示以守護進程的方式運行。
       如果希望開機時即運行 samba 服務,可以將服務啓動的命令寫入/etc/rc.d/rc.local 的文件
中,並在指令後邊加入&,來將程序放到後臺運行。例如:
       # vi /etc/rc.d/rc.local
       #!/bin/sh
       #
       # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    Touch /var/lock/subsys/local
    /usr/local/samba/sbin/smbd -D &
    /usr/local/samba/sbin/nmbd -D &
    存盤退出,重啓機器,即可自動啓動 samba 服務。
六、配置
    能否玩轉 samba,全看你會不會配置 smb.conf。不同版本的 linux 提供了不同的配置方法,但最終還是通過修改 smb.conf 來完成配置,我的建議是直接修改 smb.conf。smb.conf比較複雜,有上百條的配置參數,一般並不需要修改所有的配置參數,要根據具體的使用環境選擇使用。
    在這裏,只負責連通。
    兩人一組,一臺機器起 Windows,一臺起 Linux。
    在 Linux 下,配置 samba 服務器:
    # cp     /usr/local/samba/lib/smb.conf /usr/local/samba/lib/smb.conf.backup    (應該明白什麼意思吧)
    # vi /usr/local/samba/lib/smb.conf
    找到 workgroup=x,將 x 改成 Windows 機器上的工作組名字,右擊我的電腦-屬性-計
算機名)
    找到 security=user,將 user 改爲 share
    存盤退出,重啓 samba 服務(直接執行那兩條命令,或重啓機器)
    Linux 重啓後,在 Windows 上雙擊“網上鄰居” ,再雙擊“查看工作組計算機” ,應該看見 Linux 機器。
    此時我們服務器上沒有設置任何共享目錄,下面我們在服務器上設置一個共享目錄:
    # mkdir      /mnt/text
    # chmod       777     /mnt/text
    # vi    /usr/local/samba/lib/smb.conf
    把光標移動配置文件的最後一行,在下面加入以下配置
    # This is samba text
    [text]
comment = text
path = /mnt/text
writable = yes
public = yes
存盤退出,重啓 samba 服務器。
再在 Windows 上看。
發佈了15 篇原創文章 · 獲贊 14 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章