NFS Server 和 Client 的配置
NFS Server 的安装
Linux 上 NFS Server 的安装及配置
在 Linux 上安装 NFS 共享服务:
yum install -y nfs-server
启动 NFS 服务:
systemctl start rpcbind
systemctl start nfs
加入开机自启动:
systemctl enable rpcbind
systemctl enable nfs
共享目录权限对应的配置文件 /etc/exports
配置参数:
- /path/to/share/ 设置 /path/to/share 是要共享的目录
*
表示允许任何地址连接;可以指定IP,指定域名;- rw 表示允许写入;ro 表示只能读取;
- root_squash 表示将 root 用户及所属组都映射为匿名用户或用户组(默认设置)
- no_root_squash 与 root_squash 相反;
- all_squash 表示将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
- no_all_squash 与 all_squash 相反;(默认设置)
- secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
- insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
- sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
- async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
修改配置后,可以通过执行命令使配置立即生效:
exportfs -arv
生产环境中,需要通过 IP地址,读写权限,用户映射等配置进行合理配置,避免因权限问题出现安全漏洞。
配置示例
查看几个共享目录的用户和用户组
# ll /home/www/
# /home/www/root 目录的用户和用户组为 root
drwxr-xr-x 5 root root 61 Jan 9 10:56 share
# /home/www/nfsnobody 目录的用户和用户组为 nfsnobody
drwxr-xr-x 2 nfsnobody nfsnobody 6 Jan 28 09:51 nfsnobody
# /home/www/www 目录的用户和用户组为 www
drwxr-xr-x 2 www www 6 Jan 28 10:12 test
设置 /etc/exports 中的共享目录权限
# cat /etc/exports
# 设置 /home/www/share/ 为共享目录,将 root 用户实际映射为 root 用户及用户组
/home/www/share/ *(rw,no_root_squash,sync)
# 设置 /home/www/nfsnobody/ 为共享目录,并将所有的用户和用户组都映射为 nfsnobody
/home/www/nfsnobody/ *(rw,all_squash,sync)
# 设置 /home/www/test/ 为共享目录,并将所有的用户和用户组都映射为 www(在本机上:997 是 www 的用户ID,995 是 www 用户的组ID)
/home/www/test/ *(rw,sync,anonuid=997,anongid=995)
Linux 上通过 id username 查看对应的用户ID,用户组ID。
共享目录的权限,要与配置文件中指定的相一致,否则目录被挂载之后会出现无法创建文件的错误。
Windows Server 上 NFS Server 的安装及配置
在 Windows Server 2019 上进行安装,打开 【服务器管理器】,选择【添加角色和功能】,在弹出的窗口中一路下一步到【服务器角色】,在【角色】列表中勾选【NFS服务器】,如图所示:
勾选之后,再下一步,最后安装即可,安装完成后,服务器管理器的仪表板左侧的菜单中会有【文件和存储服务】这一项:
在【文件和存储服务】中添加 NFS 共享目录:
选择【NFS共享 - 快速】
填写【共享名称】
设置身份验证:
根据实际情况设置共享权限
共享权限可以设置多组:
NTFS 的权限
需要通过 Web 程序访问 NFS 共享目录时,这里需要添加上一个 everyone 的权限
点击完检查名称后,再确认,然后设置权限为:完全控制
最后确认创建:
NFS Client 的安装
Windows 上 NFS Client 的安装
可以参考腾讯去文档:在Windows客户端上使用CFS文件系统
调试时,通过 net use 的方式挂载共享目录,也需要在注册表中添加 AnonymousUid 和 AnonymousGid。
并且 AnonymousUid 和 AnonymousGid 的类型都是 【DWORD(32 位)值(D)】,使用【QWORD(64 位)值(Q)】的调试不通。
打开【NFS客户端】功能。(在家庭版的操作系统中,没有 NFS客户端功能,专业版和企业版中有)
以 Windows 11 为例,开始 -> 设置 -> 应用 -> 可选功能 -> 更多 Windows 功能,找到【NFS服务】,将【NFS客户端】前端勾选上。
开启【NFS客户端】功能后,需要重启电脑;
在终端(在运行窗口中执行 cmd 打开终端)中执行 mount -h 有输出 mount 的用法即为开启成功;
F:\zhpj\Desktop>mount -h
用法: mount [-o options] [-u:username] [-p:<password | *>] <\\computername\sharename> <devicename | *>
-o rsize=size 设置读取缓冲区的大小(以 KB 为单位)。
-o wsize=size 设置写入缓冲区的大小(以 KB 为单位)。
-o timeout=time 设置 RPC 调用的超时值(以秒为单位)。
-o retry=number 设置软装载的重试次数。
-o mtype=soft|hard 设置装载类型。
-o lang=euc-jp|euc-tw|euc-kr|shift-jis|big5|ksc5601|gb2312-80|ansi
指定用于文件和目录名称的编码。
-o fileaccess=mode 指定文件的权限模式。
这些模式用于在 NFS 服务器上创建的
新文件。使用 UNIX 样式模式位指定。
-o anon 作为匿名用户装载。
-o nolock 禁用锁定。
-o casesensitive=yes|no 指定在服务器上执行区分大小写的文件查找。
-o sec=sys|krb5|krb5i|krb5p
F:\zhpj\Desktop>
Linux 上 NFS Client 的安装
如果没有 mount 命令,需要安装下 nfs 工具包:
yum install -y nfs-utils
客户端上挂载和卸载 NFS 目录
在 Windows 上挂载和卸载 NFS 目录
挂载 NFS 目录
Windows 上的 NFS Client 挂载共享目录后,默认写入文件时的用户和用户组为 -2;
Windows Server 上的 NFS Server 支持用户和用户组为 -2,所以不需要再做调整;
Linux 上的 NFS Server 写入文件时的用户和用户组必须是 root,对应的用户和用户组为 0,所以需要在注册表中配置 AnonymousUid 和 AnonymousGid
NFS Server 部署在 Linux 上
第一步:需要在注册表中添加匿名访问的用户和用户组:
在注册表(在运行窗口中执行 regedit 打开注册表)中找到路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
新建 【DWORD(32 位)值(D)】,数值名称 AnonymousUid,数值数据:0
新建 【DWORD(32 位)值(D)】,数值名称 AnonymousGid,数值数据:0
第二步:添加之后,通过在 CMD 中执行命令重启 NFS 服务,使注册表生效,或者通过重启电脑使注册表生效。
重启 NFS 服务的命令:
net stop nfsclnt
net stop nfsrdr
net start nfsrdr
net start nfsclnt
第三步:进行挂载(添加注册表只在第一次挂载的时候需要,之后再挂载时直接进行这一步即可)
命令:mount IP地址:/path/to/share 本地盘符
示例:将 192.168.131.66 上的 /home/www/test 挂载到本地的 G 盘上:
# 挂载的命令
C:\Users\zhpj>mount 192.168.131.66:/home/www/test G:
G: 现已成功连接到 192.168.131.66:/home/www/test
命令已成功完成。
C:\Users\zhpj>
# 查看已经挂载成功的目录
C:\Users\zhpj>mount
本地 远程 属性
-------------------------------------------------------------------------------
G: \\192.168.131.66\home\www\test UID=0, GID=0
rsize=524288, wsize=524288
mount=soft, timeout=0.8
retry=1, locking=no
fileaccess=755, lang=GB2312-80
casesensitive=no
sec=sys
C:\Users\zhpj>
NFS Server 在 Linux 上,挂载之后:UID=0, GID=0
NFS Server 部署在 Windows 上
此情况,不需要添加注册表,如果之前调试挂载 Linux 的 NFS 时,已经向注册表添加了 AnonymousUid 和 AnonymousGid,需要删除掉,并通过重启 NFS 服务 或者 重启电脑,使注册表的修改生效;
查看 NFS 服务器上可供挂载的共享目录,命令:showmount -e NFS服务器IP,
示例:
F:\zhpj\Desktop>showmount -e 192.168.131.131
导出列表在 192.168.131.131:
/nfs3 所有计算机
/nfs2 所有计算机
/nfs1 所有计算机
F:\zhpj\Desktop>
将 nfs3 挂载到本地的 G 盘:
命令:mount + \\ + NFS服务器IP + \ + 共享目录 + 空格 + 本地盘符 + : + \
示例:mount \\192.168.131.131\nfs3 G:
F:\zhpj\Desktop>mount \\192.168.131.131\nfs3 G:
G: 现已成功连接到 \\192.168.131.131\nfs3
命令已成功完成。
F:\zhpj\Desktop>
挂载后,通过 mount 查看挂载情况:
F:\zhpj\Desktop>mount
本地 远程 属性
-------------------------------------------------------------------------------
G: \\192.168.131.131\nfs3 UID=-2, GID=-2
rsize=32768, wsize=32768
mount=soft, timeout=0.8
retry=1, locking=no
fileaccess=755, lang=GB2312-80
casesensitive=no
sec=sys
F:\zhpj\Desktop>
NFS Server 在 Windows 上,挂载之后:UID=-2 GID=-2
卸载挂载的目录
命令:umount + 挂载的盘符 + :
# 卸载共享目录的命令
C:\Users\zhpj>umount G:
正在断开连接 G: \\192.168.131.66\home\www\nfsnobody
命令已成功完成。
C:\Users\zhpj>
在 Linux 上挂载和卸载 NFS 目录
挂载NFS目录
命令:mount -t nfs + NFS服务器IP + : + NFS服务器上共享目录的绝对路径 + 空格 + 本机挂载到的目录
示例:
将远程 192.168.29.192 上的 /www/share 挂载到本机的 /www/mnt/attach 目录
mount -t nfs 192.168.29.192:/www/share /www/mnt/attach
远程的 /www/share 和 本机的 /www/mnt/attach 这两个目录都需要已经存在。
卸载挂载的目录
命令:umount 本机挂载的目录
示例:将挂载到本机的 /www/mnt/attach 目录卸载掉:
umount /www/mnt/attach/
配置文件中的伪配置
Windows 环境下,在 config.ini 中远程附件目录的配置:
ATTACHMENT_DIR=\\192.168.131.66\home\www\test\
已将 192.168.131.66 上的 /home/www/test 挂载到本地的 G 盘上。
Linux 环境下,在 config.ini 中远程附件目录的配置:
ATTACHMENT_DIR=/www/mnt/attach
已将 192.168.29.192 上的 /www/share 挂载到本机的 /www/mnt/attach
注意:
在 Linux 环境下,不能配置成 \IP\path\to\share 的形式,此形式实际会将附件保存到本机的 server/public/\\IP/path/to/share
目录下,如在 192.168.29.115 上的测试,实际保存的路径是:
[root@localhost ~]# ll /www/wwwroot/project/server/public/\\\\192.168.30.192/
total 0
drwxr-xr-x 3 www www 19 Jan 9 14:58 www
[root@localhost ~]#
标签:www,mount,192.168,Server,Client,NFS,挂载,目录
From: https://www.cnblogs.com/zhpj/p/18027479/the-configuration-of-nfs-server-and-client-1xtjta