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