1. 程式人生 > >利用Samba伺服器在Ubuntu系統和Win7系統間共享資料夾

利用Samba伺服器在Ubuntu系統和Win7系統間共享資料夾

1 介紹

  現在是網路化的時代,我們每個人要更好的發展,離不開網路化、資訊化的支援。利用網路的支援,在不同的作業系統間共享檔案等資訊,是計算機專業學生必備的一項技能。本文所講的就是如何建立、設定、連結Samba伺服器,使得處在網路中的兩臺電腦,一臺裝的是Ubuntu作業系統,一臺裝的是Win7,通過共享資料夾的形式來共享資訊。這兩臺電腦在網路上處的位置和網路架構為圖1所示。


在圖1的兩臺電腦實際上它們的物理位置都在我旁邊,只是由於物理RJ47埠太少,就只有讓桌上型電腦連線到Rj47埠上,而我的膝上型電腦則通過無線路由器連線到網路上。為了方便這兩臺電腦間的檔案和資訊交流,我就想通過共享資料夾的方式實現這個功能。如果兩臺電腦都是

windows系統的話好辦,但現在一個是Ubuntu系統,一個Win7系統,怎麼實現共享資料夾的功能呢?在參照文獻[1]的基礎上,利用Samba伺服器,我順利實現了該功能。請看下面的詳細介紹。

2 建立和配置一個Samba伺服器

  由於要實現網路上Ubuntu系統與Win7系統之間共享資料夾,而Samba伺服器是一個在Ubuntu系統上支援與windows系統檔案互動等功能的伺服器,我們的思路自然就是:在臺式機上建立一個Samba伺服器,而Win7系統以客戶端的方式訪問伺服器上共享出來的資料夾,也就是Utuntu系統上的資料夾。Samba於1992年出現,它最初的目的就是方便Unix系統與Windows系統間共享檔案,但又不限於此,也支援各種不同系統之間的互動共享檔案,例如Ubuntu對Ubuntu,Mac OS對Mac OS等等。

2.1 安裝Samba伺服器

  如果你使用的是Ubuntu Server distribution,它本身就會預裝,你可以跳過此步驟,直接進入下一步驟。如果你使用的是普通的Ubuntu distribution,則它本身沒有安裝,需要你先安裝Samba。你可以通過Ubuntu Software Center以圖形化的方式來安裝Samba,也可以以Terminal命令的方式來安裝。以Terminal方式安裝的命令如下:
    sudo apt-get install samba
    sudo apt-get install smbfs

2.2 確定一個在Ubuntu系統上要共享的資料夾

  這個資料夾可以是一個事先存在的資料夾。如果你為了不讓共享資料夾與你的其他資料夾混淆,最好新建一個單獨的資料夾專門用作共享。用以下Terminal命令建立要共享的資料夾,並賦予其讀寫的許可權:
      sudo mkdir /home/share
      sudo chmod 777 /home/share

2.3 編輯smb.conf檔案

  為了讓網路上的其他電腦以客戶端的方式訪問Samba伺服器,你首要做的事情就是配置/etc/samba/smb.conf檔案。該配置檔案類似於Windows下的ini檔案,方便管理人員配置伺服器的相關資訊。請更隨以下步驟:

    1.利用一個編輯器開啟smb.conf檔案。由於該檔案需要許可權才能修改,不要利用直接點選的方式開啟,最好使用命令sudo vim /etc/samba/smb.conf或者sudo gedit              /etc/samba/smb.conf的方式開啟。

    2.找到[global]下面的內容將workgroup = WORKGROUP前面的分號(;)去掉(分號打頭的代表的是註釋),並在它的後面新增內容,最終變為   

          workgroup = WORKGROUP
          display charset = UTF-8
          unix charset = UTF-8
          dos charset = cp936

    3.找到security = user這一行,將其前面的分號去掉,並在其後面新增內容,最終變為:
          security = user
          username map = /etc/samba/smbusers

    4.將要共享的資料夾新增到Samba伺服器上,並指定允許訪問的使用者。通過以下來實現,在檔案的末尾新增以下內容(當然,以下的內容你也可以通過圖形化的Samba配置管       理器來設定,設定後,在本檔案裡會自動體現。):
       [share] //windows系統下顯示的要共享的名
       comment = test whether the method is good //註釋,你用於共享新增的註釋,可以提供共享的目的
       path = /home/share //前面步驟在Ubuntu系統上建立的用於共享的資料夾
       public = yes
       writeable = yes
       valid users = chgzhi //訪問Samba伺服器的使用者,但它必須又是一個Ubuntu使用者,同時還必須一個單獨的不同於登入Ubuntu系統的密碼當然你可讓它們一致。
      create mask = 0700
      directory mask = 0700
      force user = nobody
      force group = nogroup
      available = yes
      browseable = yes

     5. 儲存並退出該檔案的編輯過程。

