在 CentOS 7 的 Linux 系统中配置 NFS

在 ​CentOS 7 ​ 的 Linux 系统中配置 ​NFS(Network File System,网络文件系统)服务器 ,可以实现 ​多台 Linux 主机之间共享目录,类似于 Windows 的共享文件夹,但基于 UNIX/Linux 权限体系,常用于局域网内服务器之间数据共享(如 Web 服务、代码、配置文件等)。


一、NFS 服务简介

  • NFS(Network File System)​​:由 Sun Microsystems 开发,允许一台计算机(NFS 服务器)通过网络将目录共享给其他计算机(NFS 客户端),客户端可以像访问本地文件一样访问这些共享目录。

  • 主要用途​:服务器之间共享数据(如网站文件、备份、配置文件等)。

  • 特点​:

    • 基于 RPC(远程过程调用)

    • 适用于 ​Linux/Unix 环境

    • 支持访问控制、用户映射(通过 UID/GID)

    • 支持同步/异步写入


二、NFS 服务器配置步骤(CentOS 7)

1. 安装 NFS 服务相关软件包

NFS 服务端需要两个主要组件:

  • nfs-utils​:NFS 服务主程序

  • rpcbind​(或 portmap):RPC 服务,用于端口映射

    sudo yum install nfs-utils rpcbind -y

2. 启动并设置开机自启

复制代码
sudo systemctl start rpcbind
sudo systemctl enable rpcbind

sudo systemctl start nfs-server
sudo systemctl enable nfs-server

在 CentOS 7 中,NFS 服务由 nfs-server管理,不是 nfs

3. 检查服务状态

复制代码
sudo systemctl status rpcbind
sudo systemctl status nfs-server

三、配置 NFS 共享目录

1. 创建要共享的目录

复制代码
sudo mkdir -p /data/nfs_share
sudo chmod 777 /data/nfs_share    # 临时宽松权限,仅用于测试,生产环境请按需设置
sudo chown nobody:nobody /data/nfs_share  # 或指定特定用户

生产环境中建议根据实际用户设置权限,如 chown apache:apache(如果是 web 共享)。


2. 编辑 NFS 主配置文件

配置文件路径:/etc/exports

复制代码
sudo vi /etc/exports
添加共享目录及访问控制规则,例如:
复制代码
/data/nfs_share  192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)

或更严格的访问控制:

复制代码
/data/nfs_share  192.168.1.10(rw,sync,no_subtree_check)    # 仅允许 192.168.1.10 读写
/data/nfs_share  192.168.1.0/24(ro)                         # 允许整个网段只读

3. ​NFS 访问控制选项详解

/etc/exports中,每行格式为:

复制代码
共享目录路径  客户端地址(选项1,选项2,...)
常用客户端地址格式:
  • 单个 IP:192.168.1.10

  • 网段:192.168.1.0/24192.168.1.*

  • 所有主机:*(不推荐)

  • 主机名:nfsclient.example.com(需能解析)

常用选项说明:
选项 说明
rw Read & Write,可读写
ro Read Only,只读
sync 同步写入磁盘,更安全(推荐)
async 异步写入,速度快但不安全
no_root_squash 允许 root 用户保持 root 权限​(慎用,有安全风险)
root_squash 将 root 用户映射为匿名用户(nobody)​​(默认,更安全)
no_all_squash 不将所有用户映射为匿名用户
all_squash 所有用户(包括 root)都映射为匿名用户(nobody)​
anonuid=xxx 指定匿名用户的 UID
anongid=xxx 指定匿名用户的 GID
no_subtree_check 不检查子目录权限,提高性能,推荐
subtree_check 检查子目录,更严格(默认,可能影响性能)

4. 使配置生效

每次修改 /etc/exports后,需要重新加载 NFS 配置:

复制代码
sudo exportfs -ra

该命令会重新导出所有共享目录,使新配置生效。

你也可以查看当前已共享的目录:

复制代码
sudo exportfs -v

或查看允许访问的客户端:

复制代码
showmount -e localhost

四、防火墙配置(放行 NFS 相关端口)

NFS 使用多个端口,包括:

  • 2049 (nfs)​​:主 NFS 服务端口

  • 111 (rpcbind / portmapper)​​:RPC 端口,用于服务发现

  • 其它动态端口(用于 NFSv3 数据传输,较复杂)

推荐使用 ​firewalld​ 放行必要端口:

复制代码
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=2049/udp
sudo firewall-cmd --permanent --add-port=111/tcp
sudo firewall-cmd --permanent --add-port=111/udp
sudo firewall-cmd --reload

五、NFS 客户端配置(挂载 NFS 共享目录)

1. 安装 NFS 客户端工具

复制代码
sudo yum install nfs-utils -y

2. 查看服务端共享目录

在客户端机器上执行:

复制代码
showmount -e 192.168.1.100

192.168.1.100替换为你的 NFS 服务器 IP,会列出该服务器共享了哪些目录。


3. 手动挂载 NFS 共享目录

复制代码
sudo mkdir -p /mnt/nfs_client
sudo mount -t nfs 192.168.1.100:/data/nfs_share /mnt/nfs_client
  • -t nfs:指定文件系统类型为 NFS

  • 192.168.1.100:/data/nfs_share:服务器 IP + 共享目录

  • /mnt/nfs_client:客户端挂载点

测试是否成功:

复制代码
df -h
ls /mnt/nfs_client

4. ​客户端自动挂载(开机自动挂载,使用 /etc/fstab)​

编辑 /etc/fstab文件:

复制代码
sudo vi /etc/fstab

添加一行:

复制代码
192.168.1.100:/data/nfs_share  /mnt/nfs_client  nfs  defaults  0  0

说明:

  • 第一列:NFS 服务器地址与共享目录

  • 第二列:本地挂载点

  • 第三列:文件系统类型:nfs

  • 第四列:挂载选项:常用 defaults(包含 rw,suid,dev,exec,auto,nouser,async)

  • 第五、六列:dump 和 fsck 选项,通常为 0 0

保存后,测试挂载:

复制代码
sudo mount -a

如果没有报错,说明配置正确,重启后会自动挂载。


六、NFS 访问控制最佳实践总结

控制维度 推荐配置 说明
共享目录权限 chmod/ chown设置合理权限 避免 777,按需分配用户/组
exports 访问控制 指定 IP 或网段,如 192.168.1.0/24 避免使用 *,限制可访问客户端
读写权限 rw(读写)、ro(只读) 按需分配,一般只读更安全
用户映射 root_squash(默认,推荐)、no_root_squash(慎用) 避免客户端 root 直接获得服务器 root 权限
同步写入 sync(推荐)、async(高性能但危险) 生产环境推荐 sync
子目录检查 no_subtree_check(推荐) 提升性能,一般无害
防火墙 放行 2049/tcp, 111/tcp 等 必须配置,否则客户端无法连接

七、总结:NFS 服务配置流程一览

步骤 操作 说明
1 安装软件 yum install nfs-utils rpcbind
2 启动服务 systemctl start rpcbind nfs-server
3 创建共享目录 mkdir /data/nfs_share
4 配置共享 编辑 /etc/exports,设置访问 IP 和权限选项
5 使配置生效 exportfs -ra
6 配置防火墙 放行 2049, 111 端口或相关服务
7 客户端挂载 mount -t nfs server:/path /mntpoint
8 客户端自动挂载 编辑 /etc/fstab实现开机自动挂载

八、补充:查看 NFS 相关命令

命令 作用
showmount -e 服务器IP 查看 NFS 服务器共享了哪些目录
showmount -a 查看当前主机挂载了哪些 NFS 共享
exportfs -v 查看本机已导出的 NFS 目录及选项
exportfs -ra 重新加载 /etc/exports 配置
rpcinfo -p 查看 RPC 服务注册情况

✅ 总结一句话

在 ​CentOS 7 ​ 上配置 ​NFS 服务器 ,通过编辑 /etc/exports设置共享目录及 ​访问控制选项(IP限制、读写权限、用户映射等)​ ,使用 rpcbindnfs-server服务,并通过 ​防火墙放行端口 ​ 和 ​客户端 /etc/fstab 自动挂载,即可实现高效安全的文件共享服务。


相关推荐
梁正雄14 小时前
linux服务-Nginx+Tomcat+Redis之Session 共享 - 容器compose
linux·nginx·tomcat
咕噜签名-铁蛋14 小时前
云服务器与物理服务器、VPS的区别
运维·服务器
恒创科技HK14 小时前
香港服务器流量有限制和带宽有限制区别在哪?
运维·服务器·网络
fengyehongWorld14 小时前
Linux rsync命令
linux
wanhengidc14 小时前
机架式服务器有什么作用?
运维·服务器·web安全·智能手机·云计算
ITC小浪花、14 小时前
WGL波形生成语言—新手入门学习(例子篇1)
学习·wgl
干啥都是小小白14 小时前
Linux C编程
linux·运维·服务器
赖small强15 小时前
【Linux 网络基础】WebSockets 技术指南
linux·网络·https·websockets·ping/pong
不羁的木木15 小时前
【开源鸿蒙跨平台开发学习笔记】Day03:React Native 开发 HarmonyOS-GitCode口袋工具开发-1
笔记·学习·harmonyos
司铭鸿15 小时前
化学式解析的算法之美:从原子计数到栈的巧妙运用
linux·运维·服务器·算法·动态规划·代理模式·哈希算法