All of lore.kernel.org
 help / color / mirror / Atom feed
* NFS open/setuid/ftruncate problem
@ 2008-06-10 22:05 Luoqi Chen
       [not found] ` <0707E37B6D2E244C85660487B602C9221D9D9846-JF6rn/ZKWM+tJcKNL5McE9BPR1lH4CV8@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Luoqi Chen @ 2008-06-10 22:05 UTC (permalink / raw)
  To: linux-kernel@vger.kernel.org

Hi,

I've recently encountered a problem which could be a bug in the nfs implementation.
It could be illustrated with the following small program,

#include <fcntl.h>
#include <unistd.h>

main()
{
        int fd;

        fd = open("abc", O_WRONLY | O_CREAT, 0644);
        if (fd < 0) {
                perror("open");
                exit(-1);
        }

        write(fd, "test\n", 5);

        setuid(65534);

        if (ftruncate(fd, 3) < 0)
                perror("ftruncate");

        close(fd);
}

Compile and run it as root on an NFS mount without root squash, ftruncate() would
return an EACCESS error. On a local disk, it would complete successfully, leaving
behind a file "abc" with the string "tes". It would also be successful on NFS
if you change the mode from 0644 to 0666 (make sure to set your umask to 0).

I'm not familiar with linux nfs code, but it seems to me that the nfs code does
an additional access mode check in ftruncate/setattr, which is not done on a local
fs. I've checked on freebsd, the program works fine on both local and nfs.

Could someone more familiar with the nfs code take a look? I'm running 2.6.9-42.Elsmp
64-bit, nfsv3 mount. For nfs server, I've tried linux/freebsd and a commercial one
with a proprietary OS.

Thanks
-luoqi

PS: I'm not a subscriber of the linux kernel mailing list, I'd appreciate if any
response could be send to me directly.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-06-11 13:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-10 22:05 NFS open/setuid/ftruncate problem Luoqi Chen
     [not found] ` <0707E37B6D2E244C85660487B602C9221D9D9846-JF6rn/ZKWM+tJcKNL5McE9BPR1lH4CV8@public.gmane.org>
2008-06-10 23:47   ` Trond Myklebust
2008-06-10 23:47     ` Trond Myklebust
2008-06-11  5:24     ` Luoqi Chen
     [not found]       ` <0707E37B6D2E244C85660487B602C9221D9D9883-JF6rn/ZKWM+tJcKNL5McE9BPR1lH4CV8@public.gmane.org>
2008-06-11 13:35         ` Trond Myklebust
2008-06-11 13:35           ` Trond Myklebust

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.