CCCPaste

Samba Setup - Ubuntu

Samba file sharing scenario:
• 3 private shares
• Each mapped to one user only
• Force ownership of all files to that user
• 1 public share (read/write for everyone)
• No interactive login allowed

1. Install Samba:
sudo apt update
sudo apt install samba

1a. Enable service:
sudo systemctl enable smbd
sudo systemctl start smbd

2. Create a base directory:
sudo mkdir -p /srv/samba/{user1,user2,user3,public}

3. Create Non-Login System Users
• Disable shell access
• Disable home directory creation

sudo useradd -M -s /usr/sbin/nologin user1
sudo useradd -M -s /usr/sbin/nologin user2
sudo useradd -M -s /usr/sbin/nologin user3

3a. Verify:
getent passwd user1

3b. You should see:
user1:x:1001:1001::/home/user1:/usr/sbin/nologin

✔ Cannot SSH
✔ Cannot log in locally

Public Folder:

Create a shared group:
sudo groupadd smbpublic
sudo usermod -aG smbpublic user1
sudo usermod -aG smbpublic user2
sudo usermod -aG smbpublic user3

Set ownership:
sudo chown root:smbpublic /srv/samba/public
sudo chmod 2775 /srv/samba/public

Explanation:
• 2 sets the SGID bit
• New files inherit group smbpublic
• 775 allows group write

5. Add Samba Passwords
sudo smbpasswd -a user1
sudo smbpasswd -a user2
sudo smbpasswd -a user3

5a. Enable them:
sudo smbpasswd -e user1
sudo smbpasswd -e user2
sudo smbpasswd -e user3

6. Configure Samba
sudo nano /etc/samba/smb.conf

6a. Ensure in [global] section:
security = user
map to guest = never

6b. Private Shares (Ownership Forced). Add:

[user1]
path = /srv/samba/user1
valid users = user1
read only = no
browseable = yes
force user = user1
create mask = 0600
directory mask = 0700

[user2]
path = /srv/samba/user2
valid users = user2
read only = no
browseable = yes
force user = user2
create mask = 0600
directory mask = 0700

[user3]
path = /srv/samba/user3
valid users = user3
read only = no
browseable = yes
force user = user3
create mask = 0600
directory mask = 0700

✔ force user ensures all files are owned by that user
✔ Even if accessed from Windows as that user

7. Public Share. Add:

[public]
path = /srv/samba/public
valid users = @smbpublic
read only = no
browseable = yes
force group = smbpublic
create mask = 0664
directory mask = 2775

Explanation:
• Any authenticated user in smbpublic can read/write
• Group ownership is forced
• SGID keeps group consistent

8. Test Configuration
sudo testparm

If no errors:
sudo systemctl restart smbd

9. Firewall (if enabled)
sudo ufw allow samba

10. What You Now Have:

Share Access Ownership Behavior
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
user1 user1 only All files owned by user1
user2 user2 only All files owned by user2
user3 user3 only All files owned by user3
public All users Group-owned, shared

✔ No SSH login
✔ No shell access
✔ Clean forced ownership
✔ Proper group inheritance