Prerequisites
Before setting up Samba, make sure you have:
- SSH access to your VPS
- Root or sudo privileges
- Open firewall ports (139, 445)
Step 1: Install Samba
Connect to your VPS:
ssh hxroot@YOUR_SERVER_IP -p 22
sudo apt update
sudo apt install samba -y
Step 2: Create Shared Directory
sudo mkdir -p /srv/samba/shared
sudo chmod 777 /srv/samba/shared
For restricted access:
sudo mkdir -p /srv/samba/private
sudo chown nobody:nogroup /srv/samba/private
sudo chmod 755 /srv/samba/private
Step 3: Configure Samba
Backup original config:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Edit config:
sudo nano /etc/samba/smb.conf
Add at the end:
[shared]
comment = Shared Folder
path = /srv/samba/shared
browsable = yes
writable = yes
guest ok = yes
read only = no
create mask = 0777
directory mask = 0777
[private]
comment = Private Folder
path = /srv/samba/private
browsable = yes
writable = yes
guest ok = no
read only = no
valid users = smbuser
Step 4: Create Samba User
First create system user:
sudo useradd -M -s /usr/sbin/nologin smbuser
Set Samba password:
sudo smbpasswd -a smbuser
Enable the user:
sudo smbpasswd -e smbuser
Step 5: Restart Samba
sudo systemctl restart smbd
sudo systemctl enable smbd
Step 6: Configure Firewall
sudo ufw allow samba
Or explicitly:
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp
Step 7: Connect from Windows
Open File Explorer and enter:
\YOUR_VPS_IPshared
For private share, use credentials: smbuser / password.
Connect from Linux Client
Install cifs-utils:
sudo apt install cifs-utils -y
Mount Samba share:
sudo mount -t cifs //SERVER_IP/shared /mnt/smb -o username=smbuser,password=yourpass
Set Custom Samba User Home Directory
If you want each user to have their own share:
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
Check Samba Status
sudo smbstatus
View Samba Logs
sudo tail -f /var/log/samba/log.smbd
✅ Samba share configured. Windows/Linux clients can now access shared files.