[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

By David Miller - Unix Technical Support Specialist, CATS


You've just added an A3000UX to your ethernet and you can rcp and ftp
files between UNIX and AmigaDOS using the AS225 TCP/IP software.  Great!
But what about the AS225's Network File System (NFS) client software?
Under AmigaDOS, the NFS software lets your Amiga mount the drives of a NFS
server as normal DOS volumes, but how do you set up a server?

NFS allows one machine to share files with other machines connected to a
network.  NFS lets multiple machines access the same files, so only one
copy of the data is necessary.  A client machine (a client is any machine
that can mount a shared directory) can free some of its disk space by
moving common programs to the server's disk (a server is any machine that
shares a part of its disk with other machines).

There are however limitations when sharing files between machines with
different operating systems.  For example;

*  Filenames - UNIX S5 filesystem does not support filenames longer than
   14 characters.  If you copy files from AmigaDOS to UNIX, make sure
   that they are unique in the first 14 characters.  And don't forget
   about the ".info" files! If you copy a file that has a ".info" file
   associated with it, be sure that the name preceding the ".info" does
   not exceed 9 characters.

*  Permissions - UNIX files have permissions for read, write, and execute.
   There is no delete permission; if you have write access to the
   directory, you can delete any file it contains.  Script and archive
   bits are not supported either, so setting the script or archive bits,
   or clearing the delete bit will not work.

*  Filenotes - UNIX does not support filenotes.  If you copy a file from
   an AmigaDOS filesystem to a UNIX filesystem, any file notes will be
   lost. Likewise, you cannot add a comment to a file on a UNIX
   filesystem.  You will not receive any error indication, but the
   operation will have no effect.

The following notes will walk you step-by-step through the process of
configuring and administering NFS on the A3000UX.  If you have used NFS
before with BSD, Sun/OS, Ultrix, or any other operating system, you should
at least skim over these notes, because the implementation is different
under UNIX SVR4.

To keep this article brief, I'm making the following assumptions:

    *  You know how to use one of the editors shipped with Amiga UNIX.
    *  You know how to log in as root or how to su to root.

If you don't, read the Learning Amiga UNIX and Using Amiga UNIX manuals
which come with the  A3000UX.

The five examples illustrate how to do some simple file sharing with NFS.
Using the concepts discussed in these examples you will be able to select
the options necessary to share files while maintaining system security and
integrity.  But, first, you need to start the networking software on the
A3000UX, if it's not already running.  To do this, type the following:

    # init 3

This changes the operating to ``run-level'' 3, the networking run-level.
Other run-levels include:


      S - single user maintenance mode
      0 - system power off
      1 - single user mode
      2 - multiuser mode w/o networking
      3 - multiuser mode w/ networking
      4 - user defined
      5 - system reboot
      6 - system reboot


To find out what your machine's current run-level is, type:

    # who -r

The output will look something like this:

    run-level 3  Jun 18 18:40    3    0    S

Here's what all of that means:


                 run-level 3  Jun 18 18:40    3    0    S
                 -----------  ------------    -    -    -
                      |            |          |    |    |
    This is the   ____|            |          |    |    |
    current state                  |          |    |    |
    of your machine                |          |    |    |
                                   |          |    |    |
    This is when the current ______|          |    |    |
    run-level was entered                     |    |    |
                                              |    |    |
    This is the current run-level ____________|    |    |
                                                   |    |
    This is the number of times                    |    |
    your machine has been in this _________________|    |
    run-level before.                                   |
                                                        |
    This is the previous run-level _____________________|


This is the host table (/etc/inet/hosts on Amiga UNIX and INET:db/hosts on
AmigaDOS) that I'll be using for the examples:

    #
    #       TCP/IP HOST TABLE
    #
    #
    127.0.0.1       localhost loghost loopback me
    #
    #
    #       Widget works engineering network
    #
    #
    # IP Number     Name          Nickname      Comment
    #
    192.9.120.1      Hydrogen       H           # A3000UX - in comp center
    192.9.120.2      Helium         He          # A2000   - in room 316
    192.9.120.3      Lithium        Li          # A2500   - in room 321
    192.9.120.4      Beryllium      Be          # A3000   - in room 320
    192.9.120.5      Boron          B           # A2500   - in room 119
    192.9.120.6      Carbon         C           # A2000   - in room 119
    192.9.120.7      Nitrogen       N           # A2000   - in room 204
    192.9.120.8      Oxygen         O           # A3000   - in room 220
    192.9.120.9      Fluorine       F           # A2500   - in room 132
    192.9.120.10     Neon           Ne          # A3000   - in room 307


The host table contains a list of IP addresses with node names for each of
those addresses.  The machine uses this list to find other nodes by their
name, rather than their numeric IP address.


Example 1
---------

Hydrogen has a directory called /home/scratch which is for temporary
storage. Everyone should be able to read and write in this directory.  To
share this with the rest of the net, the administrator of Hydrogen would
type:

    share -F nfs -o rw /home/scratch

where:

            share  is the command to share files between hosts.
           -F nfs  tells the program share to use the NFS filesystem.
            -o rw  tells the program share to allow all systems both
                     read and write access to the shared files.  This
                     is the default if you don't supply any options.
                     I've just included it here for completeness.
    /home/scratch  is the directory to be shared.


Example 2
---------

Hydrogen also has a large disk attached as /storage.  To allow other hosts
to use this as extra disk space type the following:

    share -F nfs -o rw=Helium /storage/Helium
    share -F nfs -o rw=Lithium /storage/Lithium
            ...
    share -F nfs -o rw=Ne /storage/Neon

where:

       -o rw=name  tells share to allow <name> to mount this resource
                     and to deny access to everyone else.

This establishes private storage areas for each host.  This way all of the
hosts can share the disk without having their files readable by everyone
on the network.

Note the use of the nickname Ne for the host Neon.  Nicknames must be
explicitly entered in the host table and may be used interchangeably with
the full name of the host.


Example 3
---------

A group of hosts on the first floor of your building are all being used on
one big project, so they need a common work area to store files.  The
administrator could create a work area in /storage called, for example,
ff-project, for first-floor-project, then give the hosts on the first
floor access to this work area by typing:

    share -F nfs -o rw=Boron:Carbon:Fluorine /storage/ff-project

where:

    -o rw=name[:name]...

allows read and write access to the hosts that are listed and denies
access to everyone else and

    /storage/ff-project

is the name of the directory to share.


Example 4
---------

Hydrogen has a directory called /home/public which is full of useful Amiga
tools.  To share these with the rest of the net, the administrator of
Hydrogen would type:

    share -F nfs -o ro /home/public

where:

    -o ro

tells share to make the shared filesystem readable to all hosts and
writable by no one.  The ``ro'' stands for ``read-only'' and

    /home/public

is the name of the directory to share.

The files are shared read-only for two reasons.  The first is that it
prevents temporary files from being created in the shared partition.  Also
it prevents accidental or malicious removal of shared files.


Example 5
---------

Now, coincidentally, Hydrogen also has a directory called /home/private
which is full of special tools used only by the development staff on the
3rd floor. To share these exclusively with the hosts on the third floor,
the administrator of Hydrogen would type:

    share -F nfs -o ro=He:Li:Be:Ne /home/private

where:

    -o ro=name[:name]...

tells the share program to give the listed hosts read access to the shared
files.  All other hosts will be denied access to the shared files (Note
the use of nicknames) and

    /home/private

is the name of the shared filesystem.

These options may be combined to allow different types of access.  For
example:

    -o rw=Helium:Neon,ro

Everyone can read shared files, but only Helium and Neon have write access.


    -o rw,ro=Fluorine

Everyone except Fluorine may read and write files.  Fluorine may only read
files.

    -o rw=C:O,ro=N

Carbon and Oxygen have read and write access, Nitrogen has read access,
and the others have no access.

To summarize:

    -o ro      Gives everyone read-only access to the shared files
    -o rw      Gives everyone read/write access
    -o ro=...  Gives read-only access to the listed hosts
    -o rw=...  Gives read/write access to the listed hosts


If a host appears in both a rw= and a ro= list, the host will be given
read and write access.  The ordering of the options does not matter.

Since you probably want these directories to be shared automatically every
time you start Amiga UNIX, you need to perform the following steps:


1. Edit the file /etc/inittab and change the line:

         is:2:initdefault
     to
         is:3:initdefault

     This will make your machine go directly to run-level 3 when you boot
     the UNIX Operating System.


2. Edit the file /etc/dfs/dfstab, and enter one line for each directory
   to be shared.  For Example 1 above, this would be the line:

         share -F nfs -o ro /home/public

     So, the complete dfstab for the 5 examples given above would look
     something like this:

         #
         # For Example 1
         #
         share -F nfs -o rw /home/scratch

         #
         # For Example 2
         #
         share -F nfs -o rw=Hydrogen /storage/Hydrogen
         share -F nfs -o rw=Helium /storage/Helium
         share -F nfs -o rw=Lithium /storage/Lithium
         share -F nfs -o rw=Beryllium /storage/Beryllium
         share -F nfs -o rw=Boron /storage/Boron
         share -F nfs -o rw=Carbon /storage/Carbon
         share -F nfs -o rw=Nitrogen /storage/Nitrogen
         share -F nfs -o rw=Oxygen /storage/Oxygen
         share -F nfs -o rw=Fluorine /storage/Fluorine
         share -F nfs -o rw=Neon /storage/Neon

         #
         # For Example 3
         #
         share -F nfs -o rw=Boron:Carbon:Fluorine /storage/ff-project

         #
         # For Example 4
         #
         share -F nfs -o ro /home/public

         #
         # For Example 5
         #
         share -F nfs -o ro=He:Li:Be:Ne /home/private


3. Run the command:

         shareall -F nfs

     which will share all of the NFS filesystems, and the command:

         unshareall -F nfs

     which will make the NFS filesystems unavailable.


For those interested in more information on UNIX SVR4 networking, either
as a user or an administrator, UNIX System V Release 4 - Network User's
and Administrator's Guide, published by Prentice Hall is an excellent
starting place.

If you have any suggestions for the new Amiga UNIX section of Amiga Mail,
please send it to me either via email:

        davidm@cbmvax.commodore.com
                or
        ...!{rutgers,uunet}!cbmvax!davidm

or US Mail:

        ATTN:  David Miller
        Commodore Applications and Technical Support
        Commodore Business Machines, Inc.
        1200 Wilson Drive
        West Chester, PA 19380

or FAX:

        David Miller
        Commodore Business Machines
        +1 215 431 9156

or BIX:

        david.miller