How To Configure SAMBA Server And Transfer Files Between Linux & Windows

If you are reading this article it means you have a network at home or office with Windows and Linux hosts or have created a virtual network using VirtualBox and need to send files between a Linux host to Windows. File transfer between Linux and Windows can be done using SAMBA which is an open-source software suite that provides seamless file and print services to SMB/CIFS clients, allowing interoperability between Unix/Linux based system and Windows-based system.

Configure SAMBA Server And Transfer Files Between Linux & Windows

How To Install Samba Server On Ubuntu Linux?

​To configure SAMBA  first step is to install it using the command below – $ sudo apt install samba ​After the installation finishes, all you have to do is configure it. The configuration file is located in /etc/samba/ on a file named smb.conf.When messing with system files, it is always better to make a backup of the file we are about to change. To backup, the file before changing it, make a copy of the file.

$ sudo cp /etc/samba/smb.conf ~ 

​This command will make the backup file in your home directory or alternatively –

$ sudo cp /etc/samba/smb.conf /etc/samba/smb_bkp.conf

​Creating a copy of the file in the same folder as the original file. If you are setting this on a Ubuntu server you can use vim or nano to edit smb.conf file, for Ubuntu desktop just use the default text editor file.

Note that all commands (Server or Desktop) must be run as a root.

$ sudo nano /etc/samba/smb.conf

Then add the information below to the very end of the file – [share]

comment = Ubuntu File Server Share
path = /srv/samba/share
browsable = yes
guest ok = yes
read only = no
create mask = 0755 ​Comment: is a short description of the share.
Path: the path of the directory to be shared. 

This example uses /srv/samba/share because, according to the Filesystem Hierarchy Standard (FHS), /srv is where site-specific data should be served. Technically Samba shares can be placed anywhere on the filesystem as long as the permissions are correct, but adhering to standards is recommended.

browsable: enables Windows clients to browse the shared directory using Windows Explorer.
guest ok: allows clients to connect to the share without supplying a password.
read only: determines if the share is read only or if write privileges are granted. Write privileges are allowed only when the value is no, as is seen in this example. If the value is yes, then access to the share is read only.
create mask: determines the permissions new files will have when created.

Now that Samba is configured, the directory /srv/samba/share needs to be created and the permissions need to be set. Create the directory and change permissions from the terminal –

$ sudo mkdir -p /srv/samba/share
$ sudo chown nobody:nogroup /srv/samba/share/ ​

The -p switch tells mkdir to create the entire directory tree if it does not exist. Finally, restart the samba services to enable the new configuration: sudo systemctl restart smbd.service nmbd.service ​From a Windows client, you should now be able to browse to the Ubuntu file server and see the shared directory.

If your client doesn’t show your share automatically, try to access your server by its IP address, e.g. \\ or hostname in a Windows Explorer window. To check that everything is working try creating a directory from Windows.To create additional shares simply create new [dir] sections in /etc/samba/smb.conf, and restart Samba. Just make sure that the directory you want to share actually exists and the permissions are correct.  


​That is it. You have your first SAMBA server created for sharing with windows based system. Have a different approach for creating SAMBA server? Share with us.


MassiveGRID Banner
6 Comments Text
  • ” … and need to send files between a Linux host to Windows.”.

    Well that is one possibility but the more likely one is that SAMBA is the DEFAULT file sharing protocol for Linux. So even if you ONLY have Linux based machines, in order to share files between them you need to have SAMBA installed and configured as well as a master browser … you neglected to mention that last little detail.

    Of course you can transfer files between linux machines (and windows for that matter) via FTP or another protocol but in order to “share” files the only options are Samba and NTFS. From a practical perspective NTFS is obsolete.

  • When I try to change ownership of my SAMBA share like this:
    sudo chown nobody:nogroup /media/homedirectory/BACKUP
    I get the error “Operation not permitted”

    Any idea what I am doing wrong?

  • Hey, I’m new to this samba. I want to ask..

    I did copy smb.conf file to another directory( I copy and move it into /home/users/Desktop). When I modify smb.conf and use systemctl restart samba.. it’s show error..

    Do you know any command that can help my smb.conf(that I copy) into my desktop directory so it able to work and use to connected with my windows?

  • Leave a Reply

    Your email address will not be published. Required fields are marked *