[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 updateopkg 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 =10encrypt passwords = truepassdb backend = smbpasswdobey pam restrictions = yessocket options = TCP_NODELAY#unix charset = ISO-8859-1display charset = UTF-8 #添加字符集支持,允许中文unix charset = UTF-8dos charset = UTF-8preferred master = yesos level =20security = userguest 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 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=YESlisten=YESanonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022check_shell=NOdirmessage_enable=YESftpd_banner=Welcome to vsFTP service.syslog_enable=YESmax_clients=600max_per_ip=5accept_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/ 谢谢!
转载于:https://www.cnblogs.com/double-win/p/3848797.html
[Openwrt 项目开发笔记]:Samba服务vsFTP服务(四)相关推荐
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- Vue项目开发中优雅的切换服务端ip
Vue项目开发中优雅的切换服务端ip 在进行Vue开发的时候,需要配置项目对应服务端的ip地址,但如果需要在多个服务端间进行切换,通常的做法是:手动修改vue.config.js配置文件中的服务端ip ...
- 京东投票项目开发笔记
京东投票项目开发笔记 打开项目 $yarn install / $ npm install: 跑环境(把项目依赖的插件进行安装) $node admin.js: 启服务(把自己的计算机作为服务器,创建 ...
- 京东抽奖项目开发笔记
京东抽奖项目开发笔记 前言: 这是一个独立项目,这个项目会由我们四个人来一起完成,所以首先就要分工合作,我是写前端的,所以我会先把基本的页面写出来 1.注册页 这是注册页的代码 <!DOCTYP ...
- 尚硅谷前端项目开发笔记
尚硅谷前端项目开发笔记 B站视频直达,这个项目亮点在于所有 API 请求都并非在组件内编写,而是在组件内使用this.$store.dispatch() 派发任务,再由 Vuex(actions.mu ...
- Vue PC商城项目开发笔记与问题汇总
Vue PC商城项目开发笔记与问题汇总 负责PC端商城项目,这也是人生第一个真正的项目.刚做了一天,就遇到不少问题,在这里列出自己的问题与解决办法,与大家交流,提升自己,希望以后不会掉进同一个坑里. ...
- 天天生鲜项目开发笔记
天天生鲜项目开发笔记 说在前面的话 大学四年,忙忙碌碌,什么都学了,又好像什么都没学,总之要毕业了,毕设题目是"生鲜配送系统",B站上找到了一个天天生鲜的项目开发教程,之后文章记录 ...
- 游戏系统开发笔记(六)——服务端架构设计
. http://blog.csdn.net/mooke/article/details/8913051 上回写了写服务端的分层结构,分层是比较宏观上的东西,至于层次间具体的交互方式还得通过各个模块的 ...
- 黑马瑞吉外卖项目开发笔记
目录 软件开发整体介绍 开发流程 角色分工 软件环境 瑞吉外卖项目介绍 项目介绍 产品原型展示 技术选型 功能架构 角色 开发环境搭建 数据库环境搭建 Maven环境搭建 1.直接创建maven项目( ...
最新文章
- rgb fusion检测不到显卡_7000元AMD平台装机:3600X配RTX2060显卡怎么样
- 求n个数中第k大的数_互联网高频面试题目:「回溯算法」求组合总和
- 仿照vue实现简易的MVVM框架(一)
- 顺利达成微软HacktoberFest 2018
- 引导修复 不是活动的_河南省视频数据修复中心
- 【CodeForces - 798D】Mike and distribution (思维构造,贪心,黑科技)
- STL工作笔记-map中关于erase返回值的操作
- C# LINQ to XML
- python中await async_[转载]python中的await和async
- Redis源代码分析(十)--- testhelp.h小测试框架和redis-check-aof.c 日志检测
- 散粉在哪个步骤用_无限回购的散粉
- 如何利用百度音乐播放器的API接口来获取高音质歌曲
- 一、「下载JDK」「配置JDK」「下载JDK文档」
- Java 二叉树完整代码(递归迭代)
- 专门用来保存图片生成图片链接的工具博文
- APISpace 银行卡四要素API
- 0004-EMC电磁兼容RE辐射超标整改策略-学习笔记
- 四大步骤,彻底关闭Win10自动更新
- CoffeeScript 简介
- 房地产估值法研究报告_房地产估值方法
热门文章
- AgileEAS.NET平台开发实例-药店系统-准备开发环境(上)
- owc_绘图区(PlotArea)背景显示多种颜色
- django里static配置静态文件的引入
- 洛谷 - P2045 - 方格取数加强版 - 费用流
- 关于GitHub推送时发生Permission denied (publickey)的问题
- [Python Machine Learning] 学习笔记之scikit-learn机器学习库
- 在 Inno Setup 中实现倒数N秒后激活按钮
- 深入Java泛型(三):泛型的上下边界
- java 导出csv_数据集标注方法、R数据的导出_R
- python 线性回归 统计检验 p值_SPSS 25 数学统计分析工具