• linux搭建samba服务,实现网盘自由


    前言

    最近一段时间稍微有点忙,而且技术学习方面也挺困惑的,所以也就没有更新太多新的内容,目前考虑的是,再重新梳理下多线程方面的技术点,扎实下这块的技术,因此从明天开始,我就要重新开始学习多线程这块的内容,这次会尽可能把juc包下的内容都覆盖到,同时也希望比之前更完整更详细。

    至于今天,我打算整理下最近做的几件比较有意思的事。一个是在前几天安装的manjaro上搭建samba文件服务,实现个人文件网盘,不过我这个目前只能在局域网使用,搭建家庭媒体中心的话就很方便;

    另一个是shell脚本统计数据。这一块是由于最近需要帮产品统计一个数据,但是由于公司数据存储是分库存储的所以一条sql是没法直接查的,毕竟还跨数据库实例,所以我就写了一个shell脚本,实现数据统计排序,原本考虑用python实现的,但是堡垒机安装的是python 2.7mysql的驱动库安装不上(需要更新pip,但是我没权限),所以最后我放弃了。

    今天我们先看第一件事——实现网盘自由。

    网盘自由

    其实,关于文件共享是有多种解决方案的,除了我们熟知的各类网盘,比如百度云盘、阿里云盘、坚果云等云盘外,还有很多技术层面的解决方案,包括FTPSambaWebDAV等多种方式的,下面是关于这几种协议的简单介绍(来源网络):

    FTP属于古老的文件共享方式了,因为安全性,现代浏览器最新已默认不能打开FTP协议。SFTPFTP基础上增加了加密,在Linux上安装OpenSSH后可以直接用SFTP协议传输。使用SFTP临时传送文件还可以,但做文件共享,性能不高,速度较慢。

    SambaLinuxCIFS协议的实现,优势在于对于小白使用简章,和Windows系统文件共享访问一样,不需要安装第三方软件,而且移动端也有大量APP支持。苹果手机文件APP中添加网络存储用的就是这种方式。Windows下文件共享使用445端口,且不能更改。445端口常常受黑客关照,在广域网上大多运营封掉了访端口,所以这种文件共享只适合在内网使用。

    WebDAV 基于 HTTP 协议的通信协议,在GETPOSTHEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。因为基于HTTP,在广域网上共享文件有天然的优势,移动端文件管理APP也大多支持WebDAV协议。使用HTTPS还能保安全性。ApacheNginx支持WebDAV,可作为WebDAV文件共享服务器软件。也可以使用专门的WebDAV软件部署。

    为什么采用samba?原因很简单,它安装配置都很简单,支持winandroidios等多平台,而且市面上很多软件都支持(后面我们会分享)。但是它也有个缺点,就是共享端口固定且不能修改,安全性差,不过局域网使用就不用考虑这么多。

    至于网盘,受空间和网速限制,动不动还要开会员,这一点就不是特别友好,而且有些文件还不适合存在网盘中,过不好过几天看不了了。当然,如果你有自己的服务器,可以直接搞webDAV,这就更接近网盘体验了。

    好了,废话少说,我们直接开干吧!

    下面我以manjaro为例,其他linux发行版类似,过几天我把树莓派拿回来了,可以再给各位小伙伴分享在树莓派搭建个人服务器的相关内容,包括文件服务器搭建。

    安装samba服务及依赖

    安装依赖的方式都差不多,只需要替换成对应平台的软件包管理工具即可

    sudo pacman -S samba
    

    配置

    创建共享用户

    Samba 需要 Linux 账户才能使用 - 可以使用已有账户或 创建新用户。

    虽然用户名可以和 Linux 系统共享,Samba 使用单独的密码管理,将下面的 syske 替换为选择的 Samba 用户:

    # syske 就是你要和linux共享的用户名
    smbpasswd -a  syske
    

    执行完上面的命令之后,我就可以在samba的文件共享中使用这个用户了,密码就是这个用户的linux登录密码

    根据服务器角色差异,可能需要修改已有的文件权限和属性

    要让新创建的用户仅能访问 Samba 远程文件服务器,可以禁用其它登录选项

    • 禁用 shell

      usermod --shell /usr/bin/nologin --lock syske
      
    • 禁用 SSH :需要在/etc/ssh/sshd_config中配置,具体可以自行搜索

    更改用户密码

    如果你想修改samba用户的密码,可以通过如下命令进行修改,只需要按照提示输入密码即可

    sudo smbpasswd syske
    

    创建samba用户组

    这一步可以直接省略,非必须,有需要的小伙伴可以看下:

    groupadd sambashare
    

    groupddlinux的用户组新增命令,后面直接更用户组名称即可。

    修改配置文件

    安装完成后会在/etc文件夹下生成samba文件夹,在配置之前我们先将初始化配置文件备份下:

    mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
    

    接着我们开始编辑smb.conf文件,将其中原有的配置文件全部注释掉,并加入如下配置内容:

    [global]
    #所要加入的工作组或者域
    workgroup = WORKGROUP
    #用于在 Windows 网上邻居上显示的主机名
    netbios name = Manjaro
    #定义安全级别
    security = user
    #将所有samba系统主机所不能正确识别的用户都映射成guest用户
    map to guest = bad user
    #是否开启dns代理服务
    dns proxy = no
    

    这里设置的是samba的全局设置信息,注释已经够详细了,所以不再赘述

    然后再写入系统配置分享文件夹地配置:

    [syskeshare]
       # 我们要分享的文件夹路径
       path = /run/media/syske/D88047AA80478DC6
       # 是否允许浏览
       browseable = yes
       # 是否可写
       writable = yes
       # 是否允许匿名(guest)访问,等同于public
       guest ok = yes
       # 客户端上传文件的默认权限
       create mask = 0777
       # 客户端创建目录的默认权限
       # 注意共享文件在系统本地的权限不能低于以上设置的共享权限。
       directory mask = 0777
    

    这里主要设置我们要分享的文件夹的相关信息,首先syskeshare是节点名,也是我们客户端访问的共享路径,节点下面配置了文件夹的路径以及权限信息,需要注意的是,这里设置的文件夹权限只能小于等于分享路径文件夹的权限,否则不一定能正常写入文件。

    启动测试

    完成以上配置之后,从理论上讲,我们只需要启动samba服务就可以访问我们共享的文件夹了。启动的方式也很简单:

    # 启动
    sudo systemctl start smb nmb
    # 重启
    sudo systemctl restart smb nmb
    # 停止
    sudo systemctl stop smb nmb
    

    启动成功后,我们可以先通过如下命令测试下效果:

    如上显示则表明,samba服务已经启动成功,且可以正常访问,下面我们看下各个平台具体如何访问:

    安卓

    安卓端可以通过es文件管理器进行访问,操作也很方便:

    这款软件不知道ios平台是否有,不过应该可以找到替代软件。这一款软件的不好之处是有广告,优点是可以自动扫描,操作上便捷很多,安卓平台还有另一款软件Solid Explorer,是一款国外的软件,只能通过google play下载,需要的小伙伴可以私信,我放几张截图:

    这款软件的优势是轻量,而且没广告,云盘这块支持的也挺多的,我是今天刚发现的。

    win平台

    win平台操作就简单多了,直接点击文件管理器中的网络,如果能找到你的共享机器,直接双击即可,如果有密码输入密码即可,如果找不多,直接输入分享地址访问:

    \\192.168.0.101\syskeshare
    

    其中192.168.0.101是我manjaro的主机地址,syskeshare是我的分享名称,显示效果如下:

    由于手里没有mac系统的设备,感兴趣的小伙伴自己尝试下,应该也不会太难。

    结语

    linux搭建samba服务器算是一个比较简单,但是特别实用的技能,有了这个技能加持之后,你再也不用担心文件共享问题了,最爽的是视频资源、音乐资源、图片资源再也不用手动复制了,只需要接入samba服务器就可以在家里的任何可以连到wifi的地方访问他们,岂不是美滋滋!

    另外关于家庭媒体中心这块也有一款特别好用的软件,而且它本身也支持samba资源,后面我们可以专门分享下,教大家如何用树莓派搭建家庭媒体中心,好了,今天就到这里吧,各位小伙伴 ,晚安吧!

  • 相关阅读:
    小公司的10k前端工程师应该会什么?
    webService和Restful
    码农如何主动学习?
    20个Web前端开发工程师必看的国外网站
    网站主题和内容的三个类型
    HTTP慢速攻击
    Linux等待队列原理与实现
    签名你的每个 Git Commit
    浅谈 Linux 下常用 Socket 选项设置
    API接口设计,需要注意这4点
  • 原文地址:https://www.cnblogs.com/caoleiCoding/p/15521914.html
Copyright © 2020-2023  润新知