[Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html
正文:
在上一节中,我们讲述了如何在路由器上挂载U盘,以及如何通过改造U盘提升路由器的存储和数据处理能力。通过增加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 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 =
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 =
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’ ’′
option ‘name’ ‘openwrt’
option ‘description’ ‘nas’
option ‘workgroup’ ‘openwrt’ config ‘sambashare’
option ‘read_only’ ‘no’
option ‘create_mask’ ’′
option ‘dir_mask’ ’′
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 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=
check_shell=NO
local_root=/mnt
chroot_local_user=yes
accept_timeout=
idle_session_timeout=
max_clients=
max_per_ip=
#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 #允许开机自启动
五、补充说明
一般情况下,Samba文件共享服务是在局域网环境下使用的,这样较为安全。我们可以将Samba服务器挂载到本地文件系统中,用户可以将其当成系统的一个分区使用,简单而方便。
对于ftp文件传输服务器来说,建议使用匿名访问机制,允许用户访问以及下载,限制用户的上传以及修改权限,这样更为安全。
---------------------------------------------------------------
预告:下一节将介绍DDNS安装
转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!
[Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)的更多相关文章
- [openwrt 项目开发笔记]: 传送门
“Openwrt 项目开发笔记”系列传送门: [Openwrt 项目开发笔记]:Openwrt平台搭建(一) (2014-07-11 00:11) [Openwrt 项目开发笔记]:Openwrt平台 ...
- [Openwrt 项目开发笔记]:USB挂载& U盘启动(三)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一篇中,我结合Netgear Wndr370 ...
- [Openwrt 项目开发笔记]:DDNS设置(五)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我主要讲述了如何在Openwrt上安 ...
- [Openwrt 项目开发笔记]:PHP+Nginx安装(七)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们已经搭建了MySQL数据库了,因 ...
- [Openwrt 项目开发笔记]:MySQL配置(六)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在本人的项目中,运行在路由器上的服务器采用Ngi ...
- [Openwrt 项目开发笔记]:Openwrt必要设置(二)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 前面的两篇blog中,我将如何搭建Openwrt ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)补遗
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 昨晚上熬夜写了[Openwrt项目开发笔记]:O ...
- [开发笔记]-控制Windows Service服务运行
用代码实现动态控制Service服务运行状态. 效果图: 代码: #region 启动服务 /// <summary> /// 启动服务 /// </summary> /// ...
随机推荐
- luoguP1064 金明的预算方案 (有依赖的背包问题)
题目链接:https://www.luogu.org/problemnew/show/P1064 这是一个有依赖的背包问题,属于01背包的变式.这题还好,每个主件最多有2个附件,那么在对主件进行背包的 ...
- Only POT texture can be compressed to PVRTC format
在图片压缩格式 报这个Warning的时候,意思是该图片必须要采用2的幂次方大小才能使用该格式. POT: Power of Two. 采取方式是在advanced里边,把Non Power of 2 ...
- PyQt5信号与槽
简单使用 可以使用designer的一个模式定义,也可以自己定义,在__init__函数里,self.btn.clicked.connect(self.text.clear). 注意:槽不用加括号,可 ...
- Zabbix监控PostgreSQL
目录 Zabbix监控PostgreSQL 1. 安装libzbxpgsql 2. 配置zabbix配置文件zabbix_agentd.conf 3. 创建监控用户 4. 导入监控模板 5. 主机链接 ...
- vue小常识小注意
1,跨域携带cookie,加一个拦截器,能后加上request.credentials=true就可以了 Vue.http.interceptors.push(function(request, ne ...
- asp.net (jquery easy-ui datagrid)通用Excel文件导出(NPOI)
http://www.cnblogs.com/datacool/archive/2013/03/12/easy-ui_datagrid_export_excel_asp_net.html
- sklearn中的分词函数countVectorizer()的改动--保留长度为1的字符串
1简述问题 使用countVectorizer()将文本向量化时发现,文本中长度唯一的字符串会被自动过滤掉,这对于我在做的情感分析来讲,一些表较重要的表达情感倾向的词汇被过滤掉,比如文本'没用的东西, ...
- Spring boot 出现的时间
Spring 4.0 ~ 4.3 不管商业操作如何,Spring还是继续发展, 2013年12月, Spring4.0 发布,这个版本开始支持JDK8 , 甚至比JDK8 的GA版本还要早3个月! 2 ...
- javascript 字符数组转换成以逗号隔开的字符串
var ids = [];angular.forEach(pulsarServers,function (server) { ids.push(server.id);});ids = ids.join ...
- 理解指令的restrict属性(转)
restrcit属性说明 restrict: EACM中的任意一个之母.它是用来限制指令的声明格式的. E - 元素名称:<my-directive></my-directive&g ...