Bug#1109999: [nfs-common] default option (${STATDOPTS}) is not used
Le 28/07/2025 à 10:50, Jean-Marc LACROIX a écrit :
Le 28/07/2025 à 07:12, Jochen Sprickerhof a écrit :
Hi Jean-Marc,
* Jean-Marc LACROIX <jeanmarc.lacroix@free.fr> [2025-07-27 23:43]:
In order to increase (a little !) security, and as defined into
http://wiki.debian.org/SecuringNFS, it is a good practice to defined
one static port for nfs-stad daemon.
This feature is available in the man. Furthermore, it is implemented
into /etc/default/nfs-common into variable STATDOPTS.
But is seems that /etc/init/nfs-common script has forgotten to use
this variable when launching daemon. As a result it is not possible
to change ANY option available for this daemon.
On debian bookwoorm, it works.
Find following diff bettween Bookworm and Trixie
diff /tmp/nfs-common-trixie /tmp/nfs-common-bookworm
22a23
RPCGSSDOPTS=
30c31
< [ -x /usr/sbin/rpc.statd ] || exit 0
---
[ -x /sbin/rpc.statd ] || exit 0
42c43
< while read -r DEV _ _ OPTS _
---
while read DEV MTPT FSTYPE OPTS REST
89c90
< if [ -x /sbin/modprobe ] && [ -f /proc/modules ]
---
if [ -x /sbin/modprobe -a -f /proc/modules ]
136c137
< --exec /usr/sbin/rpc.statd
---
--exec /sbin/rpc.statd -- $STATDOPTS
This is no longer supported as stated in the NEWS file:
https://salsa.debian.org/kernel-team/nfs-utils/-/blob/debian/latest/
debian/nfs-common.NEWS?ref_type=heads
The complete removal was done here:
https://salsa.debian.org/kernel-team/nfs-utils/-/
commit/6824312704bc066b5867b9777695e46cce52dcbc
So maybe this needs an other NEWS entry and/or mention in the release-
notes.
Cheers Jochen
According ...
https://salsa.debian.org/kernel-team/nfs-utils/-/blob/debian/latest/
debian/nfs-common.NEWS?ref_type=heads
i understand there is now one new configuration file , Ok.
But, for daemon rpcbind, it seems that previous old configuration file
is still valid, because ...
ansible@vn-nfs-110:~$ uname -a
Linux vn-nfs-110 6.12.30+bpo-armmp-lpae #1 SMP Debian 6.12.30-1~bpo12+1
(2025-06-14) armv7l GNU/Linux
ansible@vn-nfs-110:~$ cat /etc/debian_version
13.0
ansible@vn-nfs-110:~$ dpkg -L rpcbind |grep etc
/etc
/etc/default
/etc/default/rpcbind
/etc/init.d
/etc/init.d/rpcbind
/etc/insserv.conf.d
/etc/insserv.conf.d/rpcbind
ansible@vn-nfs-110:~$
So please, could you confirm that new configuration file /etc/nfs.conf
is not used for this daemon ?
Cordialement
When making migration from old Debian to Trixie, there is still one
warning when launching /etc/init.d/nfs-kernel-server (with sysvinit)
ansible@vn-nfs-110:~$ sudo /etc/init.d/nfs-kernel-server restart
Stopping NFS kernel daemon: mountd nfsd.
Unexporting directories for NFS kernel daemon...done.
Exporting directories for NFS kernel daemon...done.
Starting NFS kernel daemon: nfsd mountdrpc.mountd: svc_tli_create: could
not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
.
My new config file is ....
ansible@vn-nfs-110:~$ sudo cat /etc/nfs.conf |grep -v "#" |grep -v ^$
[nfsrahead]
[exports]
rootdir=/
[exportfs]
debug=all
[gssd]
[lockd]
debug=all
[exportd]
debug=all
state-directory-path=/var/lib/nfs
[mountd]
debug=all
manage-gids=y
state-directory-path=/var/lib/nfs
[nfsdcld]
[nfsd]
debug=all
threads=6
host=vn-nfs-110-service.sub-dns-test.TLD.jml
port=32767
grace-time=90
lease-time=90
udp=n
tcp=y
vers3=y
vers4=y
vers4.0=y
vers4.1=y
vers4.2=y
rdma=n
[statd]
debug=all
port=32766
outgoing-port=32765
name=vn-nfs-110-service.sub-dns-test.TLD.jml
state-directory-path=/var/lib/nfs/statd
no-notify=0
[sm-notify]
[svcgssd]
On this server, ipv6 is prohibited with sysctl usage ...
ansible@hn-odroid-hc1-110:~$ sudo cat
/etc/sysctl.d/kernel_sysctl_ipv6.conf |grep -v "#" |grep -v ^$
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
net.ipv6.conf.all.forwarding=0
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_source_route=0
net.ipv6.conf.all.accept_source_route=0
Therefore, it is not possible to bind one socket to inet6, and this is
behaviour that y want.
The server is running without errors, but because i dont see any
configuration item into /etc/nfs.conf, i would like to remove this warning ?
If you have any suggestion, thanks in advance for your help.
Please note that on previous nfs Debian release (<= bookworm), in the
same context, there is no warning because ....
ansible@vn-nfs-400:~$ cat /etc/debian_version
12.11
ansible@vn-nfs-400:~$ sudo /etc/init.d/nfs-kernel-server restart
Stopping NFS kernel daemon: mountd nfsd.
Unexporting directories for NFS kernel daemon...done.
Exporting directories for NFS kernel daemon...done.
Starting NFS kernel daemon: nfsd mountd.
ansible@vn-nfs-400:~$
ansible@vn-nfs-400:~$ sudo pstree -anp
init,1
|-rpcbind,663 -w -h vn-nfs-400-service
|-syslog-ng,749
| `-syslog-ng,751 -p /var/run/syslog-ng.pid --no-caps
| `-{syslog-ng},26053
|-cron,809
|-sshd,818
| `-sshd,28381
| `-sshd,28383
| `-bash,28384
| `-sudo,28584 pstree -anp
| `-pstree,28585 -anp
|-monit,832 -c /etc/monit/monitrc
| |-{monit},1927
| |-{monit},1936
| `-(verify_rpc_stat,28509)
|-getty,837 115200 console
|-mqtt_send_tempe,924 /usr/local/bin/mqtt_send_temperature.sh
| `-sleep,28583 10
|-rpc.statd,8769 --state-directory-path /var/lib/nfs --port 32766
--outgoing-port 32765 --name vn-nfs-400-service
`-rpc.mountd,28569 --state-directory-path /var/lib/nfs --manage-gids
--port 32767 --num-threads=6
|-rpc.mountd,28570 --state-directory-path /var/lib/nfs
--manage-gids --port 32767 --num-threads=6
|-rpc.mountd,28571 --state-directory-path /var/lib/nfs
--manage-gids --port 32767 --num-threads=6
|-rpc.mountd,28572 --state-directory-path /var/lib/nfs
--manage-gids --port 32767 --num-threads=6
|-rpc.mountd,28573 --state-directory-path /var/lib/nfs
--manage-gids --port 32767 --num-threads=6
|-rpc.mountd,28574 --state-directory-path /var/lib/nfs
--manage-gids --port 32767 --num-threads=6
`-rpc.mountd,28575 --state-directory-path /var/lib/nfs
--manage-gids --port 32767 --num-threads=6
ansible@vn-nfs-400:~$
Second question.
In man nfs, i ha read ....
nfsvers=n
"The NFS protocol version number used to contact the server's NFS
service. If the server does not support the requested version, the mount
request fails. If this option is not specified, the client negotiates a
suitable version with the server, trying version 4 first, version 3
second, and version 2 last. "
Therefore, because i have set all protocols on the /etc/nfs.conf file, i
expect that my client can mount directory with nfs version 4.2, but
jean-marc@vn-trixie-armhf-110:~$ mount |grep nfs
/etc/auto.master.d/autofs_home.autofs on /nfs-home type autofs
(rw,relatime,fd=7,pgrp=786,timeout=7201,minproto=5,maxproto=5,indirect,pipe_ino=7366434)
vn-nfs-110-service:/srv/nfs/home/jean-marc on /nfs-home/jean-marc type
nfs
(rw,noatime,nodiratime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=32767,timeo=600,retrans=2,sec=sys,mountaddr=192.168.54.88,mountvers=3,mountport=60593,mountproto=tcp,local_lock=none,addr=192.168.54.88)
Do you have any suggestion why this client is using vers=3, instead of 4.2 ?
Best regards
--
-- Jean-Marc LACROIX () --
-- mailto : jeanmarc.lacroix@free.fr --
Reply to: