🎯 学习目标
完成本课程后,学习者将能够:
-
让不同主机通过网络访问远程文件,实现文件共享
-
企业级文件共享服务NFS(Network File System)搭建流程
-
NFS(Network File System)让人头疼欲裂的windows中映射乱码
-
windows安装NFS客户端、管理工具
-
企业级文件共享服务 Samba 搭建流程(保姆级)
文件共享服务解决什么问题
在好租上班的时候,把开发机的目录映射到本地的磁盘目录,每个人只关心web目录中的开发代码,而不用考虑服务的搭建环境、比如PHP或者Nginx需要的扩展,这样大大方便了小伙伴们的开发效率,通过网络访问远程文件,实现文件共享是提高开发效率的基石,网络文件共享是企业 IT 架构中核心需求之一,其核心目标是让不同主机通过网络访问远程文件,实现 "文件即服务"。
企业级文件共享服务NFS (Network File System)和 Samba,Linux版本 Centos7.9,分别挂载到windows和其他的Linux上。
Nfs 搭建
1、yum 安装 NFS 服务,设置服务开机自启, 启动服务。
bash
sudo yum install -y nfs-utils rpcbind
# 设置服务开机自启
sudo systemctl enable rpcbind
sudo systemctl enable nfs-server
sudo systemctl enable nfs-lock
sudo systemctl enable nfs-idmap
# 启动服务
sudo systemctl start rpcbind
sudo systemctl start nfs-server
sudo systemctl start nfs-lock
sudo systemctl start nfs-idmap
2、创建共享目录/home/wwwroot/share
, 这里是web服务的目录,并设置权限。
bash
# 创建共享目录
sudo mkdir -p /home/wwwroot/share
# 设置目录权限
sudo chmod -R 755 /home/wwwroot/share
sudo chown -R nobody:nobody /home/wwwroot/share
3、配置 NFS 共享参数,对于共享参数要做一点详细的说明和解释,搭建NFS服务后,配置文件是不存在的需要手动去创建。
bash
# 编辑exports文件
sudo vim /etc/exports
# 允许整个网段读写访问
/home/wwwroot/share 192.168.1.0/24(rw,sync,no_subtree_check)
# 允许特定IP只读访问
/home/wwwroot/share 192.168.1.100(ro,sync,no_subtree_check)
# 允许多个网段访问
/home/wwwroot/share 192.168.1.0/24(rw,sync) 10.0.0.0/8(ro,sync)
# 匿名访问配置
/home/wwwroot/share *(rw,sync,no_root_squash)
配置说明:
- 共享目录 /home/wwwroot/share
- 允许连接的网段:192.168.31.0/24,也可以是
*
,表示允许所有访问 - 读写权限:ro 客户端仅只读权限 ,rw 客户端拥有读写权限 (需同时满足共享目录本地权限允许,如
chmod 755
)。 - 数据写入方式:
sync
服务端同步写入 ,async
服务端异步写入 - 权限映射:
root_squash
无特权用户、root_squash
客户端root
权限(极度危险 ),no_all_squash
保留客户端普通用户的 UID/GID(与服务端一致时才能正常访问)。
bash
# 重新导出共享目录
sudo exportfs -ra
# 查看共享情况
sudo exportfs -v
# 重新加载NFS服务
sudo systemctl reload nfs-server
4、配置防火墙,允许外部网络访问,配置完别忘了重启服务。
bash
# 添加NFS服务到防火墙
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload
# 或者手动指定端口
sudo firewall-cmd --permanent --add-port=2049/tcp
sudo firewall-cmd --permanent --add-port=20048/tcp
sudo firewall-cmd --permanent --add-port=111/tcp
sudo firewall-cmd --permanent --add-port=111/udp
sudo firewall-cmd --reload
5、验证NFS服务状态
bash
# 查看NFS服务状态
systemctl status nfs-server
# 查看RPC服务注册情况
rpcinfo -p
# 查看本机共享列表
showmount -e localhost
# 查看共享统计
nfsstat -s
所有的准备都有就绪,到了这里Nfs服务的搭建就完毕了。
安装 NFS 客户端
1、安装NFS 客户端

