Summary:
The Linux 2.2.18 NFS v3 server returns bogus and as per RFC-1813 invalid
NFS3ERR_ROFS to ACCESS procedure calls when exporting a file system
read-only, when it should instead return "OK" along with the actual
permissions the client has, ANDed with the permissions the client
queried.
The bug is visible on FreeBSD 4.2-STABLE client which cannot ls The
mounted file system (NFS v2 is fine since it does not have ACCESS).
There is no related log entry in the 2.2.19pre7 change log. I did not
check Linux 2.4.0, 2.4.0-acX or 2.4.1-preX either.
On Tue, 23 Jan 2001, Guy Harris wrote:
> Yes - for one thing, that means that if some client decides, while it's
> asking whether the server whether it can write to a file, to check also
> whether it can read from the file, it can get back an answer to both of
> those questions, even if the file is on a read-only file system.
Yup. Looks like a Linux kernel bug, so I'm cc'ing Alan Cox as kernel
release maintainer as well as linux-kernel to make this a known issue.
I got libpcap 0.6.1 and ethereal 0.8.15 and that's what I found:
FreeBSD 4.2-STABLE sends three NFSPROC3_ACCESS requests, with 0x3f
argument (meaning READ|LOOKUP|MODIFY|EXTEND|DELETE|EXECUTE), and to
each, Linux 2.2.18 sends NFS3ERR_ROFS back, obj_attributes contains the
stat data. ERR_ROFS is invalid here and makes indeed no sense, proper
behaviour would be NFS3_OK with just READ|LOOKUP|EXECUTE set, since the
server can actually access or stat the exported FS. Please correct me if
I'm mistaking what RFC 1813 demands.
client: $ mount server:/space /mnt
$ ls /mnt
ls: mnt: Read-only file system
(FreeBSD 4.2-STABLE)
server: $ ls -ld /space/
drwxrwxrwt 23 root root 706 Jan 2 11:53 /space/
$ grep /space /etc/exports
/space 192.168.0.0/255.255.255.0(ro)
(Linux 2.2.18, nfs-utils 0.2.1)
-- Matthias Andree - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/