Samba would be the primary way of sharing files.
The following assumes you are using Ubuntu 22.04 Server or later:
Install samba:
sudo apt install samba
Make it discoverable and accessible to Win7, 8, 10, and 11:
sudo apt install wsdd
Make it discoverable and accessible to MacOS:
sudo apt install avahi-daemon
Notes:
wsdd = WS-Discovery is the way Windows discovers other Windows boxes in the network
avahi = A modern samba server automatically broadcasts itself to the rest of the LAN using this multicast protocol. You just need to enable it by adding the avahi-daemon package.
Both MacOS and >= WIn7 machines should be able to discover the samba server in their respective file managers. You can also connect to the server explicitly by using it's mDNS host name - host name with a .local attached at the end:
I would recommend setting up a Test share until you figure out how you want to set up your shares:
Create a Test folder:
sudo mkdir /Test
Make yourself the owner - I will use my user name as an example:
sudo chown morbius /Test
Then create a share definition at the end of /etc/samba/smb.conf
that looks something like this:
[Test]
path = /Test
read only = No
guest ok = yes
force user = morbius
Then restart smbd:
sudo service smbd restart
Notes:
Changing read only = No
to read only = Yes
will make this a read only share.
Changing guest ok = yes
to guest ok = no
will force a credentials prompt on the client which means you will have to create a local Ubuntu user to each client user then add that user to the samba database - for example:
sudo smbpasswd -a morbius