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

linux搭建samba服务,实现网盘*

创建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

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

linux搭建samba服务,实现网盘*

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

安卓

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

linux搭建samba服务,实现网盘*

linux搭建samba服务,实现网盘*

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

linux搭建samba服务,实现网盘*

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

win平台

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

\\192.168.0.101\syskeshare

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

linux搭建samba服务,实现网盘*

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

结语

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

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

上一篇:树莓派4B搭建NAS系统(Samba)


下一篇:利用树莓派把普通打印机变成网络打印机方法