企业级文件共享服务全解析:NFS 和 Samba 搭建指南与 Windows 乱码解决

🎯 学习目标

完成本课程后,学习者将能够:

  • 让不同主机通过网络访问远程文件,实现文件共享

  • 企业级文件共享服务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编码来根治此问题,

  1. 在Windows 11的搜索框里输入 "区域设置"intl.cpl,并打开它。
  2. 切换到 "管理" 选项卡。
  3. 点击 "更改系统区域设置..." 按钮。
  4. 在弹出的窗口中,勾选 "Beta 版: 使用 Unicode UTF-8 提供全球语言支持"
  5. 点击 "确定" ,并根据提示重启你的电脑

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:允许访问的用户,这里指定为 stark
  • create 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的服务就搞定了!

相关推荐
七夜zippoe4 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥4 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
yunteng5214 小时前
通用架构(同城双活)(单点接入)
架构·同城双活·单点接入
麦聪聊数据5 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
Fcy6485 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满5 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
程序员侠客行5 小时前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
主机哥哥6 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
珠海西格电力科技7 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
bobuddy7 小时前
射频收发机架构简介
架构·射频工程