Linux – NFS server is exporting the wrong directories

centoslinuxnfs

It is a bit embarrassing to admit, but I have problems getting my NFS server exporting the right directories. I am using an up-to-date CentOS 6.2 on both the client and the server.

The server is up and running, the firewall was disabled during the tests.

On the server side I have created this /etc/exports:

/home/user1/documents/   *(ro,sync)

this directory is the root of a volume of a software raid. mount output as follows:

/dev/mapper/lvm--raid-lvol0 on /home/user1/documents type ext4 (rw,nosuid,nodev)

the command showmount -e on the server shows the correct output:

Export list for servername:
/home/user1/documents (everyone)

I try to mount that share from the client and get the following output:

mount.nfs: access denied by server while mounting servername:/home/user1/documents

However when I look afterwards on the server at the file /proc/fs/nfsd/exports I see more than one mountpoint, but not the right one

# Version 1.2
# Path Client(Flags) # IPs
/       *(ro,root_squash,sync,no_wdelay,no_subtree_check,v4root,fsid=0,uuid=696f3ea6:3d7641f3:b6315631:bd63c833)
/home   *(ro,root_squash,sync,no_wdelay,no_subtree_check,v4root,uuid=696f3ea6:3d7641f3:b6315631:bd63c833)
/home/user1     *(ro,root_squash,sync,no_wdelay,no_subtree_check,v4root,uuid=696f3ea6:3d7641f3:b6315631:bd63c833)

Where do these entries come from and why is there no line starting with /home/user1/documents ? I tried mounting /home/user1 instead of /home/user1/documents from the client and this strangely works.

The UIDs of the user are the same on the server and the client. Could it be a problem that the directory to be exported is mounted itself?

Edit

The file /var/lib/nfs/xtab is empty.

Best Answer

I see you are using NFSv4 (the fsid=0 in the /proc/fs/nfsd/exports output gives it away). NFS roots are rquired for NFSv4. You may have better luck with this /etc/exports.

/home                    *(ro,fsid=0)
/home/user1/documents/   *(ro,sync)

You might also need to edit the domain in /etc/idmapd.conf for the server and clients.

On a side note, I highly recommend replacing that asterisk with a subnet if you don't want your data accessable to untrusted systems.