Samba: Tutorial & Best Practices

A network file system for Windows clients

Samba is a free and open-source software suite that provides file and print services for Microsoft Windows clients. It allows Linux and Unix-like systems to share files and printers with Windows clients, and it also allows Windows clients to access files and printers on Linux and Unix-like systems.

Samba uses the SMB/CIFS protocol to communicate with Windows clients, which makes it easy to integrate with existing Windows networks. It also supports other protocols, such as NFS and FTP, which allows it to interact with other types of systems as well.

To use Samba, you will need to install the Samba software on your Linux or Unix-like system and configure it to share specific directories or printers. You can then access the shared resources from Windows clients using the standard Windows network interface.

Samba is a powerful and flexible tool for managing file and printer sharing in mixed-platform environments, and it is widely used in organizations and businesses to facilitate communication and collaboration between different types of systems.

To install and configure Samba under Linux, you will need to follow these steps:

  • Install Samba: To install Samba on a Debian-based system (such as Ubuntu), you can use the following command:

    sudo apt-get update && sudo apt-get install samba

    To install Samba on a Red Hat-based system (such as CentOS), you can use the following command:

    sudo yum install samba
  • Configure Samba: The main configuration file for Samba is located at /etc/samba/smb.conf. This file contains a large number of options that you can use to configure the behavior of Samba.

    Here are a few basic options that you may want to configure:

  • workgroup: This specifies the name of the Windows workgroup that Samba will join.

  • security: This specifies the security mode that Samba will use. The most common options are user (for user-level security) and share (for share-level security).

  • hosts allow: This specifies a list of IP addresses or subnets that are allowed to access Samba.

  • hosts deny: This specifies a list of IP addresses or subnets that are denied access to Samba.

    To share a directory with Samba, you will need to add a section to the configuration file like this:

    path = /path/to/shared/directory
    browseable = yes
    read only = no
    guest ok = yes

    This will share the directory located at /path/to/shared/directory, and it will allow anyone to access the share without requiring a username or password.

  • Start Samba: Once you have finished configuring Samba, you can start the service using the following command:

    sudo service smbd start

    On some systems, you may need to use a different command to start Samba, such as systemctl start smbd or /etc/init.d/smbd start.

  • Test Samba: To test that Samba is working correctly, you can use a Windows client to access the shared directory. To do this, you will need to open the Windows Explorer and navigate to the "Network" section. You should see the name of the Linux machine running Samba listed under the workgroup name that you specified in the configuration file.

    If you double-click on the Linux machine, you should see the shared directory listed. You should be able to access the shared directory and read or write files to it as if it were a local folder on your Windows machine.

    If you encounter any errors or issues, you may need to check the Samba log files (located in /var/log/samba) for more information.


The settings are located in /etc/samba/smb.conf. First configure the workgroup to which the server should belong:


## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = MyWorkGroup

Now add a directory that should be shared. List all users who should have write access.

path = /path/to/mydir
write list = user

If you would try to connect now from another machine, you would get an error message saying “access denied”. This is because the user is not configured for samba yet. So the next step is to add the user and password like this:

smbpasswd -a user

That's it. Restart the samba server and you should have access to the files on your share.

/etc/init.d/samba restart
Except where otherwise noted, content on this site is licensed under a CC BY-SA 4.0 license CC BY SA