NFS(4)NFS(4)NAMEnfs - Sun network file system client
SYNOPSISnfs [ -DRv ] [ -p perm ] [ -s srvname ] [ -u passwd group ] addr1 [
addr2 ]
aux/portmap [ -R ] host cmd
aux/nfsmount [ -R ] host cmd
DESCRIPTION
Nfs translates between the Sun network file system protocol (NFS) and
9P, allowing 9P clients to mount file systems on NFS servers. NFS
servers comprise two separate services: a mount service used to obtain
the initial file handle, and a file service used to perform actual file
system operations. The Sun port mapper service is typically used to
find these two services. If one address is given, it is taken to be
the address of a port mapper service; nfs queries the port mapper to
find the addresses of the NFS mount service and file service. If two
addresses are given, the port mapper is bypassed; addr1 is used as the
address of the NFS mount service, and addr2 is used as the address of
the file service.
The options are:
-D print all 9P messages.
-R print all NFS messages.
-v print verbose information about session startup.
-p perm
set the posted service file to have mode perm, which is assumed
to be octal; the default is 600.
-s srvname
post the service as /srv/srvname; the default is /srv/addr1.
-u passwd group
translate user and group names using the passwd and group files,
which are in the traditional Unix format. The translation is
used to present names for user and group in stat(5) and wstat
messages. The translation is also used to choose the user and
group credentials to present for a user. Without this option,
users and groups are presented as decimal numbers, and everyone
attaches as uid -1 (nobody on most Unix systems).
Portmap and nfsmount are test programs to perform port mapper and NFS
mount RPCs. They are useful mainly to help debug problems with startā
ing nfs itself. The -R option causes them to print all RPC messages
sent and received.
Portmap queries a Sun RPC portmap server, which maps integer (program,
version, protocol) triples to port numbers. Program and version are
Sun RPC defined, while protocol is typically TCP (6) or UDP (17). The
commands are:
null a no-op
dump print the entire map
set prog vers proto port
add an entry to (or replace an entry in) the map
unset prog vers proto port
remove an entry from the map
getport prog vers proto
look for an entry with prog, vers, proto in the map, and return
the corresponding port The default command is dump. For running
NFS over UDP, there must be an entry for the NFS v3 mount daemon
(100005, 3, 17) and the NFS v3 server itself (100003, 3, 17).
Nfsmount queries a Sun NFS mount server, which authenticates (ha!)
connections and hands out file handles naming the root of an exported
file system. This handle is used as the basis for a conversation with
the NFS service daemon itself. The commands are:
null a no-op
export dump the export table; each line is a path followed by a list of
machines or groups allowed to mount that path
mnt path
attempt to acquire a file handle for path. the request has user
and group id 1001 and as the system name.
umnt path
notify the mount daemon that a particular path is being
unmounted by the requesting system
umntall
notify the mount daemon that all paths mounted by the requesting
system are being unmounted
dump should also dump an export table, but typically does nothing
EXAMPLE
We use this in our /rc/bin/9fs script to mount all the home directories
served by bopp:
case bopp
if(! test -f /srv/bopp)
nfs-p 666 -u /lib/ndb/1127.passwd /lib/ndb/1127.group bopp
unmount /n/bopp >[2]/dev/null
for(i in u0 u1 u2 u3 u4 u5 u6 u7 u8 u9)
mount -a /srv/bopp /n/bopp /$i
SOURCE
/sys/src/cmd/nfs.c
/sys/src/libsunrpc
SEE ALSOnfsserver(8), srv(4)BUGS
The authentication employed by NFS is laughable. The server simply
trusts the uid, gid, and group list presented by the client.
Nfs speaks only NFS version 3. Older operating systems typically have
reasonable NFS version 2 servers but crash when serving version 3.
NFS(4)