====== 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
For any windows clients (especially Windows 11 you may have to run these commands through powershell (admin) to allow windows to connect nicely (also enable network discovery when prompted)
Set-SmbClientConfiguration -EnableInsecureGuestLogons $true -Force
Set-SmbClientConfiguration -RequireSecuritySignature $false -Force
Set-SmbServerConfiguration -RequireSecuritySignature $false -Force