树莓派超全系列教程文档--(55)如何使用网络文件系统NFS

如何使用网络文件系统NFS

    • 网络文件系统 (NFS)
      • 设置基本 NFS 服务器
        • Portmap 锁定(可选)
      • 配置 NFS 客户端
        • 端口映射锁定(可选)
      • 配置复杂的 NFS 服务器
        • 组权限
        • DNS(可选,仅在使用 DNS 时)
        • NIS(可选,仅在使用 NIS 时)
        • 端口映射锁定(可选)
        • 软件包安装和配置
        • 重新启动服务
        • 需要考虑的安全事项
      • 故障排除

文章来源: http://raspberry.dns8844.cn/documentation

原文网址

网络文件系统 (NFS)

网络文件系统 (NFS) 允许您与同一网络上的其他计算机或设备共享位于一台联网计算机上的目录。目录所在的计算机称为 服务器,连接到该服务器的计算机或设备称为客户端。客户端通常通过 mount 共享目录,使其成为其自身目录结构的一部分。共享目录是共享资源或网络共享的一个示例。

NFS 是在 Linux/Unix 环境中创建简单 NAS(网络附加存储)的流行方法。

NFS 可能最适合更永久的网络挂载目录,例如 /home 目录或经常访问的共享资源。如果您想要一个来宾用户可以轻松连接的网络共享,Samba 更适合这项任务。在各个操作系统中都更容易获得临时挂载和分离 Samba 共享的工具。

在部署 NFS 之前,您应该熟悉:

  • Linux 文件和目录权限
  • 挂载和卸载文件系统

设置基本 NFS 服务器

使用以下命令安装所需的软件包:

$ sudo apt install nfs-kernel-server

为了便于维护,我们将所有 NFS 导出隔离在单个目录中,并使用 --bind 选项将实际目录挂载到该目录中。

假设我们要导出用户的主目录,这些目录位于 /home/users 中。首先,我们创建导出文件系统:

$ sudo mkdir -p /export/users

TIP: 如果您计划配置 LDAP/NIS 身份验证,请跳过下面的 chmod 步骤。

授予 /export/export/users 读取、写入和执行权限 ( 777 ),以便您可以从客户端访问 NFS 共享,而无需 LDAP/NIS 身份验证:

$ chmod -R 777 /export

接下来,使用以下命令挂载真正的 users 目录:

$ sudo mount --bind /home/users /export/users

为了避免每次重启后都重新输入这些内容,我们将以下行添加到 /etc/fstab

/home/users    /export/users   none    bind  0  0

有三个配置文件与 NFS 服务器相关:

. /etc/default/nfs-kernel-server
. /etc/default/nfs-common
. /etc/exports

目前 /etc/default/nfs-kernel-server 中唯一重要的选项是 NEED_SVCGSSD 。默认情况下,它设置为 "no" ,这很好,因为我们这次不激活 NFSv4 安全性。

为了自动映射 ID 名称,文件 /etc/idmapd.conf 必须存在于客户端和服务器上,并且内容相同且域名正确。此外,此文件的 Mapping 部分应包含以下行:

[Mapping]Nobody-User = nobody
Nobody-Group = nogroup

但是,请注意,客户端对 Nobody-User 和 Nobody-Group 可能有不同的要求。例如,在 RedHat 变体上,两者都是 nfsnobody 。如果您不确定,请通过以下命令检查是否存在 nobodynogroup

$ cat /etc/passwd
$ cat /etc/group

这样,服务器和客户端就不需要用户共享相同的 UID/GUID。对于使用基于 LDAP 的身份验证的用户,请在客户端的 idmapd.conf 中添加以下几行:

[Translation]Method = nsswitch

这将让 idmapd 知道查看 nsswitch.conf 以确定应在何处查找凭据信息。如果您的 LDAP 身份验证已在运行,则 nsswitch 不需要进一步解释。

要将我们的目录导出到本地网络 192.168.1.0/24 ,请将以下两行添加到 /etc/exports

/export       192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)
/export/users 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async)
Portmap 锁定(可选)

