NFS-bug or not ?

2004-05-12 Thread Mikhail E. Zakharov
Hi!

When playing with NFS under FreeBSD, I've noticed something strange.
You know it's impossible to export 2 directories of the same file system on the server 
to the 1 nfs-client:
server# cat /etc/exports
/usr/c client
/usr/d client
server# killall -HUP mountd
server# showmount -e
/usr/c Everyone

There is no /usr/d exported. And we got errors in /var/log/messages:
mountd[377]: can't change attributes for /usr/d
mountd[377]: bad exports list line /usr/d

But it's possible(!) to fool mountd when using the -network key.
Let's try to export /usr/a as read-only system for the whole network, and /usr/b 
writable for one host, and not readable for other. NB! Our NFS-client (192.168.12.98) 
is from 192.168.0.0/16 network. See this example:

server# cat /etc/exports
/usr/a -ro -network 192.168.0.0 -mask 255.255.0.0
/usr/b -mapall=root 192.168.12.98

server# killall -HUP mountd
server# showmount -e
Exports list on localhost:
/usr/b 192.168.12.98
/usr/a 192.168.0.0

As you see /usr/a and /usr/b successfully exported without errors. Now, from the 
client (192.168.12.98) we can mount both of them:

client# mount server:/usr/b /mnt1
client# mount server:/usr/a /mnt
client# mount
server:/usr/b on /mnt1 (nfs)
server:/usr/a on /mnt (nfs)

When we mounted them on client. Let's make additional tests:
client# echo something stupid  /mnt/test.txt
client# echo something stupid1  /mnt1/test1.txt
client# cat /mnt/test.txt
something stupid
client# cat /mnt1/test1.txt
something stupid1

Oh, my God! Both of the exported directories are writable.

Best regards,
Mikhail Zakharov


___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: NFS-bug or not ?

2004-05-12 Thread Charles Swiger
On May 12, 2004, at 3:31 AM, Mikhail E. Zakharov wrote:
When playing with NFS under FreeBSD, I've noticed something strange.
You know it's impossible to export 2 directories of the same file 
system on the server to the 1 nfs-client:
server# cat /etc/exports
/usr/c client
/usr/d client
server# killall -HUP mountd
server# showmount -e
/usr/c Everyone

There is no /usr/d exported. And we got errors in /var/log/messages:
mountd[377]: can't change attributes for /usr/d
mountd[377]: bad exports list line /usr/d
Please refer to _Managing NFS and NIS_, O'Reilly, p92:

2. You cannot export any subdirectory of an exported filesystem unless 
the
 subdirectory is on a different physical device.

 3. You cannot export any parent directory of an exported filesystem 
unless
 the parent is on a different physical device.

Basicly, NFS exports work on a per-filesystem basis, although one can 
use symbolic links to achieve results similar to what you are trying to 
do by exporting different subdirectories of the same filesystem.

There's a more extensive writeup about this here:

http://www.pkix.net/~chuck/doc/NFS/article.html

But it's possible(!) to fool mountd when using the -network key.
Let's try to export /usr/a as read-only system for the whole network, 
and /usr/b writable for one host, and not readable for other. NB! Our 
NFS-client (192.168.12.98) is from 192.168.0.0/16 network. See this 
example:
[ ... ]
When we mounted them on client. Let's make additional tests:
client# echo something stupid  /mnt/test.txt
client# echo something stupid1  /mnt1/test1.txt
client# cat /mnt/test.txt
something stupid
client# cat /mnt1/test1.txt
something stupid1
Oh, my God! Both of the exported directories are writable.
If you export one filesystem ro to an entire subnet, and then also 
export the same filesystem rw to a specific machine, the machine 
granted r/w permissions can write to that filesystem, yes.  That's by 
design.

If some other machine could write to the filesystem, or if you choose 
to export two different filesystems with different permissions, that 
would indicate a problem...

--
-Chuck
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: NFS-bug or not ?

2004-05-12 Thread Mikhail E. Zakharov
 On May 12, 2004, at 3:31 AM, Mikhail E. Zakharov wrote:
  When playing with NFS under FreeBSD, I've noticed something strange.
  You know it's impossible to export 2 directories of the same file 
  system on the server to the 1 nfs-client:
  server# cat /etc/exports
  /usr/c client
  /usr/d client
  server# killall -HUP mountd
  server# showmount -e
  /usr/c Everyone
 
  There is no /usr/d exported. And we got errors in /var/log/messages:
  mountd[377]: can't change attributes for /usr/d
  mountd[377]: bad exports list line /usr/d
 
 Please refer to _Managing NFS and NIS_, O'Reilly, p92:
 
 2. You cannot export any subdirectory of an exported filesystem unless 
 the
   subdirectory is on a different physical device.
 
   3. You cannot export any parent directory of an exported filesystem 
 unless
   the parent is on a different physical device.
 
 Basicly, NFS exports work on a per-filesystem basis, although one can 
 use symbolic links to achieve results similar to what you are trying to 
 do by exporting different subdirectories of the same filesystem.
 
 There's a more extensive writeup about this here:
 
 http://www.pkix.net/~chuck/doc/NFS/article.html
 
  But it's possible(!) to fool mountd when using the -network key.
  Let's try to export /usr/a as read-only system for the whole network, 
  and /usr/b writable for one host, and not readable for other. NB! Our 
  NFS-client (192.168.12.98) is from 192.168.0.0/16 network. See this 
  example:
 [ ... ]
  When we mounted them on client. Let's make additional tests:
  client# echo something stupid  /mnt/test.txt
  client# echo something stupid1  /mnt1/test1.txt
  client# cat /mnt/test.txt
  something stupid
  client# cat /mnt1/test1.txt
  something stupid1
 
  Oh, my God! Both of the exported directories are writable.
 
 If you export one filesystem ro to an entire subnet, and then also 
 export the same filesystem rw to a specific machine, the machine 
 granted r/w permissions can write to that filesystem, yes.  That's by 
 design.

Ok, Per-filesystem basis explains everything. Thaks!
 
 If some other machine could write to the filesystem, or if you choose 
 to export two different filesystems with different permissions, that 
 would indicate a problem...
 
 -- 
 -Chuck
 
 

___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]