Update, Install and Configure Samba
First, update you Ubuntu system:
sudo apt-get update
sudo apt-get upgrade
Then, install Samba:
sudo apt-get install samba
Rename the default Samba configuration file and create a new file with the following content:
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.backup
sudo nano /etc/samba/smb.conf
New Samba configuration content:
[global]
disable netbios = yes
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
dns proxy = no
interfaces = 127.0.0.0/8 eth0
bind interfaces only = yes
smb ports = 445
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
####### Authentication #######
server role = standalone server
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
############ Misc ############
usershare allow guests = yes
#======================= Share Definitions =======================
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
[hot-folders]
path = /wwwroot/production/hot-folders
browseable = yes
readonly = no
force create mode = 0660
force directory mode = 2770
valid users = hf_user
The section heading [hot-folders]
is where we declare the share, where hot-folders
will be the name of our share. This share will map to the folder /wwwroot/production/hot-folders
(which we will create later) and the valid users
lists all the system groups (prefixed with an @
) and users that have permission to access this share. We are going to create a user call hf_user
and give this user permission to access this share.
Create Samba Users
Create a new user called hf_user
with no home folder, nologin script and assigned to an existing system group sambashare
:
sudo adduser --no-create-home --shell /usr/sbin/nologin --ingroup sambashare hf_user
Now set the user's Samba password and enable the account. Note the Samba password can be different to the login password. But it is this password you will have to use to access the shared folder.
sudo smbpasswd -a hf_user
sudo smbpasswd -e hf_user
Create Shared Folder
Create shared folder, set ownership and permission for the share:
sudo mkdir -p /wwwroot/production/hot-folders
sudo chown -R hf_user:sambashare /wwwroot/production/hot-folders
sudo chmod -R 2770 /wwwroot/production/hot-folders
Update Firewall
If your firewall is enabled, you will need to add a rule to allow SMB traffic to passthrough. The simple option is just to use the following command:
sudo ufw allow samba
The rules for Samba can be found in the following folder: /etc/ufw/applications.d
You could also restrict access to specific IP addresses, ranges or subnets.
Restart Samba Server and Test Shared Folder
Restart the Samba service:
sudo service smbd start
To test the share, we will hop onto a Microsoft Windows Server and open File Explorer
and type in the IP address of the Ubunto server in the address bar. In our case, the Samba server is \192.168.200.221.
Explorer will display the shared folder. If we attempt to open the folder, you will be challenged to enter valid credentials to access this folder.