Samba is an incredibly powerful tool that allows you to create seamless file and printer sharing to SMB/CIFS clients from a Linux server or desktop. With Samba, you can even connect a 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 folders to all clients on that workgroup.

Jump to:

What you will need

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

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

I’ll demonstrate this on Ubuntu Desktop 23.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.

How to install Samba

  1. On your Linux machine, open a terminal window.
  2. Install the necessary software with the command: sudo apt-get install -y samba
  3. Type your sudo password, and hit Enter.
  4. Allow the installation to complete.
  5. Use the command sudo systemctl status smbd to check if the Samba service is started and enabled, so it will start on boot (Figure A).

Figure A

The command line will indicate whether Samba has been started and enabled.
The command line will indicate whether Samba has been started and enabled.
  1. If Samba is not started, use the command sudo systemctl start smbd to start it.
  2. If Samba is not enabled, use the command sudo systemctl enable smbd to enable it.

That’s it — Samba will install and start.

How to configure Samba

The main configuration file for Samba is /etc/samba/smb.conf. Many 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.

SEE: Discover TechRepublic Premium’s web server configuration and management policy.

1. Back up the default configuration file

To that end, make a copy of 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:

  1. Issue the command: sudo cp -pf /etc/samba/smb.conf /etc/samba/smb.conf.bak
  2. Now, open the /etc/samba/smb.conf file in your favorite text editor, and prepare to make some changes.
  3. Look for this line: workgroup = WORKGROUP
  4. Change WORKGROUP to reflect your network needs.

The next section you need to edit is way down in the Share Definitions.

2. Create a directory in Linux you want to share

Before you configure anything with Samba, you will need to create a directory on your Linux server that you will want to share. For this example, we will use /srv/samba. To create this directory:

  1. Use the command: sudo mkdir /srv/samba
  2. Now, make that directory world writable and world browsable via: sudo chmod a+rwx /srv/samba
  3. Go to the bottom of the file, and add the following:

[Anonymous]

path = /srv/samba
browseable = yes
writable = yes
read only = no

guest ok = yes

  1. Save that file, and restart Samba with this command: sudo systemctl restart smbd

You should be able to reach those shares from any machine on your network.

3. Test the share access

Since we set that share as anonymous, users won’t have to log in to access the files and folders within. To test this, you will need the IP address of your Linux server. You can get this via the ip a command:

  1. On any Windows machine on your network, browse to the shared file using File Explorer, with the syntax \\your-server-ip in the address bar and hitting the Enter key, as shown below (Figure B).

Figure B

Browse to the shared file in File Explorer on any Windows machine.
Browse to the shared file in File Explorer on any Windows machine.
  1. Click the Anonymous folder to access the share. Create a new file in there, and save it (Figure C).

Figure C

Create a new file to save to the shared folder.
Create a new file to save to the shared folder.
  1. You can then see the contents of that file from the Linux server in the /smb/samba directory (Figure D).

Figure D

The command line will preview the contents of the file saved to the Samba directory.
The command line will preview the contents of the file saved to the Samba directory.

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 sudo smbpasswd -a shares.
  5. Type and verify a password for the user.
  6. Create the folder with the command sudo mkdir -p /srv/samba-secured.
  7. Change the permissions of the folder with the command sudo chmod -R 0770 /srv/samba-secured.
  8. Change the ownership of the folder with the command sudo chown root:smbgrp /srv/samba-secured.
  9. Now, open the /etc/samba/smb.conf file, and add the following under the Share Definitions or at the bottom of the file:

[SECURED]

path = /srv/samba-secured
valid users = @smbgrp
browseable = yes
writable = yes
read only = no

  1. 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.

In Windows, you will be prompted to enter the credentials you created above (Figure E). Once you do, you will have access to the folder.

Figure E

Windows will ask you to verify your network credentials to access the shared folder.
Windows will ask you to verify your network credentials to access the shared folder.

One important note is that if you connected to the anonymous share above, Windows may not let you log in to the secured share. To remedy that, reboot the Windows computer, and try again.

Bend it to fit

One of the great things about Samba is it allows you to bend it to fit your needs. You can create as many shares as you want (password protected or not), share out printers and even join Windows Domains. This is just the beginning when it comes to using Samba. Follow our guides to learn how to:

Keep in mind that Samba is one of many ways to share resources between Linux and Windows.  If you find this to be overkill for your needs, you may want to consider the more traditional file-sharing approach that makes use of SSH and SFTP on the Linux side and FileZilla on the Windows side.

Subscribe to the Developer Insider Newsletter

From the hottest programming languages to commentary on the Linux OS, get the developer and open source news and tips you need to know. Delivered Tuesdays and Thursdays

Subscribe to the Developer Insider Newsletter

From the hottest programming languages to commentary on the Linux OS, get the developer and open source news and tips you need to know. Delivered Tuesdays and Thursdays