NFS(Network File System)是一种基于 TCP/IP 传输的网络文件系统协议,允许客户端像访问本地文件一样访问远程 NFS 服务器上的文件/共享资源。
同时NFS也是 网络附加存储(NAS)设备必然支持的一种协议,但是因为没有用户认证机制,而且数据在网络上明文传输,安全性很差,所以一般只在局域网中使用。
我的NFS服务端环境:xubuntu-22.04.3
sudo apt install nfs-kernel-server
安装过程
装完成
这里我想把/opt/nfshare文件夹共享出去
(1)首先在/opt目录下创建nfshare文件夹
sudo mkdir nfshare
(2)给文件夹授予最宽松的权限
sudo chmod 777 /opt/nfshare
(3)编辑并配置共享目录
sudo vim /etc/exports
配置示例1
/opt/nfshare *(rw,sync,no_root_squash,no_subtree_check)
/opt/nfshare
:这是要共享的目录。*
:表示这个共享对所有客户端开放,任何可以访问NFS服务器的客户端都可以访问这个共享。rw
:允许读写访问。sync
:写请求会同步地写入硬盘,这意味着写操作会在数据完全写入硬盘后才返回完成状态。no_root_squash
:远程以root用户访问时,保持其root权限,这可以提高灵活性,但可能带来安全风险。no_subtree_check
:禁用子树检查,这通常可以提高性能,尤其是对于大型文件系统。配置示例2
/opt/nfshare 192.169.1.3(rw,sync,no_root_squash,no_subtree_check)
与 配置1唯一的区别在于:
它限制了共享的访问权限仅对IP地址为 192.169.1.3
的客户端开放
配置示例3
/opt/nfshare 192.169.1.3/24(rw,sync,no_root_squash,no_subtree_check)
192.168.1.0/24
表示一个网络地址和它的子网掩码,子网掩码是 255.255.255.0
与 配置1唯一的区别在于:
它限制了共享的访问权限仅对 192.168.1.x
(其中 x
可以是从 0 到 255 的任何数) IP地址的客户端开放。
重新启动nfs服务
sudo systemctl restart nfs-kernel-server
如果我们只是修改了 /etc/exports
文件并希望应用这些更改,执行下面的命令通常就足够了
sudo exportfs -ra
windows+R
输入命令 control.exe
网络——>鼠标右键——>选择映射网络驱动器
连接成功示意图
↓↓↓没有完全成功,继续往下看↓↓↓
当防火墙开启时,从windows客户端就挂载不上nfs,查看日志报错如下:
解决起来还挺麻烦的,索性就把防火墙关了,哈哈~
sudo ufw disable
开启防火墙
sudo ufw enable
↓↓↓这里开始是走向成功的关键↓↓↓
我明明挂载的是/opt/nfshare目录,在win11客户端连接成功的却是/opt目录,而且还没有新建文件的权限
下面开始排查问题
(1)Xubuntu上显示 NFS 服务器上可用的共享目录
showmount -e
如上图所示,我的 NFS 服务器(fenglm-ThinkPad-T460s
)已配置为将 /opt/nfshare
目录导出给 IP 地址为 192.169.1.3
的客户端,是没有问题的。
(2)在Win11客户端上使用cmd命令测试结果,如图还是挂载到/opt目录可以成功
mount \\192.168.1.4\opt\nfshare Z:
继续尝试~,把 IP 改成 * 号,允许所有客户端访问
结果发现,成功啦~,权限问题也都没有了,问题解决
示意图
但是这样设置会有个问题,在同一局域网下,其他的客户端也能访问到我的nfs,所以设置为“*”还是不太安全的,所以我又改成了指定IP模式,发现也是没有问题的。
为了排除缓存问题,我进行了反复的重启nfs服务、甚至重启了电脑,依然没有问题,所以也只能认定是一开始我的配置就出现了缓存才导致没有生效的,最后磕磕绊绊的算是搞出来了,今天就先写到这哈~
想要了解更多实用小干货
可关注我的【知乎】