2.7. 配置只使用 NFSv4 的服务器
如果您的网络中没有任何 NFSv3 客户端,则您可以配置 NFS 服务器,以只支持 NFSv4 或其特定的次协议版本。在服务器上仅使用 NFSv4 可减少向网络开放的端口数量。
流程
安装
nfs-utils
软件包:dnf install nfs-utils
# dnf install nfs-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/nfs.conf
文件,并进行以下更改:在
[nfsd]
部分中禁用vers3
参数来禁用 NFSv3:[nfsd] vers3=n
[nfsd] vers3=n
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果您只需要特定的 NFSv4 次版本,请取消所有
vers4.<minor_version>
参数的注释,并相应地设置它们,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用这个配置,服务器仅提供 NFS 版本 4.2。
重要如果您只需要特定的 NFSv4 次版本,则只为次版本设置参数。不要取消
vers4
参数的注释,以避免不可预测地激活或停用次版本。默认情况下,vers4
参数启用或禁用所有 NFSv4 次版本。但是,如果您将vers4
与其他vers
参数一起设置了,则此行为会改变。
禁用所有与 NFSv3 相关的服务:
systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
# systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
rpc.mountd
守护进程配置为不侦听 NFSv3 挂载请求。使用以下内容创建/etc/systemd/system/nfs-mountd.service.d/v4only.conf
文件:[Service] ExecStart= ExecStart=/usr/sbin/rpc.mountd --no-tcp --no-udp
[Service] ExecStart= ExecStart=/usr/sbin/rpc.mountd --no-tcp --no-udp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载
systemd
管理器配置,并重启nfs-mountd
服务:systemctl daemon-reload systemctl restart nfs-mountd
# systemctl daemon-reload # systemctl restart nfs-mountd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:创建一个您要共享的目录,例如:
mkdir -p /nfs/projects/
# mkdir -p /nfs/projects/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要共享一个现有的目录,请跳过这一步。
对
/nfs/projects/
目录设置您需要的权限:chmod 2770 /nfs/projects/ chgrp users /nfs/projects/
# chmod 2770 /nfs/projects/ # chgrp users /nfs/projects/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这些命令在
/nfs/projects/
目录上为users
组设置写权限,并确保对此目录中创建的新条目自动设置同样的组。对您要共享的每个目录添加一个到
/etc/exports
文件的导出点:/nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)
/nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此条目共享
/nfs/projects/
目录,以使192.0.2.0/24
和2001:db8::/32
子网中的客户端具有读和写访问权限。在
firewalld
中打开相关端口:firewall-cmd --permanent --add-service nfs firewall-cmd --reload
# firewall-cmd --permanent --add-service nfs # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用并启动 NFS 服务器:
systemctl enable --now nfs-server
# systemctl enable --now nfs-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在服务器上,验证服务器是否只提供您配置的 NFS 版本:
cat /proc/fs/nfsd/versions -3 +4 -4.0 -4.1 +4.2
# cat /proc/fs/nfsd/versions -3 +4 -4.0 -4.1 +4.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在客户端上,执行以下步骤:
安装
nfs-utils
软件包:dnf install nfs-utils
# dnf install nfs-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 挂载一个导出的 NFS 共享:
mount server.example.com:/nfs/projects/ /mnt/
# mount server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以是
users
组成员的用户身份,在/mnt/
中创建一个文件:touch /mnt/file
# touch /mnt/file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出目录,以验证该文件是否被创建:
ls -l /mnt/
# ls -l /mnt/ total 0 -rw-r--r--. 1 demo users 0 Jan 16 14:18 file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow