I have on my LAN:
* various windows
* various Linux
* various android devices
* raspberry pis
* IP cameras (busybox - a stripped down variant of linux)
My file server is on Linux. I use samba that usually comes with Linux.
Samba can server files for windows, linux, mac, android, etc...
Samba can pretend to be a windows file server or a linux file server.
When serving files like windows, the client sees no permissions or users and symbolic links are resolved on the server before being sent.
When serving files like *nix, the client gets permissions and as the user it is on the server. symbolic links are enabled. This mode can be complicated for the client. and if you're not careful you can delete files on the wrong machine.
About sym links: Lets say you have a symlink on your file server like this:
/myLibrary -> /usr/lib64
On the server, when you cd to myLibrary, you will see files in /usr/lib64.
On the client, if you mount the share to /mnt/tmp, then cd to /mnt/tmp/myLibrary, you will see files in your own local hard drive's /usr/lib64 not what's on the server.
Once you understand this hairy setup, it can be very useful for lets say a RPi web server.