Comprehensive Guide to Samba and NFS File Sharing¶
Samba enables seamless file sharing between Linux, Windows, and macOS systems, while NFS provides efficient native file sharing for Unix-based systems. This guide covers both services with security best practices and optimal configurations.
Samba Configuration¶
Base Configuration File
sudo nano /etc/samba/smb.conf
[global]
# Basic server settings
workgroup = WORKGROUP
server role = standalone server
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
# Security settings
map to guest = never
unix password sync = yes
passwd program = /usr/bin/passwd %u
pam password change = yes
obey pam restrictions = yes
# Network configuration
interfaces = 127.0.0.1 eth0
bind interfaces only = yes
client min protocol = SMB2
server max protocol = SMB3
# Performance optimizations
aio read size = 16384
aio write size = 16384
# macOS compatibility
vfs objects = catia fruit streams_xattr
fruit:metadata = stream
fruit:encoding = native
fruit:locking = none
fruit:resource = file
fruit:posix_rename = yes
fruit:zero_file_id = yes
hide files = /.DS_Store/
# Example share configuration
[share_name]
path = /path/to/share
writable = yes
browseable = yes
force create mode = 0660
force directory mode = 0770
valid users = @group
inherit permissions = yes
Share Mount Configuration¶
Secure Credentials Setup
# Create credentials file
sudo nano /root/.smbcredentials
username=your_username
password=your_password
# Secure the file
sudo chmod 600 /root/.smbcredentials
Mount Entry (/etc/fstab
)
# Format: //server/share /mount/point cifs options
//server/share /mnt/share cifs credentials=/root/.smbcredentials,uid=1000,gid=1000,iocharset=utf8,vers=3.0 0 0
NFS Configuration¶
Server Setup
# Edit exports file
sudo nano /etc/exports
# Secure share configuration with specific subnet
/shared/directory 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
Client Mount Configuration
# Create mount point
sudo mkdir -p /mnt/nfs_share
# Add to /etc/fstab
server:/shared/directory /mnt/nfs_share nfs defaults,_netdev,noatime,rsize=8192,wsize=8192 0 0
Service Management¶
Samba Commands
# Verify configuration
testparm
# Manage services
sudo systemctl restart smbd nmbd
sudo systemctl status smbd
# Test mount points
sudo mount -a
NFS Commands
# Export shares
sudo exportfs -a
# Verify exports
sudo exportfs -v
# Restart NFS server
sudo systemctl restart nfs-kernel-server
Security Best Practices¶
- Use SMB3 protocol for enhanced security
- Implement user-based access control
- Restrict share access to specific networks
- Regular security audits
- Keep services updated
- Use strong passwords
- Implement proper file permissions
Prerequisites¶
- Root or sudo access
- Required packages:
# For Samba sudo apt install samba samba-common-bin # For NFS sudo apt install nfs-kernel-server nfs-common
- Proper network configuration
- Firewall rules for ports:
- Samba: 445/tcp
- NFS: 2049/tcp
Troubleshooting Tips¶
- Check service status with
systemctl status
- View logs:
/var/log/samba/
for Samba,/var/log/syslog
for NFS - Test network connectivity with
ping
andtelnet
- Verify permissions on shared directories
- Use
smbclient -L //server
to list Samba shares