Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linux mount NFS with specific user

I was searching hours on the Internet, but for this specific problem I could not find any solution.

1: I have a Xubuntu Linux on my PC. I use it in average way: browse the Internet, watch videos, etc. And also it gives home for my PHPStorm app but no the project files. This is the HOST. It has a host-only network: 192.168.56.1

2: I have a VirtualBox Debian Linux (no GUI) system. This meant to be represent a development version of my real webserver. It has all the project files. This VM is on an external drive, so I can take it everywhere (e.g.: to the office). 192.168.56.101. This is the GUEST.

3: on the HOST I use dnsmasq to force every *.dev domain to be redirected to the GUEST. So I can test my projects easily.

4: on the GUEST I exported the /var/www folder in the /etc/exports:

/var/www 192.168.56.1(rw,sync,no_root_squash,no_subtree_check)

The problem: I want to use the PHPStorm on the HOST to edit the files on the GUEST "locally". But I cannot mount the GUEST's /var/www folder into the HOST's /home/gabor/Projects folder with full permissions. I tried to use the following:

$> sudo mount 192.168.56.101:/var/www /home/gabor/Projects

This looks okay for the first time, but the folder is mounted with nobody:nogoup and I have no permissions to edit.

I want the /home/gabor/Projects has the owner gabor:gabor and everything I create in this folder must has the owner www-data:www-data on the Debian side. But for NFS mounting I cannot specify the user.

$> sudo mount -o umask=0022,gid=1000,uid=1000 192.168.56.101:/var/www /home/gabor/Projects
mount.nfs: an incorrect mount option was specified

I also failed to mount --bind the /var/www with different user (should be nobody:nogroup) on the Debian, so that I could export that one...

How can I solve this problem? Please help me. Thank you.

like image 476
Gabor Avatar asked Oct 12 '14 09:10

Gabor


People also ask

How to allow a regular user to Mount NFS share?

In order to allow a regular user to mount NFS share, you can do the following. On the NFS client host (e.g., 10.1.1.20), update /etc/fstab as root. $ sudo vi /etc/fstab 192.168.30.26:/root/backup /usr/backup nfs rw,noauto,user 0 0 ^^^^ In the above, "user" allows a non-root user to mount, and "noauto" means no automatic mount on boot.

How do I mount a NFS file in Linux?

With NFS, you can mount remote directories on your system and work with the remote files as if they were local files. On Linux and UNIX operating systems, you can use the mount command to mount a shared NFS directory on a particular mount point in the local directory tree.

What does NFS mean in Linux?

For the user, NFS means that he or she doesn’t have to log into other systems to access files. An NFS server is a host that owns one or more filesystems and makes them available on the network; NFS clients mount filesystems from one or more servers.

What is the difference between'user'and'noauto'in NFS?

In the above, "user" allows a non-root user to mount, and "noauto" means no automatic mount on boot. On the NFS server host (e.g., 10.1.1.10), enable export for the client as root.


2 Answers

NFS v2 and v3 do not support uid/gid.

on Ubuntu man nfs

like image 138
Clown Man Avatar answered Oct 14 '22 22:10

Clown Man


Adding this answer for posterity, as I ended up here with the same question.

Try this in /etc/export:

/var/www 192.168.56.1(rw,root_squash)

Then on the client, put this in /etc/fstab:

192.168.56.101:/var/www /home/gabor/Projects nfs defaults,user,noauto,relatime,rw 0 0

The user option will allow a non-root user to mount the volume. Adjust other options as needed.

Then on the client again, become the user you want to mount the volume as, and then mount the volume you added to /etc/fstab:

$ id
uid=1000(gabor) gid=1000(gabor) groups=1000(gabor)
$ mount /home/gabor/Projects
$

Make sure that the uid and/or gid are the same on the server. I'm not sure if the usernames can be different or not. Also make sure that the directory being exported on the server is writable by the user or group. See this blog post for additional info about setting up NFS in a similar manner.

Caution: This is an insecure configuration without authentication. Use NFS v4 with Kerberos for strong authentication.

like image 37
MeplatMasher Avatar answered Oct 14 '22 22:10

MeplatMasher