2.4 定義Samba使用者的訪問密碼

  注意,只要已經合法存在的Ubuntu系統的使用者才可以作為Samba伺服器的使用者。現在假定你Ubuntu系統已經有一個使用者chgzhi,這正是在上小節中我們設定的使用者(valid users = chgzhi)。我們現在要做的是給改使用者設定相應的密碼,如果是初次設定密碼採用以下命令:

                            sudo smbpasswd -achgzhi
  如果你早前一設定過此密碼,則去掉引數a。

2.5 重新啟動Samba伺服器

  由於剛剛重新配置了伺服器,此時我們最好重新啟動伺服器,使用的命令如下:
                          sudo service smbd restart

3 關閉防火牆

  因為Ubuntu系統處於伺服器的地位,所以我們只需要關閉Ubuntu系統的防火牆即可,對於Win7系統的防火牆不需要關閉。命令如下:
                         sudo ufw disable
  至此,伺服器端我們需要做的工作已經完畢,接下來就是利用客戶端連線共享的檔案夾了。

4 客戶端連線

4.1 smbclient客戶端程式

  這是一個Samba 伺服器程式自帶的客戶端命令列程式,它支援在另外一臺Ubuntu系統已裝Samba 的情況下的訪問。在此我們利用它測試剛建立的伺服器是否成功。如下圖2 所示。 我們這裡只是本機測試,並沒有利用另外的一臺電腦連線Samba伺服器。圖2中可以看出,我們連線成功,並且進入了客戶端互動命令提示符(smb: \>),有各種各樣的命令可供你使用,具體的請參看文獻[1] 的第535頁的表22-2。圖中輸入的密碼時你利用2.4節的方法設立的密碼。我已經在享受共享資料夾帶來的便利,圖2就是在臺式機的buntu系統上截圖而得,並通過共享資料夾允許Win7系統訪問,而本文的書寫是在Win7 系統上進行的。


Figure 2 smbclient客戶端程式示例

4.2 利用Win7系統以客戶端的形式連線Samba伺服器

  在裝有Win7系統的筆記本上來訪問Ubuntu 電腦上設定的共享資料夾,過程很簡單,不需要轉任何的客戶端程式。

    1.點選MyComputer 出現圖3,再點選圖中的Map network drive,然後出現圖4。


    2.在圖4中的folder 文字框中輸入Ubuntu 機器的IP 地址和共享的資料夾名share。點選finish 出現圖5。

   

Figure 4 Win7連線示意        

    3.在圖5中輸入你的Samba帳戶,也就是在2.4節建立的,點選Ok 按鈕。令人激動的時刻到了,連線成功,如圖6。你可以自由自在的在兩個不同的作業系統間共享檔案了,       享受網路化帶來的成果吧!


Figure 5 Win7 連線---輸入Samba使用者名稱和密碼


Figure 6 在Win7 系統下連線的Samba 伺服器共享的資料夾share

5 總結

  本文講述的共享資料夾設定的方法,要求讀者具有Ubuntu 使用的基本知識,特別是Terminal 下Bash Shell的使用。關於Ubuntu 系統基本使用方法的介紹,推薦書籍[1]。該書類似於大學新生入學針對Windows 系統的《計算機文化基礎課程》,但更實用化。我相信,本文介紹的方法僅僅是一種方法而已,肯定存在更好的共享資料夾的方法。如果哪位讀者有更好的方法,請賜教。

References
[1] Richard Blum. Ubuntu Linux Secrets. Wiley, Indianapolis, IN, 2009.