企业级文件共享服务全解析: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的服务就搞定了!

相关推荐
川石课堂软件测试3 小时前
什么是BUG,你对BUG的了解有多少?
android·linux·服务器·python·功能测试·bug·安全性测试
云飞云共享云桌面3 小时前
东莞精密机械制造工厂如何10个SolidWorks共用一台服务器资源
java·运维·服务器·网络·数据库·电脑·制造
张较瘦_4 小时前
从零学会绘制系统架构图:目的、思路与实操指南
架构·系统架构·软件工程
爱敲代码的TOM4 小时前
深入剖析Java通信架构下的三种IO模式2
java·开发语言·架构
weixin_445476684 小时前
从“用框架”到“控系统”———架构通用能力(模块边界、分层设计、缓存策略、事务一致性、分布式思维)
分布式·缓存·架构
九皇叔叔4 小时前
Linux 系统配置 NTP 服务:轻松同步阿里云时间服务器
linux·服务器·阿里云
博一波4 小时前
软考高级-系统架构设计一些概念的串联
微服务·架构·系统架构
恒创科技HK4 小时前
香港服务器速度快慢受何影响?
运维·服务器·前端
wanhengidc5 小时前
移动端云手机的优势都有哪些?
运维·服务器·游戏·智能手机·云计算