====== NFS - Quick and Dirty Setup ====== Known to work on Slackware 14, 14.1 and 14.2 \\ ====== Assumptions ====== 1) This HOWTO assumes that you are using a **vanilla install of Slackware** and have **not changed** the default HOSTS_ALLOW, HOSTS_DENY, or firewall rules. \\ 2) For this example, the shared directory on the server will be /nfs_share \\ 3) For this example, the mount point of the NFS share will be /mnt/nfs_share \\ 4) We want anyone on our subnet (192.168.1.x) to have RW access the share \\ ====== Overview ====== 1) Setup the server \\ 2) Setup the client \\ 3) Mount the NFS directories on the client \\ ====== Server Setup ====== Add the NFS shares to the /etc/exports file \\ vi /etc/exports add: \\ /nfs_share 192.168.1.1/24(rw,sync,no_subtree_check) Start the NFS and RPC daemons \\ chmod 755 /etc/rc.d/rc.nfsd chmod 755 /etc/rc.d/rc.rpc /etc/rc.d/rc.nfsd start /etc/rc.d/rc.rpc start Export the shares \\ exportfs -a Check to see if the shares are being shared \\ exportfs ====== Client Setup ====== Create the mount point \\ mkdir /mnt/nfs_share Start the RPC daemon \\ chmod 755 /etc/rc.d/rc.rpc /etc/rc.d/rc.rpc start ====== Mounting ====== On the CLIENT machine, you have 3 options here: manually mounting, auto-mount at boot, or semi-auto mount **MANUALLY MOUNT** \\ mount my.nfs.server:/nfs_share /mnt/nfs_share **AUTO-MOUNT AT BOOT** \\ Add the mount command to /etc/fstab \\ vi /etc/fstab add: \\ my.nfs.server:/nfs_share /mnt/nfs_share nfs rw,defaults 0 0 **SEMI-AUTO-MOUNT** \\ Add the mount command to /etc/fstab \\ vi /etc/fstab add: \\ my.nfs.server:/nfs_share /mnt/nfs_share nfs rw,noauto 0 0 then when you want to mount, just run: \\ mount /mnt/nfs_share **NOTE ABOUT AUTO_MOUNTING** \\ If you mount at boot and the server machine is unavailable, it will cause your client machine to take a long time to boot as the NFS client will make multiple attempts to connect and you will have to wait for it to time-out for each attampt. \\ ====== For The Impatient ====== All the steps with no explanation: \\ **SERVER:** \\ echo "/SHARED_DIR YOUR_SUBNET/24(rw,sync,no_subtree_check)" >> /etc/exports chmod 755 /etc/rc.d/rc.nfsd chmod 755 /etc/rc.d/rc.rpc /etc/rc.d/rc.nfsd start /etc/rc.d/rc.rpc start exportfs -a **CLIENT:** \\ mkdir /mnt/nfs_share chmod 755 /etc/rc.d/rc.rpc /etc/rc.d/rc.rpc start echo "YOUR_NFS_SERVER:/SHARED_DIR /CLIENT_MOUNT_POINT nfs rw,defaults 0 0" >> /etc/fstab mount /CLIENT_MOUNT_POINT ====== Problems/Solutions ====== PROBLEM: NFS shares won't mount on client box with a "Stale NFS file handle" error.\\ SOLUTION: \\ 1) Forcibly unmount the directory on the CLIENT machine (if mounted): umount -f /mnt/nfs_share 2) Flush the NFS registry on the SERVER machine: exportfs -f 3) Remount the NFS share 4) No Root Squash: There are many options for NFS and I want to keep this article short but effective so I am leaving out many of the various configuration items that you could do. However there is one option that is worth mentioning, **no_root_squash**. By default NFS will downgrade any files created with the root permissions to the nobody user. This is a security feature that prevents privileges from being shared unless specifically requested. If I create a file as the root user on the client on the NFS share, by default that file is owned by the nobody user. root@client:~# touch /shared/nfs1/file2 root@server:/nfs# ls -la file2 -rw-r--r-- 1 nobody nogroup 0 Nov 18 18:06 file2 Sometimes it is important to share files that are owned as root with the proper permissions, in these cases this can be done by simply adding the **no_root_squash** attribute to the **/etc/exports** configuration. **Edit the /etc/exports file:** /nfs_share 192.168.1.1/24(rw,sync,no_root_squash) ====== Sources ====== * Originally written by [[wiki:user:arfon | arfon]] {{tag>howtos software nfs slackware_13.37 slackware_14.0 slackware_14.1 author_arfon}}