ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-11-07 22:04:35  阅读:373  来源: 互联网

标签:文件 samba 文件共享 网盘 可以 文件夹 linux


前言

最近一段时间稍微有点忙,而且技术学习方面也挺困惑的,所以也就没有更新太多新的内容,目前考虑的是,再重新梳理下多线程方面的技术点,扎实下这块的技术,因此从明天开始,我就要重新开始学习多线程这块的内容,这次会尽可能把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资源,后面我们可以专门分享下,教大家如何用树莓派搭建家庭媒体中心,好了,今天就到这里吧,各位小伙伴 ,晚安吧!

标签:文件,samba,文件共享,网盘,可以,文件夹,linux
来源: https://www.cnblogs.com/caoleiCoding/p/15521914.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有