NFS 上的文件对网络上的任何人都开放。作为一项安全措施,您可以限制对指定客户端的访问。

将以下行添加到 /etc/hosts.deny

rpcbind mountd nfsd statd lockd rquotad : ALL

通过首先阻止所有客户端,只有 /etc/hosts.allow (下面添加)中的客户端才被允许访问服务器。

现在将以下行添加到 /etc/hosts.allow

rpcbind mountd nfsd statd lockd rquotad : <list of IPv4s>

其中 <list of IPv4s> 是服务器和所有客户端的 IP 地址列表。(这些必须是 IP 地址,因为 rpcbind 有限制,它支持主机名)。请注意,如果已经设置了 NIS,可以直接将这些地址添加到同一行。

请确保授权 IP 地址列表包含 localhost 地址( 127.0.0.1 ),因为 Ubuntu 最新版本的启动脚本使用 rpcinfo 命令来发现 NFSv3 支持,如果 localhost 无法连接,该命令将被禁用。

最后,要使更改生效,请重新启动服务:

$ sudo systemctl restart nfs-kernel-server

配置 NFS 客户端

现在您的服务器正在运行,您需要设置任何客户端以便能够访问它。首先,安装所需的软件包:

$ sudo apt install nfs-common

在客户端,我们可以使用一个命令挂载:

$ mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/ /mnt

您还可以指定 NFS 服务器主机名而不是其 IP 地址,但在这种情况下,您需要确保主机名可以在客户端解析为 IP。确保始终解析此 IP 的可靠方法是使用 /etc/hosts 文件。

请注意,在 NFSv4 中不需要 <nfs-server-IP>:/export ,而在 NFSv3 中则不需要。根导出 :/ 默认为使用 fsid=0 导出。

我们还可以使用以下命令挂载导出的子树:

$ mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/users /home/users

为确保每次重新启动时都挂载该子树,请在 /etc/fstab 中添加以下行:

<nfs-server-IP>:/ /mnt nfs auto 0 0

如果挂载后, /proc/mounts 中的条目显示为 <nfs-server-IP>:// (带有两个斜杠),则您可能需要在 /etc/fstab 中指定两个斜杠,否则 umount 可能会提示找不到挂载。

端口映射锁定(可选)

将以下行添加到 /etc/hosts.deny

rpcbind : ALL

通过首先阻止所有客户端,只有 /etc/hosts.allow (下面添加)中的客户端才被允许访问服务器。

现在将以下行添加到 /etc/hosts.allow

rpcbind : <NFS server IP address>

其中 <NFS server IP address> 是服务器的 IP 地址。

配置复杂的 NFS 服务器

NFS 用户权限基于用户 ID (UID)。客户端上任何用户的 UID 都必须与服务器上的 UID 匹配,用户才能访问。执行此操作的典型方法是:

  • 手动密码文件同步
  • 使用 LDAP
  • 使用 DNS
  • 使用 NIS

请注意,在主用户具有 root 访问权限的系统上,您必须小心:该用户可以更改系统上的 UID,以允许自己访问任何人的文件。本页假设管理团队是唯一具有 root 访问权限的组,并且他们都受到信任。其他任何内容都代表更高级的配置,这里不再赘述。

组权限

用户的文件访问权限由他们在客户端上的组成员身份决定,而不是服务器上的组成员身份。但是,有一个重要的限制:从客户端传递到服务器的组最多为 16 个,如果用户在客户端上是 16 个以上组的成员,则某些文件或目录可能会意外无法访问。

DNS(可选,仅在使用 DNS 时)

将任何客户端名称和 IP 地址添加到 /etc/hosts。(服务器的 IP 地址应该已经存在。)这样可以确保即使 DNS 发生故障,NFS 仍能正常工作。或者,如果您愿意,也可以依赖 DNS - 这取决于您。

NIS(可选,仅在使用 NIS 时)

这适用于使用 NIS 的客户端。否则,您无法使用网络组,并且应该在 /etc/exports 中指定单独的 IP 或主机名。请阅读 man netgroup 中的 BUGS 部分以获取更多信息。

