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

FTP搭建

(当前环境已经在Centos7下安装了BT面板)

在BT面板中打开应用商店下载直接安装即可

bt

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

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

填入创建时的账号密码就可以登录到FTP空间

(文件上传和下载速度 👇 测试环境:树莓派4+1000M局域网,速度直接拉满)

上传
下载

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

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 回车即可

ip
smb
open

上传下载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可视化管理,在浏览器网页上配置。

最后修改:2024 年 02 月 09 日
如果觉得我的文章对你有用,请随意赞赏