在 Windows 11 上测试 NFS 服务,Windows 11的家庭版需要先升级到专业版,家庭版没有Nfs服务的,安装步骤如下:
- 打开 "控制面板" -> "程序" -> "程序和功能" -> "启用或关闭 Windows 功能"
- 找到 "NFS 服务",展开后勾选 "客户端 for NFS"
- 点击 "确定",等待安装完成并重启电脑
2、添加本地磁盘映射
这是最直观的方法,适用于大多数用户。
-
打开 文件资源管理器 (按
Win + E
)。 -
在弹出的窗口中:
驱动器 :选择一个你喜欢的驱动器号(例如:
Z:
)。文件夹 :输入你的 NFS 共享地址。格式为:
\\服务器IP地址或主机名\共享路径
。 -
注意 :这里使用的是反斜杠
\
,而不是 NFS 标准的正斜杠/
。 -
示例 :
\\192.168.31.148\home\wwwroot\share
-
使用其他凭据连接 :对于 NFS,通常不需要勾选这个,因为 NFS 认证方式与 Windows 共享(SMB/CIFS)不同。
-
登录时重新连接:如果你希望每次开机都自动连接这个驱动器,请保持勾选。
点击 "完成"。
NFS Windows 11 乱码
典型,是由于 Windows 和 Linux 系统默认的字符编码不同导致的。CentOS 通常使用 UTF-8 编码,而 Windows 的 NFS 客户端默认使用 GBK 编码,因此在跨平台读写中文文件名时就会出现乱码。
乱码成因 :在CentOS终端里看到的文件名已经是乱码 ,说明问题出在Windows写入时。因为Windows NFS客户端使用GBK编码写入,而Linux系统用UTF-8解读,导致乱码。
这是微软官方提供的一个解决方案,通过让Windows系统全局支持UTF-8编码来根治此问题,
- 在Windows 11的搜索框里输入 "区域设置" 或
intl.cpl
,并打开它。 - 切换到 "管理" 选项卡。
- 点击 "更改系统区域设置..." 按钮。
- 在弹出的窗口中,勾选 "Beta 版: 使用 Unicode UTF-8 提供全球语言支持" 。
- 点击 "确定" ,并根据提示重启你的电脑。

Samba服务
在NFS文件服务,在进行win/Unix/Linux共享时会发生乱码的情况,是因为Nfs 核心定位是Unix/Linux 系统间的原生文件共享。它允许客户端将服务器的共享目录 "挂载" 到本地文件系统,后续访问该目录时,操作逻辑与本地文件完全一致,这就产生Samba,一个跨 Windows 与 Unix 的兼容方案。
1、安装samba服务
bash
sudo yum update -y
sudo yum install -y samba samba-client samba-common
2、配置
配置参数说明:
[samba]
:共享名称,客户端访问时会显示此名称comment
:对共享目录的描述path
:要共享的目录路径public
:是否允许匿名访问,no 表示不允许writable
:是否允许写入操作,yes 表示允许valid users
:允许访问的用户,这里指定为 starkcreate mask
:新创建文件的权限掩码
bash
[samba]
comment = Stark's shared directory
path = /home/share
public = no
writable = yes
valid users = stark
create mask = 0644
directory mask = 0755
browseable = yes
写服务配置的时候,建议先备份在进行配置:
bash
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.back
sudo vim /etc/samba/smb.conf
3、创建 Samba 用户,这里需要注意的点是这个用户必须是已存在的系统用户,用来额外的管理Samba 服务,也就是和Samba 服务进行授权和关联,这里设置的密码是 m123456
。
bash
[stark@bogon share]$ sudo smbpasswd -a stark
New SMB password:
Retype new SMB password:
Added user stark.
授权后,需要启用smbba用户。
bash
#启用smbba用户
[stark@localhost share]$ sudo smbpasswd -e stark
Enabled user stark.
4、配置权限
bash
sudo chmod 755 /home/share
sudo chown stark:stark /home/share
5、配置防火墙和SELinux
bash
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
sudo semanage fcontext -a -t samba_share_t "/home/share(/.*)?"
sudo restorecon -Rv /home/share
6、启动并设置开机自启
bash
#启动samba服务
sudo systemctl start smb
#设置开机自启
sudo systemctl enable smb
#检查服务状态
sudo systemctl status smb
安装 Samba 客户端
1、安装Samba 客户端

在 Windows 11 上测试 NFS 服务,Windows 11的家庭版需要先升级到专业版,家庭版没有Nfs服务的,安装步骤如下:
- 打开 "控制面板" -> "程序" -> "程序和功能" -> "启用或关闭 Windows 功能"
- 找到 "NFS 服务",展开后勾选 "SMB 1.0/CIFS 文件共享支持"
- 点击 "确定",等待安装完成并重启电脑
2、添加本地磁盘映射

这是最直观的方法,适用于大多数用户。
-
打开 文件资源管理器 (按
Win + E
)。 -
在弹出的窗口中:
添加一个网络位置 :\\\192.168.31.148\share
,这个share是配置里的[]名称,不然链接不上,此处哭晕!
文件夹 :输入你的 NFS 共享地址。格式为:\\服务器IP地址或主机名\共享路径
。
点击 "完成"。
Win11 在本地映射的Nfs、和Samba的服务就搞定了!