首先,编辑 /etc/netgroup 并添加一行来对您的客户端进行分类(此步骤不是必需的,但是为了方便):

myclients (client1,,) (client2,,) ...

其中 myclients 是网络组名称。

接下来运行此命令重建 NIS 数据库:

$ sudo make -C /var/yp

文件名 yp 指的是黄页,即 NIS 的前身。

端口映射锁定(可选)

将以下行添加到 /etc/hosts.deny

rpcbind mountd nfsd statd lockd rquotad : ALL

通过首先阻止所有客户端,只有 /etc/hosts.allow (下面添加)中的客户端才被允许访问服务器。

考虑将以下行添加到 /etc/hosts.allow

rpcbind mountd nfsd statd lockd rquotad : <list of IPs>

其中 <list of IPs> 是服务器和所有客户端的 IP 地址列表。由于 rpcbind 中的限制,这些必须是 IP 地址。请注意,如果已经设置了 NIS,则只需将这些地址添加到同一行即可。

软件包安装和配置

安装必要的软件包:

$ sudo apt install rpcbind nfs-kernel-server

编辑 /etc/exports 并添加共享:

/home @myclients(rw,sync,no_subtree_check)
/usr/local @myclients(rw,sync,no_subtree_check)

上述示例将 /home/usr/local 共享给 myclients 网络组中的所有客户端。

/home 192.168.0.10(rw,sync,no_subtree_check) 192.168.0.11(rw,sync,no_subtree_check)
/usr/local 192.168.0.10(rw,sync,no_subtree_check) 192.168.0.11(rw,sync,no_subtree_check)

上述示例将 /home/usr/local 共享给两个具有静态 IP 地址的客户端。如果您希望允许私有网络中指定 IP 地址范围内的所有客户端访问,请考虑以下操作:

/home 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)
/usr/local 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)

此处, rw 使共享可读/写, sync 要求服务器仅在任何更改刷新到磁盘后才回复请求。这是最安全的选项;async 速度更快,但很危险。如果您正在考虑其他选项,强烈建议您阅读 man exports

设置 /etc/exports 后,导出共享:

$ sudo exportfs -ra

每当修改 /etc/exports 时,您都需要运行此命令。

重新启动服务

重新启动 rpcbind 和 NFS 以使更改生效:

$ sudo systemctl restart rpcbind
$ sudo systemctl restart nfs-kernel-server
需要考虑的安全事项

除了上面讨论的 UID 问题之外,还应注意,攻击者可能会伪装成允许映射共享的机器,这允许他们创建任意 UID 来访问您的文件。一个潜在的解决方案是 IPSec。您可以将所有域成员设置为仅通过 IPSec 相互通信,这将有效地验证您的客户端是否是它所说的那个客户端。

IPSec 的工作原理是使用服务器的公钥加密发往服务器的流量,然后服务器发回使用客户端的公钥加密的所有回复。流量使用相应的私钥解密。如果客户端没有它应该拥有的密钥,它就无法发送或接收数据。

IPSec 的替代方案是物理上独立的网络。这需要单独的网络交换机和单独的以太网卡,以及该网络的物理安全性。

故障排除

只有在您成功登录并且您的主目录已解密后,才能在加密的主目录中安装 NFS 共享。这意味着使用 /etc/fstab 在启动时安装 NFS 共享将不起作用,因为您的主目录在安装时尚未解密。有一个简单的方法可以使用符号链接来解决这个问题:

. 创建一个备用目录来安装 NFS 共享:

$ sudo mkdir /nfs
$ sudo mkdir /nfs/music

. 编辑 /etc/fstab 以将 NFS 共享挂载到该目录中:

nfsServer:music    /nfs/music    nfs    auto    0 0

. 在您的 home 中创建一个符号链接,指向实际的挂载位置。例如,在这种情况下,首先删除已经存在的 Music 目录:

$ rmdir /home/user/Music
$ ln -s /nfs/music/ /home/user/Music

