Skip to Content

Partage de fichiers Samba/NFS

Samba est utilisé pour partager des fichiers avec les systèmes Windows (protocole SMB/CIFS), tandis que NFS est utilisé pour le partage de fichiers entre systèmes Linux.

Partage de fichiers Samba

Installer Samba

sudo apt update sudo apt install samba samba-common-bin -y # Check version smbd --version # Check service status sudo systemctl status smbd nmbd

Configuration de base

Le fichier de configuration de Samba est /etc/samba/smb.conf :

# Back up the original configuration sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak # Edit the configuration sudo nano /etc/samba/smb.conf

Partage public (pas d’authentification)

# /etc/samba/smb.conf [global] workgroup = WORKGROUP server string = Ubuntu File Server security = user map to guest = Bad User dns proxy = no # Performance tuning socket options = TCP_NODELAY IPTOS_LOWDELAY read raw = yes write raw = yes max xmit = 65535 [public] path = /srv/samba/public browsable = yes read only = no guest ok = yes create mask = 0664 directory mask = 0775 force user = nobody
# Create the shared directory sudo mkdir -p /srv/samba/public sudo chown nobody:nogroup /srv/samba/public sudo chmod 0775 /srv/samba/public

Partage authentifié

[shared] path = /srv/samba/shared browsable = yes read only = no guest ok = no valid users = @smbgroup create mask = 0660 directory mask = 0770 force group = smbgroup [homes] comment = Home Directories browsable = no read only = no valid users = %S create mask = 0600 directory mask = 0700
# Create a Samba user group sudo groupadd smbgroup # Create a system user and add to the group sudo useradd -M -s /usr/sbin/nologin smbuser sudo usermod -aG smbgroup smbuser # Set a Samba password (independent of the system password) sudo smbpasswd -a smbuser sudo smbpasswd -e smbuser # Enable the user # Create the shared directory sudo mkdir -p /srv/samba/shared sudo chown root:smbgroup /srv/samba/shared sudo chmod 0770 /srv/samba/shared

Valider et démarrer

# Test configuration file syntax testparm # Restart services sudo systemctl restart smbd nmbd # Enable at boot sudo systemctl enable smbd nmbd # Open Samba ports in the firewall sudo ufw allow samba

Connexions clients

Client Linux

# Install client tools sudo apt install cifs-utils smbclient -y # Browse shares smbclient -L //server-ip -U smbuser # Mount a share sudo mkdir -p /mnt/samba sudo mount -t cifs //server-ip/shared /mnt/samba -o username=smbuser,password=yourpass,uid=$(id -u),gid=$(id -g) # Auto-mount at boot (/etc/fstab) # First create a credentials file sudo tee /etc/samba/.credentials << 'EOF' username=smbuser password=yourpass EOF sudo chmod 600 /etc/samba/.credentials # Add an fstab entry echo "//server-ip/shared /mnt/samba cifs credentials=/etc/samba/.credentials,uid=1000,gid=1000,iocharset=utf8 0 0" | sudo tee -a /etc/fstab sudo mount -a

Client Windows

Dans l’Explorateur de fichiers, tapez ce qui suit dans la barre d’adresse :

\\server-ip\shared

Pour mapper un lecteur réseau :

  1. Faites un clic droit sur “Ce PC” -> “Mapper le lecteur réseau”
  2. Saisissez \\server-ip\shared.
  3. Cochez “Se connecter en utilisant différentes informations d’identification”

Partage de fichiers NFS

Installer le serveur NFS

sudo apt update sudo apt install nfs-kernel-server -y # Check status sudo systemctl status nfs-server

Configurer les répertoires exportés

Modifier /etc/exports :

# /etc/exports # Format: directory client(options) # Allow a single IP /srv/nfs/data 192.168.1.100(rw,sync,no_subtree_check) # Allow an entire subnet /srv/nfs/data 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) # Allow multiple clients /srv/nfs/shared 192.168.1.0/24(rw,sync,no_subtree_check) 10.0.0.0/8(ro,sync,no_subtree_check) # Read-only share /srv/nfs/public *(ro,sync,no_subtree_check)

Options communes

OptionsDescriptif
rwAccès en lecture-écriture
roAccès en lecture seule
syncÉcritures synchrones (plus sûres)
asyncÉcritures asynchrones (plus rapides mais plus risquées)
no_subtree_checkDésactiver la vérification des sous-arbres (améliore les performances)
no_root_squashPréserver les privilèges root du client
root_squashMapper la racine sur personne (par défaut)
all_squashMapper tous les utilisateurs sur personne
anonuid/anongidSpécifiez l’UID/GID pour les utilisateurs anonymes

Créer et démarrer des partages

# Create shared directories sudo mkdir -p /srv/nfs/data /srv/nfs/shared /srv/nfs/public sudo chown nobody:nogroup /srv/nfs/data /srv/nfs/shared /srv/nfs/public sudo chmod 0777 /srv/nfs/data # Apply the export configuration sudo exportfs -ra # View current exports sudo exportfs -v # Open NFS ports in the firewall sudo ufw allow from 192.168.1.0/24 to any port nfs sudo ufw allow from 192.168.1.0/24 to any port 111 # rpcbind

Client NFS

# Install the client sudo apt install nfs-common -y # View the server's export list showmount -e server-ip # Mount an NFS share sudo mkdir -p /mnt/nfs sudo mount -t nfs server-ip:/srv/nfs/data /mnt/nfs # Mount with NFS v4 sudo mount -t nfs4 server-ip:/srv/nfs/data /mnt/nfs # Auto-mount at boot (/etc/fstab) echo "server-ip:/srv/nfs/data /mnt/nfs nfs defaults,_netdev 0 0" | sudo tee -a /etc/fstab sudo mount -a

Montage automatique avec autofs

# Install autofs sudo apt install autofs -y # Configure the master map file echo "/mnt/nfs /etc/auto.nfs" | sudo tee -a /etc/auto.master # Configure the NFS map echo "data -rw,soft,intr server-ip:/srv/nfs/data" | sudo tee /etc/auto.nfs # Restart autofs sudo systemctl restart autofs # Access triggers automatic mounting ls /mnt/nfs/data

Optimisation des performances NFS

# Server: increase the number of NFS threads # Edit /etc/nfs.conf sudo tee -a /etc/nfs.conf << 'EOF' [nfsd] threads = 16 EOF # Client: optimized mount options sudo mount -t nfs -o rw,hard,intr,rsize=1048576,wsize=1048576,timeo=600 server-ip:/srv/nfs/data /mnt/nfs

Comparaison Samba et NFS

CaractéristiqueSamba (PME/CIFS)NFS
ProtocolePME/CIFSNFSv3/v4
Cas d’utilisationMixte Windows + LinuxEntre systèmes Linux/Unix
AuthentificationBase de données de mots de passe séparéeBasé sur UID/GID ou Kerberos
PerformancesBienMieux (entre les systèmes Linux)
Complexité de configurationModéréSimple
Prise en charge de WindowsNatifNécessite un logiciel supplémentaire
Prise en charge des listes de contrôle d’accèsPleinDe base
Transport cryptéSMB3 pris en chargeNFS v4 + Kerberos

Dépannage

# Samba logs sudo tail -f /var/log/samba/log.smbd # NFS checks showmount -e server-ip rpcinfo -p server-ip nfsstat # Check mounts mount | grep -E "(cifs|nfs)" df -h | grep -E "(cifs|nfs)" # Check ports ss -tlnp | grep -E "(445|139|2049|111)"