Setting up Samba on your Raspberry Pi 1. The first thing that we must do before we setup a SMB/CIFS share on our Raspberry Pi is to make sure everything is up to date. We can update the package list and all our packages by running the following two commands. sudo apt-get update sudo apt-get upgrade 2. Now that we have our Raspbian operating system entirely up to date, we can now proceed on to installing the Samba software to our Raspberry Pi. We can install the packages that we require to setup Samba by running the following command. sudo apt-get install samba samba-common-bin 3. Before we set up our network storage on our Pi, we need to first create a folder that we will share. This folder can be located anywhere, including on a mounted external hard drive. For this tutorial, we will be creating the directory within the “pi” users home directory. Create this folder by running the following command. sudo mkdir -m 1777 /home/pi/shared or sudo mkdir - 1777 /data Directory Permissions Investigating the above command, we can see the easy part of cofiguring a Raspberry Pi Samba Server, creating the directory /data. As the directory is at the root of the file-system we will need administrative permissions. To do this so we run it prefaced with the sudo command. The mode of the directory is set with the -m option: 1: sets the sticky bit. This set on a directory ensures that users can only delete files they own. 7: sets RWX read , write and execute for the user owner 7: sets RWX read , write and execute for the group owner 7: sets RWX read , write and execute for others This directory will be empty at the moment and, of course, the root file-system is limited in size on the Pi to that available from the SD cards. We can use an external drive connected to the USB ports and have this mounted to the /data directory. This then can provide effective storage for your network 4. Now we can share this folder using the Samba software. To do this, we need to modify the samba config file. The “smb.conf” configuration file is where you will store all your settings for your shares. We can begin modifying the config file by running the command below. sudo nano /etc/samba/smb.conf 5. Within this file, add the following to the bottom. This text defines various details of our share. [pimylifeupshare] path = /home/pi/shared writeable=Yes create mask=0777 directory mask=0777 public=no “[pimylifeupshare]” – This defines the share itself, the text between the brackets is the point at which you will access the share. For example, ours will be at the following address: //raspberrypi/pimylifeupshare “path” – This option is the path to the directory on your Raspberry Pi that you want to be shared. “writeable” – When this option is set to “Yes“, it will allow the folder to be writable. “create mask” and “directory mask” – This option defines the maximum permissions for both files and folders. Setting this to 0777 allows users to read, write, and execute. “public” – If this is set to “no” the Pi will require a valid user to grant access to the shared folders. 6. With the changes made to the file, you can now go ahead and save it by pressing CTRL + X then Y followed by ENTER. 7. Next, we need to set up a user for our Samba share on the Raspberry Pi. Without it, we won’t be able to make a connection to the shared network drive. In this example, we will be creating a Samba user called “pi” with the password set to “raspberry“. Run the following command to create the user. You will be prompted afterward to enter the password. sudo smbpasswd -a pi 8. Finally, before we connect to our Raspberry Pi Samba share, we need to restart the samba service so that it loads in our configuration changes. sudo systemctl restart smbd 9. The last thing we should do before we try connecting to our Samba share is to retrieve our Raspberry Pi’s local IP address. First, make sure you’re connected to a network by either connecting Ethernet cable or setup WiFi. While you can connect using the Pi’s network name, we will grab the IP address just in case that option fails to work on your home network. Run the command below to print out the Pi’s local IP Address. hostname -I In the next couple of sections, we will walk you through the process of connecting to your network attached storage on Windows and Mac OS X.