上一篇 – 树莓派超全系列教程文档–(54)如何使用rsync在计算机之间同步文件夹
下一篇 – 树莓派超全系列教程文档–(56)如何使用Samba共享文件夹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无法运用pytorch环境、改环境路径、隔离环境

一.未建虚拟环境时 1.创建新项目后&#xff0c;直接运行是这样的。 2.设置中Virtualenv找不到pytorch环境&#xff1f;因为此时没有创建新虚拟环境。 3.选择conda环境&#xff08;全局环境&#xff09;时&#xff0c;是可以下载环境的。 运行结果如下&#xff1a; 是全局环境…

HTML5+CSS3+JS小实例:具有粘性重力的磨砂玻璃导航栏

实例:具有粘性重力的磨砂玻璃导航栏 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width…

NodeJS全栈WEB3面试题——P8项目实战类问题(偏全栈)

&#x1f4e6; 8.1 请描述你做过的 Web3 项目&#xff0c;具体技术栈和你负责的模块&#xff1f; 我主导开发过一个基于 NFT 的数字纪念平台&#xff0c;用户可以上传照片并生成独特的纪念 NFT&#xff0c;结合 IPFS 和 ERC-721 实现永存上链。 &#x1f527; 技术栈&#xf…

3-10单元格行、列号获取(实例:表格选与维度转换)学习笔记

************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…

AI问答-vue3+ts+vite:http://www.abc.com:3022/m-abc-pc/#/snow 这样的项目 在服务器怎么部署

为什么记录有子路径项目的部署&#xff0c;因为&#xff0c;通过子路径可以区分项目&#xff0c;那么也就可以实现微前端架构&#xff0c;并且具有独特优势&#xff0c;每个项目都是绝对隔离的。 要将 Vue3 项目&#xff08;如路径为 http://www.abc.com:3022/m-saas-pc/#/sno…

PostgreSQL-基于PgSQL17和11版本导出所有的超表建表语句

最新版本更新 https://code.jiangjiesheng.cn/article/368?fromcsdn 推荐 《高并发 & 微服务 & 性能调优实战案例100讲 源码下载》 1. 基于pgsql 17.4 研究 查询psql版本&#xff1a;SELECT version(); 查看已知1条建表语句和db中数据关系 SELECT create_hypert…

世事无常,比较复杂,人可以简单一点

2025年6月5日日&#xff0c;17~28℃&#xff0c;一般 待办&#xff1a; 宣讲会 职称材料的最后检查 职称材料有错误&#xff0c;需要修改 期末考试试题启用 教学技能大赛PPT 遇见&#xff1a;部门宣传泰国博士项目、硕士项目、本科项目。 感受或反思&#xff1a;东南亚博士…

B站缓存视频数据m4s转mp4

B站缓存视频数据m4s转mp4 结构分析 结构分析 在没有改变数据存储目录的情况下&#xff0c;b站默认数据保存目录为&#xff1a; Android->data->tv.danmaku.bili->download每个文件夹代表一个集合的视频&#xff0c;比如&#xff0c;我下载的”java从入门到精通“&…

一次Oracle的非正常关闭

数据库自己会关闭吗&#xff1f; 从现象来说Oracle MySQL Redis等都会出现进程意外停止的情况。而这些停止都是非人为正常关闭或者暴力关闭&#xff08;abort或者kill 进程&#xff09; 一次测试环境的非关闭 一般遇到这种情况先看一下错误日志吧。 2025-06-01T06:26:06.35…

linux 串口调试命令 stty

linux 串口调试命令 stty 文章目录 linux 串口调试命令 sttystty 常见命令选项&#xff1a;常用参数&#xff1a;一次性设置串口所有常见参数总结 stty&#xff08;设置终端行模式&#xff09;命令是用来配置终端设备&#xff08;包括串口设备&#xff09;的输入和输出行为的工…

【地址区间划分】

