Recently, because of a long due migration from Windows file servers and separate Linux file servers to a single multi-drive-bay server chassis running multiple FreeBSD VMs we had to deal with a bunch of permission issues. The best way to solve these was to run the following commands:
find . -type d -not -path "./.snap" -exec chmod 775 {} \; find . -type f -not -path "./.snap/*" -exec chmod 664 {} \;
These take care to ignore the .snap snapshot directory that's created by FreeBSD, otherwise, you'll have issues down the line.
Also, if you want to ensure that the entire filesystem respects the default layout for shared files where directories are 775 and files are 664. If you also require a change in owner or group you can also run the following commands:
find . -type d -not -path "./.snap" -exec chown nathanpc:staff {} \; find . -type f -not -path "./.snap/*" -exec chown nathanpc:staff {} \;
It's important that if you're going to be creating any NFS shares to maintain a consistent set of permissions to ensure the biggest platform compatibility possible. In order to do this make sure that the user's default group in the server is set to staff (GID 20), since this will always work on all of the BSDs, macOS, and most likely most Linux distributions.