標籤:android des style blog http color
在上一節中,我們講述了如何在路由器上掛載隨身碟,以及如何通過改造隨身碟提升路由器的儲存和資料處理能力。通過增加USB掛載,為我們後續進行智能家居構建提供了保障。
在本節中,我將簡單介紹如何在路由器上建立網路檔案分享權限設定服務。
一、為何要建立檔案分享權限設定服務:
在智能家居網路中,一個很重要的需求就是安全。當一個智能家居方案部署之後,使用者往往最先考慮的也是安全問題。那麼怎樣進行安全管理呢?一種常用的解決方案是即時的監控感應器以及家電的狀態,一旦發生異常,通過郵件、簡訊甚至打電話的方式通知使用者。當使用者接收到異常之後,往往需要確認出問題的地方,這時候就需要用到檔案分享權限設定服務了。
此外,當使用者通過路由器進行BT離線下載之後,不能直接在路由器上播放音視頻檔案,需要通過PC、手機、pad等裝置進行訪問。這時候也需要路由器提供檔案分享權限設定服務。
二、什麼是網路檔案分享權限設定服務
在瞭解如何搭建網路檔案分享權限設定服務之前,我們有必要先瞭解什麼是網路檔案分享權限設定。本文所提到的“網路檔案分享權限設定服務”是指一系列為分布在不同網路主機上的檔案提供訪問、修改、增加以及刪除操作的服務集合。從功能上,我們可以簡單地將這些服務分成兩個部分,檔案訪問服務以及檔案傳輸服務。
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伺服器,從而提供區域網路與廣域網路檔案分享權限設定服務。
三、如何在Openwrt系統中搭建Samba伺服器
我在搭建Samba伺服器的時候,參考了http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=4543&highlight=
(1)安裝Samba軟體以及瀏覽器支援
opkg update
opkg install samba3opkg 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
四、如何在Openwrt系統中搭建vsFtp伺服器
相比於之前複雜的操作,vsFTP的安裝則相當簡單。參考http://www.wirelesser.net/index.php/tag/openwrt-vsftp/
(1)安裝vsFTP,使用如下命令:
opkg updateopkg install vsftpd
(2) 配置/etc/vsftpd.conf
根據是否允許anonymous登入,選擇不同的設定檔:
允許anonymous:
background=YESlisten=YESchown_uploads=YESchown_username=rootftp_username=nobody#enable anonymous useranonymous_enable=YESanon_upload_enable=YESanon_root=/mnt/anonymousanon_mkdir_write_enable=YESanon_max_rate=512000local_enable=YESwrite_enable=YESlocal_umask=022check_shell=NOlocal_root=/mntchroot_local_user=yesaccept_timeout=60idle_session_timeout=300max_clients=600max_per_ip=5#dirmessage_enable=YESftpd_banner=Welcome to vsFTP service.session_support=NOsyslog_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 #允許開機自啟動
五、補充說明
一般情況下,Samba檔案分享權限設定服務是在區域網路環境下使用的,這樣較為安全。我們可以將Samba伺服器掛載到本地檔案系統中,使用者可以將其當成系統的一個分區使用,簡單而方便。
對於ftp檔案傳輸伺服器來說,建議使用匿名訪問機制,允許使用者訪問以及下載,限制使用者的上傳以及修改許可權,這樣更為安全。
---------------------------------------------------------------
預告:下一節將介紹DDNS安裝
轉載請註明出處: http://www.cnblogs.com/double-win/ 謝謝!