[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/ 谢谢!