====== 24.04 Samba Installation ======
Install Samba and the required services.
  apt install samba
Stop the samba service 
  systemctl stop smbd.service
Add the windows server discovery service - so you can find stuff on the network
  apt install wsdd-server
First we will create a samba user and set a password for Windows users to authenticate.
If we want multiple users we can repeat this process.
 adduser --disabled-login smbuser
 adduser --disabled-login smbadmin
 smbpasswd -a smbuser
 smbpasswd -a smbadmin
Now we will create a group to assign to the various shares we are going to create for admin access (read write)
  groupadd -g 10000 smbadmins
We now need to add the users into this group.
  usermod -a -G smbadmins smbadmin
We can also add sysadmin to this group to give it samba RW permissions
  usermod -a -G smbadmins sysadmin
Now we need to create the share directory and set its permissions.
  chown -R smbadmin:smbadmins /path/to/your/share
Change the file permissions 
  chmod -R 2775 /path/to/your/share
This will set the group sticky bit so that new files / folder will inherit group permissions.
Modify smb.conf
  sudo nano /etc/samba/smb.conf
[global]
   workgroup = SCOTTWORLD
   server string = %h server (Samba, Ubuntu)
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   map to guest = bad user
#========== HIT samba over the head, to disable printing =========
   load printers = no
   show add printer wizard = no
   printcap name = /dev/null
   disable spoolss = yes
#======================= Share Definitions =======================
[software]
   path = /srv/data/software
   guest ok = no
   guest only = no
   read only = yes
   write list = @smbadmins
   force group = smbadmins
   create mask = 0775
   directory mask = 2775
[media]
   path = /srv/media
   guest ok = no
   guest only = no
   read only = yes
   write list = @smbadmins
   force group = plex
   force user = plex
   create mask = 0775
   directory mask = 2775
[torrents]
   path = /srv/backup/torrents
   guest ok = no
   guest only = no
   read only = yes
   write list = @smbadmins
   force group = debian-transmission
   force user = smbadmin
   create mask = 0775
   directory mask = 2775
[www]
   path = /srv/data/www
   guest ok = no
   guest only = no
   read only = no
   write list = @smbadmins, smbuser
   force group = www-data
   force user = www-data
   create mask = 0775
   directory mask = 2775
[backup]
   path = /srv/backup
   guest ok = no
   guest only = no
   read only = yes
   write list = @smbadmins
   force group = smbadmins
   create mask = 0770
   directory mask = 2770
[documents]
   path = /srv/data/documents
   guest ok = no
   guest only = no
   read only = yes
   write list = @smbadmins
   force group = smbadmins
   create mask = 0775
   directory mask = 2775
[drop]
   path = /srv/data/drop
   guest ok = no
   guest only = no
   read only = no
   write list = @smbadmins,smbuser
   force group = smbadmins
   create mask = 0775
   directory mask = 2775
You can run a testparm command to check the samba configuration.
  testparm
Then restart the samba service.
  systemctl start smbd.service