这期教程使用FTP,SMB,NFS来搭配使用组成对Linux,Windows,Unix都能使用的全平台解决方案,其中SMB已经被MacOS和Windows默认支持了,Linux下也是支持的只不过需要安装相关的客户端,在带有GUI的Linux系统默认也已经集成了SMB客户端,很方便。FTP想必大多数人都很熟悉,无论是学校还是公司,都会用来进行文件分享,提供简单的上传和下载文件的能力;NFS和SMB很像前者没有用户加密授权等功能;主要说一下FTP和SMB的区别,FTP只能进行简单的上传和下载还带有用户权限控制,而SMB可以实现类似在线编辑的功能不只是上传和下载,还可作硬盘挂载在本地使用,可节省本地磁盘的空间。
FTP搭建
(当前环境已经在Centos7下安装了BT面板)
在BT面板中打开应用商店下载直接安装即可

然后在打开FTP创建即可(说明:此处创建的就是以该用户名 命名的FTP空间,创建多个用户也就对应多个空间,默认用户名的权限都是可读写和删除)

Windows下打开(打开文件资源管理器在地址栏中输入 ftp://192.168.10.127 )

填入创建时的账号密码就可以登录到FTP空间
(文件上传和下载速度 👇 测试环境:树莓派4+1000M局域网,速度直接拉满)


MacOS下打开 前往》连接服务器



测试中发现只能下载不能上传。
Linux(Ubuntu GUI下直接打开设置中 👇 上传下载一切正常)

FTP使用场景:简单的文件分享,以及账户控制。

SMB搭建
开始安装Samba服务Shell中执行以下代码
#安装samba服务
yum install samba -y
Samba常用命令(依次执行)
#Samba服务状态
systemctl status smb
#开机自启
systemctl enable smb
#服务启动
systemctl start smb
#服务停止
systemctl stop smb
SMB配置文件 ( /etc/samba/smb.conf )配置文件如下
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
#全局参数
[global]
#域
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
#测试创建
[Test]
comment = Test Space
path = /www/wwwroot/Home
valid users = test
browseable = Yes
public = No
writable = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
配置参数
smb.conf 配置基础参数👇
[global] //全局设置
workgroup = WORKGROUP //域
security = user //验证方式
passdb backend = tdbsam //用户管理后台
printing = cups //打印机....
printcap name = cups //打印机....
load printers = No //打印机....
cups options = raw //打印机....
[共享名]
comment = xxxx (共享描述)
path = /home/test (共享路径)
browseable = yes/no (共享目录是否可以浏览)
writable = yes/no (共享路径是否可写)
admin users =admin,root (该共享的管理员,可以是多个)
valid users =admin,root (允许访问该共享的用户)
invalid users = test (禁止访问的用户)
guest ok = yes/no (是否公开,不需要验证用户)
验证方式
security = user (Samba Server验证方式,一共有四种验证方式)
1. share:不需要提供用户名和密码, 安全性较低。
2. user:共享目录只能被授权的用户访问,账号和密码需要注册。
3. server:远程服务器代理验证(Windows服务器下使用)。
4. domain:域,使用主域控制器(PDC)来完成认证。
账户部分
passdb backend = tdbsam (用户管理后台,一共有三种)
1.smbpasswd:使用smb的smbpasswd (/etc/smbpasswd)来创建Samba用户密码。
2.tdbsam: 使用一个用户数据库(/etc/samba/passdb.tdb)。
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表。
3.ldapsam:基于LDAP的账户管理方式来验证用户。
以上参数过目即可( 以下是实操 )
1.创建用于访问SMB共享空间的账户,在这之前先要创建系统用户(SMB账户需要为系统用户才行),打开命令行
假设我们创建一个系统账户叫 test,并为该账户添加默认Home目录(也就是该共享的目录 /www/wwwroot/Test ),且处于安全考虑不能让该用户登录到系统只能登录SMB共享空间 ( /sbin/nologin )。
[ 其中useradd 参数 -a 指创建该用户默认Home目录,-s 指设置Linux终端 ]
#创建系统用户 (若没有报错则创建成功)
useradd -d /www/wwwroot/Test -s /sbin/nologin test
删除用户 👇
[其中 userdel 参数 -r 是指删除该用户的默认Home目录,-f 是指强制删除]
#删除用户test
userdel -rf test

2.创建SMB账户(用系统用户注册SMB账户)
创建SMB用户我们使用tdbsam来管理用户(方便) 👇
#tdbsam创建用户
pdbedit -a test

到此我们就创建了一个用于登录SMB(较为安全)的用户,接下来就是在Smb.conf文件中编写共享空间的配置 👇
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
#全局参数
[global]
#域
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
#测试创建
[Test] #共享名可随意
comment = Test Space #共享空间说明
path = /www/wwwroot/Test #共享空间的目录
valid users = test #允许登录的用户
browseable = Yes #可否被浏览
public = No #是否公开
writable = Yes #是否可读
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
然后重启SMB服务
#重启SMB服务
systemctl restart smb
在文件资源管理器中或者WIN + R打开运行 输入 \\SERVER-IP 回车即可



上传下载8G文件(100+ M/s)速度👇



进阶的使用方法 可映射成本地磁盘来使用(速度很快可直接读取里面的文件编辑修改)
(打开上层共享目录,右键共享目录》映射网络驱动)



SMB适用场景:MacOS , Windows,Linux,Android端,IOS端都能达到在线编辑打开,上传下载。真正跨平台使用( 很香的有木有\~\~\~ ),Android端和IOS端可下载ES文件浏览器即可。
Q&A
Q:FTP和Samba的共享空间可以是同一个吗?或者说满足不同的需求 ?
A:可以,Samba的功能已经涵盖FTP了,可通过修改配置文件来限制用户的权限(比如说只能下载,不能编辑和上传)。
Q:NFS和Samba比哪个好用 ?
A:两者在使用上几乎没有什么区别功能都一样,区别就是Samba比NFS 配置起来较复杂,且NFS没有Samba用户管理这种强大的后台,但功能灵活也就体现出来了。
Q:Samba配置起来很麻烦,有没有什么办法可以偷懒 ?
A:有!用Samba-swat可视化管理,在浏览器网页上配置。