Debian

在 Debian 上禁用 NFSv4(伺服器),允許 NFSv3

  • June 25, 2019

Debian 8 系統上的 NFS 伺服器如何限制為 NFSv3?

預設情況下,可以使用 vers=3 和 vers=4 掛載共享。

/etc/default/nfs-核心伺服器:

# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
#RPCMOUNTDOPTS="--manage-gids"
RPCMOUNTDOPTS="--manage-gids --no-nfs-version 4"

這個選項似乎沒有任何效果(rpcinfo 仍然顯示 nfs 接受版本 4)。

結果發現按照中所述修改RPCMOUNTDOPTS變數/etc/default/nfs-kernel-server不起作用,並且有一個錯誤報告:#738063

此變數在rpc.mountd呼叫中使用:

# systemctl status nfs-kernel-server
● nfs-kernel-server.service - LSB: Kernel NFS server support
  Loaded: loaded (/etc/init.d/nfs-kernel-server)
  Active: active (running) since Sun 2016-06-12 19:46:01 CEST; 6s ago
 Process: 15110 ExecStop=/etc/init.d/nfs-kernel-server stop (code=exited, status=0/SUCCESS)
 Process: 15119 ExecStart=/etc/init.d/nfs-kernel-server start (code=exited, status=0/SUCCESS)
  CGroup: /system.slice/nfs-kernel-server.service
          └─15167 /usr/sbin/rpc.mountd --manage-gids --port 2048 --no-nfs-version 4

但是,客戶端仍然可以使用-o vers=4.

相反,必須將此選項傳遞給rpc.nfsd。查看初始化腳本,該變數/etc/init.d/nfs-kernel-server似乎是傳遞給 rpc.nfsd 的唯一變數。RPCNFSDCOUNT它不是為此目的而設計的,但它可以工作,而且它似乎是編輯初始化腳本的唯一選擇。

解決方案

/etc/default/nfs-kernel-server中,將--no-nfs-version 4選項添加到RPCNFSDCOUNT而不是RPCMOUNTDOPTS

# Number of servers to start up
#RPCNFSDCOUNT=8
RPCNFSDCOUNT="8 --no-nfs-version 4"

重啟 NFS 服務:

# systemctl restart nfs-kernel-server

測試它:

# mount -t nfs -o vers=4 SERVER:/data/public /mnt
mount.nfs: Protocol not supported

版本 3 仍然有效:

# mount -t nfs -o vers=3 SERVER:/data/public /mnt

引用自:https://unix.stackexchange.com/questions/205403