MacOS实现连接Linux NFS服务器过程

 更新时间:2025年10月29日 08:56:51   作者:极客点儿  
本文详细介绍了如何在Ubuntu服务器上设置NFS共享,并提供Mac客户端连接NFS服务的步骤,同时,还讨论了常见问题排查方法和insecure参数的作用,帮助用户更好地理解和配置NFS服务

Ubuntu 为例。

Ubuntu 服务器端设置

1. 进入 root 权限,安装 NFS 服务

apt-get update
apt-get install nfs-kernel-server

2. 创建共享目录

mkdir /data
chown nobody:nogroup /data
chmod 777 /data

3. 配置 /etc/exports 文件

 vi /etc/exports

添加:

/data 192.168.1.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)
  • rw:读写权限。
  • sync:确保数据实时同步写入到磁盘,防止数据丢失。
  • insecure:允许从非特权端口发起的连接。
  • no_subtree_check:关闭子目录检查,提高性能。
  • no_root_squash:允许客户端以 root 身份访问(适用特定需求)。

4. 重新加载 NFS 配置

exportfs -rav

5. 启动并检查 NFS 服务

systemctl restart nfs-kernel-server
systemctl enable nfs-kernel-server
systemctl status nfs-kernel-server

6. 检查共享目录

exportfs -v

Mac 客户端设置

在 Mac 中可以通过命令行和图形界面连接到 NFS 服务器。

1. 通过命令行 mount 挂载

mkdir ~/NFS
mount -t nfs 192.168.1.111:/data ~/NFS

2. 通过图形界面连接到 NFS 服务器

在 Mac 上,点击桌面菜单栏中的 前往 > 连接服务器。

在弹出的窗口中,在服务器地址栏输入以下内容:

3. 自动挂载

打开 /etc/fstab:

vi /etc/fstab

添加:

192.168.1.100:/data /Users/your_username/NFS nfs rw,auto,nofail 0 0

即可!

常见问题排查

1. 权限不足

  • 确保共享目录的权限适配你的需求(如 777 开放权限)。
  • 检查 Mac 客户端用户是否有写权限。

2. 防火墙问题

在 Ubuntu 上允许 NFS 服务通过防火墙:

ufw allow from 192.168.1.0/24 to any port nfs
ufw allow from 192.168.2.0/24 to any port nfs

3. 挂载失败

  • 确保 Mac 可以 ping 通 Ubuntu。
  • 确认 /etc/exports 文件中配置无误。

4. 多个子网

如果客户端所属多个子网网段,需将每个网段都写上.

/data 192.168.1.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)
/data 192.168.2.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)

5. insecure 参数未配置

如果 MacOS 访问不到,切记需要将 insecure 参数加上。这个问题很多同学都遇到过,可以展开详细的说说。

insecure 的作用

insecure 是 macOS 挂载 NFS 时的关键配置,特别是使用 Finder 挂载。如果没有这个选项,macOS 使用的高端口会被服务器拒绝,从而导致挂载失败。

默认情况下,NFS 服务器只接受从 特权端口(小于1024) 发起的连接。这是因为只有 root 用户能够使用特权端口,从而防止普通用户模拟特权连接。

添加 insecure 后,NFS 服务器会接受来自 非特权端口(大于1024) 的连接。这是为了兼容一些客户端(例如 macOS Finder)在非特权端口发起的请求。

insecure 的潜在安全问题

绕过端口限制:

  • 默认情况下,要求客户端使用特权端口是一种简单的安全措施,可以减少普通用户伪装成受信任客户端的风险。
  • 启用 insecure 后,攻击者可以从非特权端口发起请求,更容易伪造连接。

暴露于恶意客户端:

  • 如果你的网络环境不安全(如公网或存在不受信任的设备),启用 insecure 可能会允许未经授权的客户端连接并访问数据。

结合其他不安全配置的风险:

  • 如果同时启用了 no_root_squash,恶意客户端可能以 root 身份访问共享目录,导致数据被修改或删除。

何时使用 insecure 是可以接受的?

在以下场景中,insecure 是可以接受的:

内部网络环境:

  • 如果你的 NFS 服务器和客户端在一个受信任的局域网中,且没有外部访问(如防火墙限制),使用insecure 是可以接受的。

兼容特定客户端:

  • 一些客户端(如 macOS Finder)需要使用非特权端口才能挂载 NFS,因此 insecure 是必需的。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux之UDP和TCP报头管理方式

    Linux之UDP和TCP报头管理方式

    文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗口机制保障数据完整与顺序,适用于需可靠传输的场景
    2025-08-08
  • Linux中Curl参数详解实践应用

    Linux中Curl参数详解实践应用

    在现代网络开发和运维工作中,curl 命令是一个不可或缺的工具,它是一个利用 URL 语法在命令行下工作的文件传输工具,支持多种协议,如 HTTP、HTTPS、FTP 等,本文给大家介绍了Linux中Curl参数详解实践应用,需要的朋友可以参考下
    2025-01-01
  • 详解Centos/Linux下调整分区大小(以home和根分区为例)

    详解Centos/Linux下调整分区大小(以home和根分区为例)

    本篇文章主要介绍了Centos/Linux下调整分区大小(以home和根分区为例),具有一定的参加价值,有需要的同学可以了解一下
    2017-06-06
  • centos7安装部署gitlab服务器的方法

    centos7安装部署gitlab服务器的方法

    这篇文章主要介绍了centos7系统中安装部署gitlab服务器的方法,需要的朋友可以参考下
    2021-07-07
  • centos7下mysql5.6的主从复制详解

    centos7下mysql5.6的主从复制详解

    本篇文章主要介绍了centos7下mysql5.6的主从复制详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Linux系统下Tomcat8启动速度很慢的解决方法

    Linux系统下Tomcat8启动速度很慢的解决方法

    这篇文章主要给大家介绍了关于在Linux系统下Tomcat8启动速度很慢的解决方法,需要的朋友可以参考下
    2017-08-08
  • Ubuntu 16.04与Apache虚拟主机配置的步骤详解

    Ubuntu 16.04与Apache虚拟主机配置的步骤详解

    这篇文章主要给大家介绍了关于Ubuntu 16.04与Apache虚拟主机配置的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ubuntu16.04系统具有一定的参考学习价值,需要的朋友们来一起看看吧。
    2018-04-04
  • linux cgroups详细介绍

    linux cgroups详细介绍

    cgroups(Control Groups) 是 linux 内核提供的一种机制,这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。这篇文章主要介绍了linux cgroups 简介,需要的朋友可以参考下
    2018-08-08
  • 自制Linux终端锁屏工具

    自制Linux终端锁屏工具

    这篇文章主要为大家详细介绍了如何自制Linux终端锁屏工具,具有一定的实用性,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Linux下误删messages文件的找回方法

    Linux下误删messages文件的找回方法

    今天小编就为大家分享一篇关于Linux下误删messages文件的找回方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02

最新评论