欢迎光临
我们一直在努力

Linux文件共享实战:一文搞懂 FTP、Samba、NFS,三种方式实现文件传输与共享

在这里插入图片描述

摘要

在 Linux 服务器使用过程中,经常会遇到文件传输和文件共享的问题。比如开发人员需要把代码上传到服务器,Windows 用户需要访问 Linux 服务器上的共享文件,多台 Linux 服务器需要使用同一份目录。

Linux 中常见的解决方式有 FTP、Samba 和 NFS。FTP 主要用于客户端和服务器之间的文件上传、下载;Samba 主要解决 Windows 和 Linux 之间的文件共享;NFS 则主要用于 Linux 服务器之间共享目录。

这三个服务使用场景不同,实际配置时都需要考虑服务启动、目录权限、防火墙以及客户端测试等问题。

引言

在实际的 Linux 运维环境中,文件共享是比较常见的一项工作。

FTP 使用起来比较直接,客户端连接服务器后就可以上传和下载文件。Linux 中常用的 FTP 服务软件是 vsftpd。

如果公司的员工主要使用 Windows,那么 Samba 会更加方便。配置好 Samba 后,Windows 用户可以直接通过文件资源管理器访问 Linux 服务器上的共享目录。

NFS 则更适合 Linux 服务器之间使用。客户端把服务器上的目录挂载到本地之后,就可以像操作本地目录一样使用远程文件。

所以学习这三个服务时,重点不是单独记命令,而是先搞清楚它们分别解决什么问题。

FTP文件传输

FTP基本概念

FTP 是 File Transfer Protocol,也就是文件传输协议,主要用于客户端和服务器之间传输文件。

常见用途包括:

程序代码上传、下载
企业内部文件分发

FTP 属于应用层协议,经典情况下:

21端口:控制连接
20端口:数据连接

FTP 有主动模式和被动模式。

主动模式下,客户端连接服务器 21 端口后,服务器通过 20 端口主动连接客户端的数据端口。

被动模式下,客户端先连接服务器 21 端口,服务器提供一个临时端口,然后由客户端主动连接这个端口进行数据传输。

实际使用中,被动模式更容易通过客户端防火墙。

FTP服务软件

Linux 中常见的 FTP 服务软件有:

vsftpd
proftpd
pure-ftpd

其中 vsftpd 使用比较广泛,默认安全性也比较高。

FTP服务器搭建

安装和启动

安装:

dnf install -y vsftpd

检查:

rpm -qa | grep vsftpd

启动:

systemctl start vsftpd

查看服务:

systemctl status vsftpd –no-pager

检查 21 端口:

ss -tunpl | grep 21

防火墙放行:

firewall-cmd –permanent –add-service=ftp
firewall-cmd –reload

配置FTP

先备份配置:

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

编辑:

vi /etc/vsftpd/vsftpd.conf

主要配置:

local_enable=YES
write_enable=YES
chroot_local_user=YES
local_root=/data/ftpdata

这里:

local_enable=YES

允许 Linux 本地用户登录。

write_enable=YES

允许执行写入操作,例如上传文件。

chroot_local_user=YES

限制用户访问范围。

local_root=/data/ftpdata

指定 FTP 用户登录后的根目录。

创建目录:

mkdir -p /data/ftpdata/public

创建用户:

useradd ftpuser1
useradd ftpuser2

echo 'ftpuser1:123' | chpasswd
echo 'ftpuser2:123' | chpasswd

创建用户私有目录:

mkdir -p /data/ftpdata/data1
mkdir -p /data/ftpdata/data2

设置权限:

chown ftpuser1 /data/ftpdata/data1
chmod o= /data/ftpdata/data1

chown ftpuser2 /data/ftpdata/data2
chmod o= /data/ftpdata/data2

公共目录可以设置:

chmod 1777 /data/ftpdata/public

修改完成后重启:

systemctl restart vsftpd

FTP客户端测试

node2 安装:

dnf install -y lftp

连接:

lftp ftp://ftpuser1:123@node1

常用命令:

ls 查看目录
cd 切换目录
get 下载文件
put 上传文件
bye 退出

代码解释

FTP 的配置可以简单理解成三部分:

vsftpd

控制用户能不能登录

控制用户能不能上传

控制用户只能访问哪个目录

如果出现 550 错误,一般需要重点检查当前用户对文件或者目录有没有操作权限。

Samba文件共享

Samba是什么

Samba 是 Linux/Unix 和 Windows 之间进行文件共享的软件。

它使用 SMB/CIFS 协议,让 Windows 可以像访问普通共享文件夹一样访问 Linux 服务器。

例如 Windows 中直接输入:

\\\\192.168.88.128

就可以访问 Samba 服务器。

Samba服务搭建

安装Samba

dnf install -y samba

创建共享目录:

mkdir -p /data/smbshare

创建 Linux 用户:

useradd smbuser -s /sbin/nologin

修改目录所属:

chown smbuser:smbuser -R /data/smbshare

创建 Samba 用户:

smbpasswd -a smbuser

查看:

pdbedit -L

配置Samba

配置文件:

/etc/samba/smb.conf

先备份:

cp /etc/samba/smb.conf smb.conf.bak

增加:

[datashare]
comment = samba share
path = /data/smbshare
read only = No

这里:

[datashare]

表示共享名称。

path = /data/smbshare

表示 Linux 上真正共享的目录。

read only = No

表示允许写入。

防火墙和服务

放行:

firewall-cmd –permanent –add-service=samba
firewall-cmd –reload

启动:

systemctl start nmb
systemctl start smb

Windows访问

Windows 文件资源管理器地址栏输入:

