Re: [Ms-nfs41-client-devel] FreeBSD-16.0-CURRENT-amd64-20260224: NFSv4.2 on Windows: mkdir fails, touch works

Roland Mainz <[email protected]>
Newsgroups gmane.os.freebsd.devel.hackers
Message-ID <CAKAoaQkY8G0Y+0wTfT1jer8_QxAmwtnk9EH1eTQJf9FQCGbX9Q@mail.gmail.com>
On Sat, Mar 7, 2026 at 10:28 PM Rick Macklem <[email protected]> wrote:
>
> On Sat, Mar 7, 2026 at 9:27 AM Dan Shelton <[email protected]> wrote:
> >
> > Hello,
> >
> > some odd issue with FreeBSD 16.0-CURRENT main-n284403-895a97c875a0
> > (installed from
> > FreeBSD-16.0-CURRENT-amd64-20260224-16822dac32ab-284159-disc1.iso) and
> > ms-nfs41-client:
> > $ /sbin/nfs_mount -o rw 'F:' 'nfs://42.28.16.228//nfsdata'
> > Successfully mounted '42.28.16.228@NFS@2049' to drive 'F:'
> > $ cd /cygdrive/f/dsheldon/tmp/freebsdtests
> >
> > $ touch x
> > $ mkdir y_dir
> > mkdir: cannot create directory ‘y_dir’: Permission denied
> >
> > I tried this:
> > $ chmod a+rwx .
> > $ mkdir y_dir
> > mkdir: cannot create directory ‘y_dir’: Permission denied
> >
> >
> > No ACLs involved.
> > The same setup works with FreeBSD 15.0.
> >
> > How can I debug this, or is this a known issue?
> Hmm. I don't think anything has changed for mkdir between
> 15.0 and man/16 in the NFS server code.
>
> - If the mkdir request (actually MKNOD in NFSv4) specifies
>   an owner or owner_group, the permissions are checked as follows:
>   - For setting owner to anything other than the uid of the caller in
>     the RPC request's credentials, the caller must be root and the
>     file system exported -maproot=root.
>  - For setting an owner_group, the gid owner_group maps to must
>    be in the gid list of the RPC's credentials.
>
> I'd suggest you capture packets when the mkdir fails and then..
> - Either look at them in wireshark yourself and see what attributes
>   are being set by the operation. In particular, check for any ACL
>   being specified (I know you said ACLs are not involved, but..)
>   along with OWNER and OWNER_GROUP.
> or
> - Make the packet capture available to me and I'll look at it.
>
> I suspect the NFS4ERR_PERM is being generated because of
> the attributes being set by the MKNOD operation and I suspect
> there is some difference between how you have 15.0 configured
> and main/16 configured.
[snip]

It seems to be an issue with |FATTR4_ARCHIVE| ... I filed
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=293691 ("NFSv4.1
client trying to set |FATTR4_ARCHIVE| gets EPERM for file/dir creation
attempts") for this, and added
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292283 ("Bug 292283
- (JAVA) NFSv4.1 client trying to set FATTR4_SYSTEM or FATTR4_HIDDEN
gets EPERM for file and dir creation attemps") as reference since the
same kind of workaround seems to work.

Next release for ms-nfs41-client includes a workaround (see
https://github.com/kofemann/ms-nfs41-client/commit/7156d9f9deb25843e57fd455d8ec67951b82c737)
which should avoid this bug, but I will remove that workaround as soon
as a fixed release version of FreeBSD will become available...

----

Bye,
Roland
-- 
  __ .  . __
 (o.\ \/ /.o) [email protected]
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.