NFS I
Summary:
- Setting Up The Server
- Testing Your Setup
NFS, the Network File System, is the protocol of choice when it comes to file-sharing between machines running Linux or other variants of Unix (BSD, Mac OS X, Solaris etc). The nice thing about NFS is that the clients do not need to have support for the underlying file system of the server, you can use for example Mac Os X as a server for Linux clients et vice versa. However, if your network also contains non-Unix machines, you are advised to use a different mechanism, SMB for example.
Setting Up The Server
To install the necessary software, type
urpmi nfs-utils
This will install the packages portmap, nfs-utils-clients and nfs-utils. Next, start the portmapper (as root):
service portmap start
Notice that all the installed services will be automatically started on next boot, so you don't have to worry about that. For the current session however, you will have to do it by hand.
Before starting the NFS server, you have to define at least one directory to be exported. You define these directories in '/etc/exports'. I just created a new directory '/usr/export' and my '/etc/exports' file looks like this:
/usr/export 192.168.1.0/255.255.255.0(rw)
The first entry is the directory to be exported. The second marks the machine(s) which are allowed to access it, and the third lists NFS options. In this case the exported directory is /usr/export, open for all machines on the 192.168.1.* subnet, and they are allowed to read and write to the directory (default is read-only).
You'll need a new line for every directory you want to export. NFS does not work across mounts, that is a subdirectory of an exported directory will not be exported if it is on different partition or device. You will have to export it explicitly.You can specify different machines with different NFS options for the same directory:
/usr/export 192.168.1.75(ro) 192.168.1.76(rw)
and you can specify them either by IP address or by DNS hostname. To export a directory to all clients, regardless of their IP, just omit the IPs:
/usr/export (ro)
As for NFS options, there are only two which are of interest: (rw) which enables the clients to write on the exported volume and (no_root_sqash) which allows a root user on a client to exercise root privileges on the exported volume (by default, all NFS clients are using the volume as user 'nobody').
If you change /etc/exports later on, issue
exportfs -ra
every time to make the changes known to the system.
Now start NFS with
service nfs start
Check with
rpcinfo -p
If everything is running correctly you should get something like this:
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100011 1 udp 838 rquotad 100011 2 udp 838 rquotad 100005 1 udp 1031 mountd 100005 1 tcp 1040 mountd 100005 2 udp 1031 mountd 100005 2 tcp 1040 mountd 100005 3 udp 1031 mountd 100005 3 tcp 1040 mountd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100021 1 udp 1032 nlockmgr 100021 3 udp 1032 nlockmgr 100021 4 udp 1032 nlockmgr
Testing Your Setup
While it is in theory possible to mount the NFS share on the client right away, I would recommend that you install portmap on it first. Otherwise trying to mount the share may have some strange side effects (I'm not sure if this is a bug or intended). So:
urpmi portmap && service portmap start
Assuming the NFS server is on 192.168.1.75:
mount 192.168.1.75:/usr/export /mnt/disk
mounts /usr/export read-only from the server on /mnt/disk on the client. Do a
mount -v | grep nfs
and you should get
192.168.1.75:/usr/export on /mnt/disk type nfs (ro,addr=192.168.1.75)
Assuming the client's IP is 192.168.1.76, doing a
showmount 192.168.1.75
on the server should return
Hosts on 192.168.1.75: 192.168.1.76
Congratulations, your NFS setup is ready :-).
Mac OS X users can use NFS, too, since Mac OS X is a Unix in its own right.
There's a small but very important difference, however: By default, the Linux implementation uses a privileged port (i.e. a port lower than 1024) for NFS and denies - for security reasons - cooperation with NFS clients using a non-privileged port. But this is what Mac OS X NFS does. So you have to tell the Mac OS X NFS client to use a privileged port when trying to mount an NFS share from a Linux server. This is done with the "-P" option:
mount -o "-P" 192.168.1.75:/usr/export /mnt/share
will mount the Linux NFS share to the directory '/mnt/share' on the Mac OS X client.
Next Item: Customizing and securing NFS, Pitfalls
Related Resources:
man nfs, man exports, man mount
Revision / Modified: June 23, 2001 / Oct. 31, 2001
Author: Tom Berger
Legal: This page is covered by the GNU Free Documentation License. Standard disclaimers of warranty apply. Copyright LSTB and Mandrakesoft.
Version 1.3 last modified by AdminWiki on 22/03/2004 at 09:44
Document data
- Lost account?
- Join the community, be part of the Club: it's free!
- Get the PWP Download Subscription!