\\\\192.168.88.128

输入 Samba 用户:

smbuser

然后输入设置好的 Samba 密码。

Linux客户端访问

node2 安装:

dnf install -y samba-client

连接:

smbclient //node1/datashare -U smbuser

进入后可以使用:

ls 查看文件
cd 切换目录
get 下载
put 上传
quit 退出

代码解释

Samba 可以理解成一个中间层:

Windows

SMB/CIFS

Samba

Linux文件系统

/data/smbshare

Windows 用户不需要直接操作 Linux 命令,只需要访问共享路径即可。

NFS目录共享

NFS基本介绍

NFS 是 Network File System,也就是网络文件系统。

它主要用于不同 Linux 主机之间共享文件和目录。

常见使用场景:

Linux服务器之间共享文件
多台服务器访问同一份数据
集中化存储
虚拟化、容器环境共享存储

NFS 通常使用 TCP/UDP 2049 端口,并配合 RPC 使用。

NFS工作原理

基本过程可以理解为:

NFS客户端

发送挂载请求

NFS服务器

RPC提供相关服务信息

客户端挂载共享目录

挂载完成后,客户端就可以像使用本地目录一样使用 NFS 目录。

NFS服务器配置

安装

node1:

dnf install -y nfs-utils

创建目录:

mkdir -p /data/web

备份:

cp /etc/exports /etc/exports.bak

编辑:

vi /etc/exports

例如:

/data/web 192.168.88.0/24(rw,sync,root_squash)

配置解释

/data/web

表示需要共享的目录。

192.168.88.0/24

表示允许这个网段的客户端访问。

rw

读写。

ro

只读。

sync

同步写入,相对安全。

async

异步写入,速度更快,但存在数据风险。

root_squash

客户端 root 权限进行映射,安全性更高。

启动服务

systemctl restart nfs-server
systemctl enable nfs-server

检查:

systemctl status nfs-server –no-pager

检查端口:

ss -tunpl | grep 2049
ss -tunpl | grep 111

防火墙:

firewall-cmd –permanent –add-service=nfs
firewall-cmd –permanent –add-service=rpc-bind
firewall-cmd –permanent –add-service=mountd
firewall-cmd –reload

NFS客户端挂载

查看共享目录

node2 安装:

dnf install -y nfs-utils

查看:

showmount -e node1

如果看到:

/data/web 192.168.88.0/24

说明服务器已经导出了这个目录。

挂载使用

创建挂载点:

mkdir -p /data/web

执行:

mount -t nfs node1:/data/web /data/web

查看:

df -h

如果出现:

node1:/data/web

说明挂载成功。

卸载:

umount /data/web

如果出现:

device is busy

通常是当前终端还在这个目录中。

先:

cd /

然后再次:

umount /data/web

如果还是无法卸载,可以检查哪个进程正在使用:

lsof /data/web

实际应用场景

场景一:开发人员上传代码

开发人员完成代码后,可以通过 FTP 上传到服务器。

例如:

hello.java
index.html
test.py

使用:

lftp ftp://ftpuser1:123@node1

进入目录:

cd public

上传:

put hello.java

这种方式适合做简单的文件上传和下载。

场景二:Windows访问Linux共享文件

公司员工使用 Windows,Linux 服务器上保存公共资料。

Linux:

/data/smbshare

Windows:

\\\\192.168.88.128\\datashare

员工登录 Samba 后,就可以直接查看、上传和下载文件。

这种场景使用 Samba 比较方便。

场景三:多台Linux服务器共享目录

例如 node1 上有:

/data/web

node2 需要使用这份数据。

node1 配置:

/data/web 192.168.88.0/24(rw,sync,root_squash)

node2:

mount -t nfs node1:/data/web /data/web

挂载以后,node2 就可以直接使用:

cd /data/web
ls

这种方式适合多台 Linux 主机共享同一份目录。

QA环节

Q1:FTP、Samba、NFS怎么区分?

简单记:

FTP → 文件上传下载
Samba → Windows和Linux文件共享
NFS → Linux和Linux目录共享

Q2:FTP可以登录,但是上传不了怎么办?

重点检查:

ls -ld /data/ftpdata/public

以及:

grep write_enable /etc/vsftpd/vsftpd.conf

主要看目录权限和 FTP 写权限。

Q3:Samba访问不了怎么办?

按照这个顺序检查:

smb服务

防火墙

Samba用户

smb.conf配置

Linux目录权限

Q4:NFS挂载出现access denied怎么办?

先检查:

cat /etc/exports
showmount -e node1

重点看客户端 IP 或网段有没有被允许。

Q5:NFS卸载提示device is busy怎么办?

先退出挂载目录:

cd /

然后:

umount /data/web

如果仍然失败,再检查:

lsof /data/web

总结

FTP、Samba 和 NFS 都可以用来解决文件共享问题,但是使用方式不同。

FTP主要解决文件上传和下载,常见的服务软件是 vsftpd。

Samba主要解决 Windows 和 Linux 之间的文件共享,Windows 用户可以直接通过共享路径访问 Linux 文件。

NFS主要解决 Linux 主机之间的目录共享,客户端通过 mount 把远程目录挂载到本地。

实际配置的时候,可以按照:

安装服务

修改配置

创建目录和用户

配置权限

配置防火墙

启动服务

客户端测试

根据报错排查

这个流程来操作。

把这三个服务真正配置一遍之后,基本就能理解 Linux 中常见的文件传输和共享方式了。

赞(0)
未经允许不得转载:171主机测评 » Linux文件共享实战:一文搞懂 FTP、Samba、NFS,三种方式实现文件传输与共享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址