Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!decvax!ucbvax!SRI-NIC.ARPA!MKL From: MKL@SRI-NIC.ARPA.UUCP Newsgroups: mod.protocols.tcp-ip Subject: NFS comments Message-ID: <12263989106.13.MKL@SRI-NIC.ARPA> Date: Fri, 19-Dec-86 04:44:13 EST Article-I.D.: SRI-NIC.12263989106.13.MKL Posted: Fri Dec 19 04:44:13 1986 Date-Received: Fri, 19-Dec-86 23:54:34 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 51 Approved: tcp-ip@sri-nic.arpa NFS is claimed to be a general network file system, but it really isn't. As someone who is trying to implement an NFS server for a non-UNIX system, I've got lots of problems. Here are a few: As far as I'm concerned, NFS has no security or authentication. If you want security you must specify exactly which hosts can mount your filesystems and you must trust EVERY single user on those hosts, since they can tell the server that they are whoever they want to be. This isn't really a problem with the file protocol and may be considered a seperate issue, but I wouldn't use a file protocol without security. NFS is claimed to be idempotent, but it really isn't. One example: If you do a file rename and the request is retransmitted, you may get back a success indication if the first request was received, or you'll get back an error if it was the retransmission. There are some fields that are very UNIX specific. A userid field is used to indicate user names for things like file authors. This userid is a number and it is assumed that there is a GLOBAL /etc/passwd file so you can translate numbers to names. This is completely bogus. A userid should be a string, not a number. More could be said about the groupid field. NFS uses very large UDP packets to achieve acceptable performance. This may indicate that the protocol is what really needs to be fixed. There is no attempt at any ASCII conversion between normal systems and UNIX. This of course is the famous CRLF to newline problem which makes sharing of text files between different systems almost useless. Yes, you can write a program to do the conversions, but that ruins the entire idea of file access since you must then do an entire file transfer. Besides that, sharing binary files between different operating systems is almost useless anyways. From a document that lists the design goals of NFS, it appears that it was only intended as a way to provide ACCESS to remote files. It was not and is not a protocol to allow SHARING of the data in those files between non-homogeneous systems. For that reason it is really quite useless as a way to share files between different operating systems (and probably explains why the CRLF/newline problem was left out). It is too bad that they defined a common data representation (XDR) to build the RPC protocol with, but then left it out when dealing with file representation. With that stated, I can probably say that NFS is a good protocol for sharing files between homogeneous (UNIX-like) systems based on non-homogeneous file servers. This doesn't seem like a very interesting or useful design goal though, and I still don't know why I'm bothering to implement it. -------