[Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)

在上一节中,我们讲述了如何在路由器上挂载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 =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 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     #允许开机自启动

五、补充说明

  一般情况下,Samba文件共享服务是在局域网环境下使用的,这样较为安全。我们可以将Samba服务器挂载到本地文件系统中,用户可以将其当成系统的一个分区使用,简单而方便。

  对于ftp文件传输服务器来说,建议使用匿名访问机制,允许用户访问以及下载,限制用户的上传以及修改权限,这样更为安全。

---------------------------------------------------------------

预告:下一节将介绍DDNS安装

转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!

[Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)

时间: 2024-12-15 06:52:12

[Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)的相关文章

[Openwrt 项目开发笔记]:USB挂载& U盘启动(三)

在上一篇中,我结合Netgear Wndr3700讲解了如何对Openwrt进行必要的配置.接下来,我们就想要在Openwrt上安装必要的软件了.可是这时候新的问题又来了:当安装一些软件之后,存储空间不足了.这时候该怎么办呢?以4M的Flash为例,当大家讲Openwrt固件刷到自己的路由器后,大家会发现剩余的空间往往只剩下不到2M.当我们需要安装许多Openwrt本身不带的软件时,就会发现如此小的空间实在是太寒酸了.那么,该如何解决这样的问题呢? 一. 添加USB扩展(注:本文默认大家的路由器

[openwrt 项目开发笔记]: 传送门

“Openwrt 项目开发笔记”系列传送门: [Openwrt 项目开发笔记]:Openwrt平台搭建(一) (2014-07-11 00:11) [Openwrt 项目开发笔记]:Openwrt平台搭建(一)补遗 (2014-07-11 20:32) [Openwrt 项目开发笔记]:Openwrt必要设置(二) (2014-07-13 15:03) [Openwrt 项目开发笔记]:USB挂载& U盘启动(三) (2014-07-13 23:42) [Openwrt 项目开发笔记]:Samb

【转】【系列】Openwrt 项目开发笔记

这个系列来自隔壁的坛友@Double_win,已自觉主动聚合,看起来很方便. “Openwrt 项目开发笔记”系列传送门: [Openwrt 项目开发笔记]:Openwrt平台搭建(一) (2014-07-11 00:11) [Openwrt 项目开发笔记]:Openwrt平台搭建(一)补遗 (2014-07-11 20:32) [Openwrt 项目开发笔记]:Openwrt必要设置(二) (2014-07-13 15:03) [Openwrt 项目开发笔记]:USB挂载& U盘启动(三) (

[Openwrt 项目开发笔记]:DDNS设置(五)

在上一节中,我主要讲述了如何在Openwrt上安装Samba服务器以及Ftp服务器.在本节中,我将介绍一下,一个比较使用的功能:DDNS.为远程物联网控制打下基础. 题外话:DDNS设置原本是极为简单的.可是由于我的路由所在现实环境的原因,以及我个人能力有限,一直无法达到我预期的目的,真是有点累觉不爱了. ok,言归正传,开始抛干货! 一.安装DDNS服务 opkg update opkg install ddns-scripts luci-app-ddns 二.注册一个动态域名 关于动态域名服

[Openwrt 项目开发笔记]:Openwrt必要设置(二)

前面的两篇blog中,我将如何搭建Openwrt的开发.编译.调试以及烧写环境的方法一一列出了.从本文开始, 我将介绍如何一步一步进行Openwrt设置,以满足路由器作为智能家居网关的功能. ok,闲话休提,开始上干货. 一.Openwrt初始配置 1. 密码设置 当我们成功地将Openwrt刷入路由器后,路由器会经过大约4~5分钟的时间重启(以Netgear Wndr3700为例).待路由器启动之后,用一根网线与路由器LAN口直连,并将PC的IP设置到192.168.1.*网段. 提示:不同的

[Openwrt 项目开发笔记]:PHP+Nginx安装(七)

在上一节中,我们已经搭建了MySQL数据库了,因此在这一节中,我主要讲解php的安装,以及php的运行环境Nginx的安装.参考(http://www.right.com.cn/forum/thread-89216-1-1.html) 一.PHP安装 1.安装php软件包. opkg updateopkg install php5 php5-mod-apc opkg install php5-mod-gd php5-mod-session opkg install php5-mod-pdo-my

[Openwrt 项目开发笔记]:MySQL配置(六)

在本人的项目中,运行在路由器上的服务器采用Nginx+MySQL+PHP 架构.通常较为常见的web框架为Lamp(Linux+Apache+Mysql+PHP),为何我们选择LNMP呢?我将在后续的几篇文章中给出答案. 首先我们来介绍如何在Openwrt上搭建MySQL数据库. 参考文章:(http://blog.csdn.net/yufei_email/article/details/21845935) 一.安装MySQL数据库(在backfire10.3版本中,package已经包含mys

[Openwrt 项目开发笔记]:Openwrt平台搭建(一)

最近开始着手进行Openwrt平台的物联网网关设计,思路有些乱,通过笔记的方式进行记录和整理. 声明: 在本文中,有些内容摘自网上,我进行了整合,因此出处不明,在此对原文作者致歉! -----------------------------------------------------(分割线)------------------------------------------------------- 一. 选择Openwrt平台的理由 传统的路由器固件是由官方提供的.这些固件是不开源的,而

Android开发笔记(一百三十四)协调布局CoordinatorLayout

协调布局CoordinatorLayout Android自5.0之后对UI做了较大的提升,一个重大的改进是推出了MaterialDesign库,而该库的基础即为协调布局CoordinatorLayout,几乎所有的design控件都依赖于该布局.协调布局的含义,指的是内部控件互相之前的动作关联,比如在A视图的位置发生变化之时,B视图的位置也按照某种规则来变化,仿佛弹钢琴有了协奏曲一般. 使用CoordinatorLayout时,要注意以下几点:1.导入design库:2.根布局采用androi