範疇: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. 透過家用網路連線
當你打開「電腦」後,你應該已經可以在左邊欄的「網絡」內看到新的成員了!
當你點選你的新成員(ARCHER-PI),即可輸入使用者名稱和密碼登入,必須注意如果要切換使用者的話會比較麻煩,所以請儘量使用單一使用者存取共用檔案。
登入後你可以看到對登入的使用者共用的資料夾:
你可以右擊一個資資夾,將它設定為網絡磁碟機,方便進入:
然後你可以在「電腦」中看到你的共用資料夾變成了一個網絡磁碟:
你亦可以在「電腦」上方選擇「連線網絡磁碟機」來手動建立。
2. 切換使用者
要切換到另一個使用者存取只有該使用者方可存取的共用文件,你必須登出,因為一部電腦只能同時使用一個使用者登入到其他電腦。但Windows似乎沒有方便的方法讓你直接登出SAMBA上的使用者,如果要登出,只好透過command將現有所有連線砍掉。
另外,你還要在「電腦」中將所有已連接的網絡磁碟機中斷:
然後,在網址列輸入:\\IP or NetName\Username,例如\\Archer-Pi\King,Windows即會嘗試登入另一使用者,輸入使用者名稱和密碼後應該就可以切換了。不過這個方法有時都會失敗,或許需要重新開機方能完全斷開連線。
教學就此完結,有空再教建立VPN的方法,使你可以在戶外安全地經Raspberry Pi連到家用網絡存取資料。
下面來個bouns:Raspberry Pi File Server + 小型影院
引用通告: 2014網誌年結:諷刺的一年 « 青鳥脈博