GNOME Bugzilla – Bug 596176
gvfs-fuse fails to start on NFS mounted homes
Last modified: 2013-05-15 10:26:08 UTC
gvfsd usually start a gvfs-fuse-daemon for GVFS mounts, which fuse-mounts to $HOME/.gvfs. This fails if the home directory resides on an NFS share with root squashing enabled. Thus, users in a corporate/networked environment with such NFS homes cannot use gvfs effectively, since a lot of applications rely on the fuse mount. For those unfamiliar with NFS, root squashing means the local UID 0 is mapped to the anonymous/nobody UID on the remote system when it tries to access the NFS share. Since home and subdirectories have permissions 0700, $HOME/.gvfs cannot be accessed by root in this case. This makes the mount() call of gvfs-fuse-daemon fail (verifiable with 'strace gvfs-fuse-daemon /home/user/.gvfs'). There are two solutions to this: a) disable root squashing b) move the .gvfs directory somewhere else a) is not a good choice for security reasons. b) seems not to be possible at the moment. I looked at the sources and found mount->fuse_mountpoint = g_build_filename (g_get_home_dir(), ".gvfs", fs_name, NULL); in daemon/mount.c. Even though gvfs-fuse-daemon can be called with any path you like, it looks like the path which gfvsd uses for the call is hard-coded. I was able to symlink /home/user/.gvfs to /tmp/.gvfs, and this works. But I am not sure if that is a good solution. It would be better to make this configurable. Since there already is an environment variable to disable FUSE mounting altogether, how about a new var GVFS_MOUNT_DIR?
Since this bug report is still marked as "UNCONFIRMED" I will confirm it now. Please see the Ubuntu bug report for a workaround I am using at the moment: https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/435719
We have moved the FUSE mount in $XDG_RUNTIME_DIR.