Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
Advertisement