[Linux/RPi]用SAMBA在家中共用檔案

Posted on Updated on

範疇:Linux, Raspberry Pi Project
程度:中
簡述:教授掛載外置硬碟的方法;利用SAMBA共用Linux系統的檔案

家中有一部PC和一部Notebook,平常要在兩部電腦之間互傳檔案都會用HomeGroup,亦即是我們從前認識的「網絡上的芳鄰」,相信不少人都用慣了,如果真的不知道是什麼的話請自行Google。用了這個後兩部電腦猶如合為一體,我可以在PC上開啟Notebook上的檔案,又可以將Notebook上的檔案傳回PC,使用方式和一般存取的方式幾乎一模一樣。

不過,現在手上多了一部行Linux的Raspberry Pi,還給它搭上了一個外置硬碟。本來想用這樣的配置來做File Server,方便我做Backup、日常取用和其他用途,可是Linux本身並無法與Windows的HomeGroup相容,如果用WinScp、FileZile等來傳檔案的話又比較不方便,更無法直接開啟檔案,所以要另外想些辦法來解決。

其實解決方案早於90年代已經出現,1991年時有一個名叫 Andrew Tridgell 的博士研究生為解決相同問題,特意探取Windows網絡共用所用的Protocol來進行逆向工程,最終編寫出Server Message Block (SMB),使Linux可以與Windows網絡共用相容。由於美國商標注冊的限制,軟件最終取名SAMBA。這個軟件到今時今日仍受Linux用家愛戴,現在就讓我們一起森巴舞吧!

所需軟件:

  • samba
  • samba-common-bin
  • ntfs-3g

Part 1: 掛載外置硬碟

Raspberry Pi用SD卡來作儲存裝置,空間緊拙,實在不適合作為File Server。所以在開始之前,我會先額外教大家掛載外置硬碟:

1. 連接硬碟

首先,當然是要將硬碟接上電腦。對,就是將USB線插上!

然後使用fdisk查看新加的外置硬碟是在哪個接口(需要sudo)。以我為例,現在我的外置硬碟就在/dev/sda1

# sudo fdisk -l

Disk /dev/sda: 2000.4 GB, 2000365289472 bytes
255 heads, 63 sectors/track, 243197 cylinders, total 3906963456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0d0af321

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  3906963455  1953480704    7  HPFS/NTFS/exFAT

2. 掛載硬碟

在掛載之前,我們需要為硬碟劃定一個固定位置,以便共用,現在我會在/media建立一個名為WDMyBook的資料夾,作為外置硬碟的存取點:

# cd /media
# mkdir WDMyBook

接著,就正式將硬碟掛上:

# sudo mount -t ntfs-3g /dev/sda1 /media/WDMyBook

-t後面是指定裝置的格式,因為我的外置硬碟使用NTFS格式,需要ntfs-3g這個driver來進行存取,Raspbian原生沒有這個Driver,需另行安裝:

# sudo apt-get install ntfs-3g

3. 設定開機自動掛載硬碟

現在你只要瀏覽/media/WDMyBook的話應該就可以見到硬碟內的檔案了,不過到你下次重新開機,一切都會打回原型。要每次開機都自動mount上硬碟的話,就要修改/etc/fstab這個開機掛載設定檔:

# sudo vi /etc/fstab

; 請在檔案內加入以下一行:
/dev/sda1       /media/WDMyBook ntfs-3g defaults   0       2

“/dev/sda1″是裝置位置;"/media/WDMyBook"是掛載位置;"ntfs-3g"是儲存格式;"defaults"是掛載時的設定,使用預設已足夠;"0″是dump backup,不用開啟;"2″是fsck 檢驗,優先度設定為2,不用跟主要磁區搶。

現在,你每次開機外置硬碟都會自動掛載好了!

Part 2: 安裝SAMBA

1. 安裝SAMBA

返回正題,我們開始要安裝samba了,我們除了samba主程式外,還需要samba-common-bin來執行需要的功能:

# sudo apt-get update
# sudo apt-get install samba, samba-common-bin

2. 建立帳號

安裝完成後,你需要建立登入的帳號,這裡要注意帳號名稱必須和你在Linux上的帳戶一樣:

# sudo smbpasswd -a USERNAME   ; USERNAME為你的Linux系統上一個用戶的名稱
; 輸入密碼兩次
; smbpasswd是舊式方法,不過亦足夠使用
; 更改密碼也是要用smbpass,但不用輸入-a

; 以下是新式方法
# sudo pdbedit -a USERNAME
; 輸入密碼兩次
; 有關pdedit的其他功能請參考 pdbedit -h

3. 設定smb.conf

現在來到最重要一步,設定你要共用的檔案,設定檔位於/etc/samba/smb.conf,打開後你會發現裡面已經有預設的設定和詳細說明,你可以參考說明自行配置,以下解釋其中一些基本設定。

[global]底下的是系統設定,大多設定都可按預設,但需留意以下參數:

