网络文件系统让客户端通过本地文件系统命名空间访问服务器导出。服务器控制导出和大部分访问策略;客户端控制在何处以及何时挂载获得授权的导出。
网络共享 · 第 4 课
NFS
学习如何发现、挂载、验证并安全自动化 NFS 客户端挂载。
准备客户端
安装发行版的 NFS 客户端工具,在 Debian 系统上通常打包为 nfs-common,在 Red Hat 系统上通常为 nfs-utils。与服务器管理员确认 DNS 或地址可达性、允许的 NFS 版本、防火墙策略和确切导出路径。
showmount -e SERVER 可以列出通过旧式挂载协议提供的导出,但对只使用 NFSv4 的服务器并非始终权威。列出失败不能证明不存在已授权的 NFSv4 导出。
为什么 showmount -e 对 NFSv4 服务器可能不完整?
挂载导出
创建空的专用挂载点,并挂载获准的导出:
$ sudo mkdir -p /mnt/team
$ sudo mount -t nfs server.example.net:/srv/team /mnt/team
只有策略或兼容性要求时才指定版本,例如 -o vers=4.2。不要猜测性能或安全选项。确认最终来源、类型和选项:
$ findmnt --target /mnt/team
挂载命令中的 server.example.net:/srv/team 是什么?
理解身份与权限
NFS 访问结合了服务器导出规则、协议安全、数字身份或目录服务,以及文件系统权限。两台主机显示相同用户名,并不保证数字 ID 相同。传统 AUTH_SYS 发送客户端提供的数字身份,高度依赖可信客户端和网络控制;安全要求较高的环境可以在端到端配置后使用 Kerberos 安全模式。
服务器通常通过 root squash 将远程 root 映射为非特权身份。不要仅仅为解决权限错误就禁用该保护;应检查 ID、目录所有权、导出策略和预期安全模型。
为什么显示名称相同的两个用户可能获得不同的 NFS 权限?
自动化网络挂载
当网络或服务器不可用时,普通的启动时 /etc/fstab 挂载可能延迟启动。根据主机情况,可使用 autofs 进行按需映射,或在测试确切语义后使用 _netdev,nofail,x-systemd.automount 等 systemd 挂载选项:
server.example.net:/srv/team /mnt/team nfs4 rw,_netdev,nofail,x-systemd.automount 0 0
编辑 fstab 前,应保留恢复访问,并使用非破坏性解析器或受控挂载测试进行验证。自动挂载可以改善可用性行为,但不能修复授权、DNS 或服务器中断。
按需自动挂载 NFS 共享的主要好处是什么?
卸载与验证
卸载前,应停止或协调使用共享的进程,并刷新应用程序工作。然后卸载挂载点,并确认它已消失:
$ sudo umount /mnt/team
$ findmnt --target /mnt/team
强制或懒卸载可能隐藏活动引用并造成应用程序错误;只应在已诊断故障且有明确恢复计划时使用这些选项。
正常卸载 NFS 前应该做什么?
课程已完成
你已完成 NFS
现在,你可以在明确身份和可用性假设的情况下操作 NFS 客户端挂载。
确认客户端工具、导出路径、协议和网络策略。
挂载到专用路径,并验证实际来源和选项。
通过身份和导出策略诊断权限。
启动可用性重要时使用经过测试的按需挂载。
协调用户、正常卸载并验证移除。