test -r or -x always return false on an NFS mount?

Andrey Repin anrdaemon@yandex.ru
Tue Oct 6 15:46:06 GMT 2020

Greetings, Mario Emmenlauer!

> thanks for the awesome Cygwin, its really great!

> But since today I met a problem: I mounted a Linux NFSv3 share using
> the Windows 10 shipped NFS client. The user and group ID are mapped
> via registry settings AnonymousUid and AnonymousGid in the entry
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

> Everything seems to work quite well, and in `ls -la` I can see the
> file permissions and user and group entries. But when using `test`
> to check for read (`test -r`) or execute permissions (`test -x`), it
> always returns false, even for readable files. `ls` on the other hand
> shows the permissions correctly, and `cat`ing the files works without
> problems.

> I've read https://cygwin.com/cygwin-ug-net/using-filemodes.html
> about the Cygwin file permissions for NFS, and also the NFS account
> mapping at https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nfs,
> but as far as I can see, they are both unrelated. Google turned up no
> useful hits for keywords "cygwin" "test" and "nfs", so I'm a bit at the
> end of my wit.

> Is this a known issue, and/or are there any workarounds? I'm currently
> using `test -e` in place of read or execute checks, but it basically
> breaks all my build scrips.

This is a known issue. For years known.
test only guess -r/-w/-x results based on permissions as it sees them.
But it do not actually try to read/write/execute the subject, which, as you
can imagine, may lead to all sorts of false positives/negatives on filesystems
with less than trivial access control setups.
In other words, don't test for rwx if you can avoid it. The results MAY be

With best regards,
Andrey Repin
Tuesday, October 6, 2020 18:42:12

Sorry for my terrible english...

More information about the Cygwin mailing list