I have a mergerfs filesystem /data which merges /data1 /data2 /data3 /data4, each of which are ext4 filesystems.
I am exporting the directory /data/coihome (actually a directory in /data3) via NFS to 192.168.0.0/24 subnet.
1) I bind mount /data/coihome to /srv/exports/coihome (ownership /srv/exports recursively set to nobody:nogroup)
#REV: our mergerfs of all the /data partitions into /data /data1:/data2:/data3:/data4 /data fuse.mergerfs defaults,allow_other,use_ino,fsname=mergerFS 0 0 #REV: bind /data/coihome to /srv/export/coihome so we can export safely /data/coihome /srv/export/coihome none bind 0 0
2) In /etc/exports I export the /srv/export/coihome (note -- it's bind-mounted to /data/coihome) (note I must have separate fsid for each because of FUSE, see Having trouble exporting FUSE via NFS )
/srv/export 192.168.0.0/24(rw,fsid=0,sync,no_subtree_check) /srv/export/coihome 192.168.0.0/24(rw,fsid=1,nohide,insecure,sync,no_subtree_check)
I have also added option crossmnt to the first line, with no observed behavior change.
Finally, I mount the NFS exported directory to /mnt/coihome
#REV: mount coihome (NFS) coi3:/coihome /mnt/coihome nfs4 _netdev,auto 0 0
Now, the issue: I can modify, create, delete, etc, files in /mnt/coihome with no issue. However, git commands fail with permission errors (insufficient permissions) when modifying files in .git/objects etc.
I have tried modifying ownership/permissions as suggested in several forums, e.g.
Even doing chmod -R 777 does not work.
However, Running commands as superuser (with sudo) does work (no_root_squash in /etc/exports in that situation of course).
If I directly export the non-FUSE system (e.g. /data3/coihome bind-mounted to /srv/exports/coihome) then everything works as expected with no permissions problems. So, going through the FUSE mergerfs is causing some problem that I can not figure out.
Any suggestions or insights would be much appreciated.