[Openwrt項目開發筆記]系列文章傳送門:http://www.cnblogs.com/double-win/p/3888399.htmlphp
正文:html
在上一節中,咱們講述瞭如何在路由器上掛載U盤,以及如何經過改造U盤提高路由器的存儲和數據處理能力。經過增長USB掛載,爲咱們後續進行智能家居構建提供了保障。ios
在本節中,我將簡單介紹如何在路由器上創建網絡文件共享服務。web
1、爲什麼要創建文件共享服務:shell
在智能家居網絡中,一個很重要的需求就是安全。當一個智能家居方案部署以後,用戶每每最早考慮的也是安全問題。那麼怎樣進行安全管理呢?一種經常使用的解決方法是實時的監控傳感器以及家電的狀態,一旦發生異常,經過郵件、短信甚至打電話的方式通知用戶。當用戶接收到異常以後,每每須要確認出問題的地方,這時候就須要用到文件共享服務了。windows
此外,當用戶經過路由器進行BT脫機下載以後,不能直接在路由器上播放音視頻文件,須要經過PC、手機、pad等設備進行訪問。這時候也須要路由器提供文件共享服務。瀏覽器
2、什麼是網絡文件共享服務安全
在瞭解如何搭建網絡文件共享服務以前,咱們有必要先了解什麼是網絡文件共享。本文所提到的「網絡文件共享服務」是指一系列爲分佈在不一樣網絡主機上的文件提供訪問、修改、增長以及刪除操做的服務集合。從功能上,咱們能夠簡單地將這些服務分紅兩個部分,文件訪問服務以及文件傳輸服務。bash
1. 文件傳輸服務服務器
文件傳輸服務是基於文件傳輸協議的,對於這麼文縐縐的稱呼有些人可能比較陌生,不過相信你們都聽過其英文簡稱FTP(File Transfer Protocol)。該協議用於Internet上,控制文件的雙向傳輸。
優勢:安全,可靠。
缺點:上傳下載每個文件都須要鑑權操做,效率低。
2.文件訪問服務
準確來講呢,應該稱爲網絡文件訪問服務。該服務主要用於網絡中不一樣主機對某一個主機上的文件進行訪問和讀取。經常使用的網絡文件訪問服務有NFS和Samba。
(1)NFS(Network File System)
NFS是一種使用於分散式文件系統的協定。其功能是經過網絡讓不一樣的機器、不一樣的操做系統可以彼此分享個別的數據,讓應用程序在客戶端經過網絡訪問位於服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。
(圖片摘自《鳥哥的Linux私房菜》NFS篇)
NFS是一個獨立的系統,對NFS進行訪問和處理,須要經過NFS系統提供的RPC(Remote Procedure Call)操做。
優勢:集中存儲數據,大大節省本地存儲資源。至關於Linux下的網絡鄰居。
缺點:安全性差,僅支持Linux,擴展性差。
(2)Samba
在百度百科上的介紹極爲精簡:Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。
那麼什麼又是「SMB協議」呢?SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通訊協議,它爲局域網內的不一樣計算機之間提供文件及打印機等資源的共享服務
在Samba的官方網站上,有以下描述:Since 1992, Samba has provided secure, stable and fast file and print services for all clients using the SMB/CIFS protocol, such as all versions of DOS and Windows, OS/2, Linux and many others.
從描述中咱們能夠看出,Samba與NFS在功能上是相仿的,不一樣點在於其跨平臺性質,Samba支持DOS、Windows、OS/2,Linux以及其餘平臺訪問。
Tips: 今天特意嘗試了一下,在沒有取得root權限的Android手機上貌似沒法使用Samba訪問。若是有哪位親,知道如何使用,請在回帖中指導指導~
3. Samba,Ftp以及NFS區別:
從跨平臺角度說 samba和ftp都支持跨平臺操做, 而nfs不支持windows平臺 從掛載角度說, samba, nfs能夠把遠程目錄掛載到本地目錄上, 對用戶是透明的. 而ftp則不行 從使用範圍上說, samba, nfs安全性比較差,最好是限定在局域網內.
而ftp則不一樣,其提供了鑑權機制,既能夠面向內網, 也能夠面向公網. 從面向對像來講, 三者都支持文件, 但samba還支持打印機, 以及做windows域管理器.
從性能的角度說,
Samba,nfs要優於Ftp。
路由器做爲智能家居的控制中心,其具備跨平臺,跨網絡的特性。而從上面的比較能夠看出,單獨使用Samba或者Ftp都不足以知足咱們進行文件服務的目的。所以,在本項目中,咱們經過搭建Samba和Ftp服務器,從而提供局域網與廣域網文件共享服務。
3、如何在Openwrt系統中搭建Samba服務器
我在搭建Samba服務器的時候,參考了http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=4543&highlight=
(1)安裝Samba軟件以及瀏覽器支持
opkg update
opkg install samba3
opkg install luci-app-samba
(2)修改Samba template configuration文件(/etc/samba/smb.conf.template)
[global] netbios name = |NAME| workgroup = |WORKGROUP| server string = |DESCRIPTION| syslog =10 encrypt passwords = true passdb backend = smbpasswd obey pam restrictions = yes socket options = TCP_NODELAY #unix charset = ISO-8859-1 display charset = UTF-8 #添加字符集支持,容許中文 unix charset = UTF-8 dos charset = UTF-8 preferred master = yes os level =20 security = user guest accout = nobody
#invalid users = root #系統默認不容許root用戶訪問 smb passwd file = /etc/samba/smbpasswd
Tips: Samba服務器自己是沒法解析openwrt UCI的。爲了與Openwrt兼容,Samba提供了一個配置模版,容許用戶進行簡單的參數設置。
在啓動Samba服務器的時候,Samba會經過讀取/etc/config/samba以及/etc/samba/smb.conf.template生成一個可以被Samba解析的臨時配置文件/tmp/smb.conf,用於Samba服務器使用。
修改/etc/config/samba 文件,添加共享文件夾的訪問權限:
config ‘samba’ option ‘homes’ ’1′ option ‘name’ ‘openwrt’ option ‘description’ ‘nas’ option ‘workgroup’ ‘openwrt’ config ‘sambashare’ option ‘read_only’ ‘no’ option ‘create_mask’ ’0700′ option ‘dir_mask’ ’0700′ option ‘guest_ok’ ‘yes’
option ‘path’ ‘/mnt/sda3’ # 我本人USB有三個分區,第三個分區用於Samba、FTP以及Transmission 脫機下載目錄 option ‘name’ ‘root’
(3)給Samba建立用戶訪問:
使用以下命令給訪問Samba服務器的用戶建立密碼,建議建立新的密碼,不要 smbpasswd root XXXX #爲root用戶建立Samba訪問密碼XXXX。若是成功建立好的密碼,會存放在 /etc/samba/smbpasswd 文件下
Tips:從Samba建立密碼的方式能夠看出,密碼是在本地有存儲的。當用戶忘記密碼時,能夠提請Admin用戶(root)進行密碼修改。
(4) 啓動Samba服務
/etc/init.d/samba restart #重啓Samba服務 /etc/init.d/samba enable #容許開機自啓動
(5)經過終端訪問
在web瀏覽器,或者文件瀏覽器地址欄輸入:
file://192.168.1.1/
能夠獲得以下結果:
(6) 補充:經過Luci配置Samba
4、如何在Openwrt系統中搭建vsFtp服務器
相比於以前複雜的操做,vsFTP的安裝則至關簡單。參考http://www.wirelesser.net/index.php/tag/openwrt-vsftp/
(1)安裝vsFTP,使用以下命令:
opkg update
opkg install vsftpd
(2) 配置/etc/vsftpd.conf
根據是否容許anonymous登陸,選擇不一樣的配置文件:
容許anonymous:
background=YES listen=YES chown_uploads=YES chown_username=root ftp_username=nobody #enable anonymous user anonymous_enable=YES anon_upload_enable=YES anon_root=/mnt/anonymous anon_mkdir_write_enable=YES anon_max_rate=512000 local_enable=YES write_enable=YES local_umask=022 check_shell=NO local_root=/mnt chroot_local_user=yes accept_timeout=60 idle_session_timeout=300 max_clients=600 max_per_ip=5 #dirmessage_enable=YES ftpd_banner=Welcome to vsFTP service. session_support=NO syslog_enable=YES
不容許匿名訪問的話:
secure_chroot_dir=/mnt/sda3/ftpdir #建立對應的文件夾 ftp_username=root #容許的用戶名root nopriv_user=root background=YES listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 check_shell=NO dirmessage_enable=YES ftpd_banner=Welcome to vsFTP service. syslog_enable=YES max_clients=600 max_per_ip=5 accept_timeout=60 #設置鏈接超時
(4) 啓動vsftpd服務
/etc/init.d/vsftpd restart #重啓vsftpd服務 /etc/init.d/vsftpd enable #容許開機自啓動
5、補充說明
通常狀況下,Samba文件共享服務是在局域網環境下使用的,這樣較爲安全。咱們能夠將Samba服務器掛載到本地文件系統中,用戶能夠將其當成系統的一個分區使用,簡單而方便。
對於ftp文件傳輸服務器來講,建議使用匿名訪問機制,容許用戶訪問以及下載,限制用戶的上傳以及修改權限,這樣更爲安全。
---------------------------------------------------------------
預告:下一節將介紹DDNS安裝
轉載請註明出處: http://www.cnblogs.com/double-win/ 謝謝!