Samba is an incredibly powerful tool that allows you to create seamless file and printer sharing to SMB/CIFS clients from a Linux server/desktop. With Samba you can even connect that Linux machine to a Windows Domain. But before you can tackle the more challenging aspects of Samba, you first must have it up and running.

We’re not going to deal with Windows Domain controllers yet; instead, we’ll focus on the much simpler task of joining a Windows workgroup and sharing out folders to all clients on that workgroup.

SEE: Web server configuration and management policy (Tech Pro Research)

What you will need

You don’t need much to get Samba up and running. You’ll need:

  • A Windows workgroup
  • A Linux machine
  • A bit of time

I’ll demonstrate this on Ubuntu 16.04, but the process works the same on most Linux distributions. First, we’ll create a folder that will allow anonymous sharing across your workgroup and then create a password-protected share.

Note: You should alter the instructions according to your distribution of choice.

Installing Samba

  1. On your Linux machine, open a terminal window.
  2. Install the necessary software with the command sudo apt-get install -y samba samba-common python-glade2 system-config-samba.
  3. Type your sudo password and hit Enter.
  4. Allow the installation to complete.

That’s it–Samba will install and start.

Configuring Samba

The main configuration file for Samba is /etc/samba/smb.conf. Many people will advise you to back up that file and create a new file with specific contents; however, I suggest using this file, as it is better tuned for the release of Samba you’ve installed.

You should back up the default configuration file so you can safely edit the original and always have a working copy to fall back on. To back up the configuration file, issue the command:

sudo cp -pf /etc/samba/smb.conf /etc/samba/smb.conf.bak

Now open the /etc/samba/smb.conf file in your favorite text editor and prepare to make some changes.

Look for this line:

workgroup = WORKGROUP

Change WORKGROUP to reflect your network needs.

The next section you need to edit is way down in the Share Definitions. Scroll down below that demarcation and add the following:


path = /samba/anonymous
browsable = yes
writable = yes
read only = no
force user = nobody

Save that file and restart Samba with this command:

sudo service smbd restart

You should be able to reach those shares from any machine on your network. Since we set that share as anonymous, users won’t have to log in to access the files and folders within.

Adding password-secured shares

We’ve just added an anonymous share that anyone could access. If you want to add a folder (we’ll use /samba/shares as an example) that is password protected, follow these steps.

  1. Open a terminal window on your Samba server.
  2. Create a new group with the command sudo addgroup smbgrp.
  3. Create a new user with the command sudo useradd shares -G smbgrp.
  4. Create a Samba password for the user with the command smbpasswd -a shares.
  5. Type and verify a password for the user.
  6. Create the folder with the command sudo mkdir -p /samba/shares.
  7. Change the permissions of the folder with the command sudo chmod -R 0770 /samba/shares.
  8. Change the ownership of the folder with the command sudo chown root:smbgrp /samba/shares.

Now open the /etc/samba/smb.conf file and add the following under the Share Definitions:


path = /samba/shares
valid users = @smbgrp
browsable = yes
writable = yes
read only = no

Save the file and restart Samba with the command sudo service smbd restart. You now have a password-protected Samba share ready to use. Anyone that needs access to the share will log in with username shares and the password you set when you issued the command sudo smbpasswd -a shares.

Bend it to fit

One of the great things about Samba is it allows you to bend it to fit your needs. Create as many shares as you want (password protected or not), share out printers, and even join Windows Domains. Make Samba yours, and it will serve you well for a long time.