地址区间划分 1 decode_addr1.1 地址区间1.2 变式 本篇博客主要介绍对地址区间划分的一个比较巧妙参数化的做法。 1 decode_addr 遇到一个master转多个slave时&#xff0c;不可避免需要进行对addr总线进行分配地址区间来进行选中&#xff1b; 在这里给出一个可复用且设计思想比…

mysql复合查询mysql子查询

基础表结构创建 表结构包含主外键约束和字符集配置&#xff0c;确保数据完整性 部门表 CREATE TABLE dept (deptno int NOT NULL COMMENT 部门编号,dname varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 部门名称,loc varchar(20) CHARACTE…

vlan(虚拟局域网)逻辑图解+实验详解

VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09; 是一种通过逻辑方式&#xff08;非物理连接&#xff09;将网络设备划分为多个独立广播域的技术。它允许管理员在同一个物理网络中创建多个隔离的虚拟网络&#xff0c;从而提升网络的安全性、灵…

2025年—Comfy UI 和 Stable Diffusion底层原理

为什么要先讲SD原理 &#xff1f; 逻辑理解: ComfyUI是节点式操作&#xff0c;需要自行搭建工作流&#xff0c;理解原理才能灵活定制工作流学习效率: 基础原理不懂会导致后续学习吃力&#xff0c;原理是掌握ComfyUI的关键核心价值: ComfyUI最有价值的功能就是自主搭建工作流&a…

深入理解C#中的Web API:构建现代化HTTP服务的完整指南

在当今的软件开发领域&#xff0c;构建高效、可扩展的Web服务已成为一项基本需求。作为.NET开发者&#xff0c;C#中的Web API框架为我们提供了创建RESTful服务的强大工具。本文将全面探讨Web API的核心概念、实现细节和最佳实践&#xff0c;帮助您掌握这一关键技术。 一、Web A…

起重机指挥人员在工作中需要注意哪些安全事项?

起重机指挥人员在作业中承担着协调设备运行、保障作业安全的关键职责&#xff0c;其安全操作直接关系到整个起重作业的安全性。以下从作业前、作业中、作业后的全流程&#xff0c;详细说明指挥人员需注意的安全事项&#xff1a; 一、作业前的安全准备 资质与状态检查&#xff…

【高等数学】傅里叶级数逼近例子

f ( x ) π 2 − ∣ x ∣ f(x)\frac{\pi}{2}-|x| f(x)2π​−∣x∣ 由于是偶函数只需要求 cos ⁡ ( n x ) , 1 \cos(nx),1 cos(nx),1 的系数 a n 0 a_n 0 an​0, n n n 是偶数 a n 1 ( 2 n − 1 ) 2 a_n \frac{1}{(2n-1)^2} an​(2n−1)21​, n n n 是奇数 则 f ( x )…

PowerBI企业运营分析—全动态盈亏平衡分析

PowerBI企业运营分析—全动态盈亏平衡分析 欢迎来到Powerbi小课堂&#xff0c;在竞争激烈的市场环境中&#xff0c;企业运营分析平台成为提升竞争力的核心工具。 该平台通过整合多源数据&#xff0c;实现关键指标的实时监控&#xff0c;从而迅速洞察业务动态&#xff0c;精准…

用ApiFox MCP一键生成接口文档,做接口测试

日常开发过程中&#xff0c;尤其是针对长期维护的老旧项目&#xff0c;许多开发者都会遇到一系列相同的困扰&#xff1a;由于项目早期缺乏严格的开发规范和接口管理策略&#xff0c;导致接口文档缺失&#xff0c;甚至连基本的接口说明都难以找到。此外&#xff0c;由于缺乏规范…

26考研 | 王道 | 计算机组成原理 | 三、存储系统

26考研 | 王道 | 计算机组成原理 | 三、存储系统 文章目录 26考研 | 王道 | 计算机组成原理 | 三、存储系统3.1 存储系统基本概念3.2 主存储器1. 主存储器的基本组成2. SRAM与DRAM1.DRAM和SRAM对比2.DRAM的刷新3.DRAM的地址线复用技术 3. 只读存储器ROM4.双端口RAM和多模块存储…