workgroup = WORKGROUP
; 工作群組名稱,WORKGROUP是Windows預設的名稱,所以一般不用更改

security = user
; 設定為user的話就需要使用者登入方可存取檔案,需要設定為user

; 下面是有關共用Printer的設定,在第182行附近,如不用share printer建議這樣設定:
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes

; uncomment下面這句或有助連線速度,這句在207行左右:
socket options = TCP_NODELAY

接著到下面會有[homes]的一項,這是一個特殊項目,會指向使用者的home目錄,設定解說如下:

[homes]
   comment = Home Directories   ; 純粹是目錄描述
   browseable = no   ; 設定此目錄可否被所有人看見,注意這只是看見,並不代表可以進入存取
   read only = yes   ; 設定檔案是否為唯讀,
   ;writable = yes  ; 與read only相反,這兩句只需選擇一個,所以comment out
   create mask = 0700   ; 設定新增檔案的預設權限
   directory mask = 0700   ; 設定新增目錄的預設權限
   valid users = %S    ; 允許存取的使用者,對於homes一般使用%s,這樣就限定使用者只能進入自己的home

以上的設定已經可以讓你進入到自己的home目錄。因為home是使用者的根目錄,等同可以存取使用者的所有個人檔案,因安全性問題所以建議只作唯讀(read only = yes),然後另外設置其他共用資料夾作讀寫。

要設立共用資料夾,做法和上面基本一樣,只是將[homes]改為其他名稱,其他可用的設定基本一樣,你可根據自己需要調節,另外要加上一句"path = xxx"來指定共用資料夾的所指位置。

以下的例子是共用我的外置硬碟,讓使用者"Archer", “King"可以進入並享有正常讀寫權限:

[MyBook]
   comment = External Hard disk on RaspberryPi
   brwoseable = yes   ; 讓任何人都可以看到此目錄
   writable = yes   ; 讓使用者可以修改檔案
   create mask = 0700
   directory mask = 0700
   valid users = Archer, King
   path = /media/WDMyBook   ; 當使用者從網絡進入MyBook後,實際會連到/media/WDMyBook這個位置

你會發現檔案下面還有例如[profiles]、[printers]之類的共用資料夾,但這些我們暫時都不會用到,而且預設也是停用的,所以不用理會。

4. 檢查設定

好了,現在你已經設定好兩個共用資料夾,分別是你自己的home和外置硬碟的空間,接下來你可以用以下指令檢查你的設定是否有誤:

# testparm

假如出現"Loaded services file OK."這句,代表設定基本沒有問題,否則請按錯誤描述進行修正。

當出現"Press enter to see a dump of your service definitions"後,按下enter便會產生一份設定報告供你參考。

5. 重啟服務

最後,只要重新啟動samba的service,samba這一邊就完成啦!

# sudo /init.d/samba restart
[ ok ] Stopping Samba deamons: nmdb smdb.
[ ok ] Starting Samba deamons: nmdb smdb.

Part 3: Windows端連線

辛辛苦苦來到這一步,最重要當然是要讓Windows可以存取Raspberry Pi上的資料啦,接下來的工作就簡單得多了,不過還是有些地方要留心。

1. 透過家用網路連線

當你打開「電腦」後,你應該已經可以在左邊欄的「網絡」內看到新的成員了!

Pi0

當你點選你的新成員(ARCHER-PI),即可輸入使用者名稱和密碼登入,必須注意如果要切換使用者的話會比較麻煩,所以請儘量使用單一使用者存取共用檔案。

登入後你可以看到對登入的使用者共用的資料夾:

Pi1

你可以右擊一個資資夾,將它設定為網絡磁碟機,方便進入:

pi2

然後你可以在「電腦」中看到你的共用資料夾變成了一個網絡磁碟:

pi4

你亦可以在「電腦」上方選擇「連線網絡磁碟機」來手動建立。

2. 切換使用者

要切換到另一個使用者存取只有該使用者方可存取的共用文件,你必須登出,因為一部電腦只能同時使用一個使用者登入到其他電腦。但Windows似乎沒有方便的方法讓你直接登出SAMBA上的使用者,如果要登出,只好透過command將現有所有連線砍掉。

另外,你還要在「電腦」中將所有已連接的網絡磁碟機中斷:

pi6

pi5

然後,在網址列輸入:\\IP or NetName\Username,例如\\Archer-Pi\King,Windows即會嘗試登入另一使用者,輸入使用者名稱和密碼後應該就可以切換了。不過這個方法有時都會失敗,或許需要重新開機方能完全斷開連線。

教學就此完結,有空再教建立VPN的方法,使你可以在戶外安全地經Raspberry Pi連到家用網絡存取資料。


下面來個bouns:Raspberry Pi File Server + 小型影院

DSC_2655

廣告

One thought on “[Linux/RPi]用SAMBA在家中共用檔案

    2014網誌年結:諷刺的一年 « 青鳥脈博 said:
    31/12/2014 at 下午 11:17

    […] [Linux/RPi]用SAMBA在家中共用檔案 […]

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s