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.
How To 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.
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.
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 = 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), /srvis 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 -
Path: the path of the directory to be shared.
This example uses /srv/samba/share because, according to the Filesystem Hierarchy Standard (FHS), /srvis 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/
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:
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. \192.168.1.1 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.
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.
Conclusion
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.