Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

NFS i Samba — współdzielenie plików między serwerami

Opublikowano: 9 kwietnia 2026 · Kategoria: Linux / Sieci

Wspólny storage między serwerami to podstawa wielu architektur: współdzielone media w WordPress, pliki konfiguracyjne między węzłami aplikacji, backupy centralne. Dwie najpopularniejsze opcje to NFS (Network File System — standard Linux-Linux) i Samba (implementacja SMB/CIFS — dla środowisk mieszanych z Windows). Oto jak skonfigurować oba protokoły od zera.

NFS vs Samba — kiedy co wybrać?

Cecha NFS Samba (SMB/CIFS)
Protokół NFS v3/v4 (standard Unix) SMB/CIFS (standard Windows)
Klienty Linux, macOS, FreeBSD Windows, macOS, Linux
Wydajność Lepsza w środowisku Linux Dobra, nieco wyższe CPU
Uwierzytelnianie IP-based lub Kerberos (v4) User/password, AD, Kerberos
Szyfrowanie Brak w v3, opcjonalne v4.2 SMB3 z szyfrowaniem
Typowe zastosowanie VPS cluster, Kubernetes PV Serwer plików dla biura, Windows

NFS — instalacja i konfiguracja serwera

# Instalacja NFS server (Ubuntu/Debian)
sudo apt update
sudo apt install nfs-kernel-server

# Utwórz katalog do eksportowania
sudo mkdir -p /export/shared
sudo chown nobody:nogroup /export/shared
sudo chmod 755 /export/shared

Konfiguracja eksportów w /etc/exports:

# /etc/exports
# Format: /sciezka  klient(opcje)

# Eksport dla konkretnego IP (rekomendowane)
/export/shared  192.168.1.101(rw,sync,no_subtree_check)

# Eksport dla całej podsieci
/export/shared  192.168.1.0/24(rw,sync,no_subtree_check)

# Eksport read-only
/export/media  192.168.1.0/24(ro,sync,no_subtree_check)

# Eksport z all_squash (wszyscy klienci = anonuid)
/export/public  192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
# Zastosuj zmiany w /etc/exports
sudo exportfs -ra

# Sprawdź aktywne eksporty
sudo exportfs -v
showmount -e localhost

# Restart usługi NFS
sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server

NFS — klient (montowanie)

# Instalacja klienta NFS
sudo apt install nfs-common

# Sprawdź dostępne eksporty serwera
showmount -e 192.168.1.100

# Tymczasowe montowanie
sudo mkdir -p /mnt/nfs-shared
sudo mount -t nfs 192.168.1.100:/export/shared /mnt/nfs-shared

# Montowanie z NFS v4 (rekomendowane)
sudo mount -t nfs4 192.168.1.100:/export/shared /mnt/nfs-shared

# Sprawdź zamontowane systemy plików
df -h | grep nfs
mount | grep nfs

Aby montowanie było trwałe (przeżywało restart), dodaj do /etc/fstab:

# /etc/fstab
# Format: serwer:/eksport  punkt-montowania  typ  opcje  dump  pass

192.168.1.100:/export/shared  /mnt/nfs-shared  nfs4  defaults,nofail,_netdev  0  0

# Opcje:
# nofail    — nie blokuj bootowania gdy serwer NFS niedostępny
# _netdev   — montuj dopiero po uruchomieniu sieci
# soft      — timeout zamiast zawieszenia gdy serwer niedostępny
# timeo=15  — timeout w 0.1s (15 = 1.5 sekundy)
# Przetestuj wpis fstab bez restartu
sudo mount -a
# Sprawdź czy zamontowane
df -h /mnt/nfs-shared

Samba — instalacja i konfiguracja serwera

# Instalacja Samba
sudo apt update
sudo apt install samba

# Utwórz katalog współdzielony
sudo mkdir -p /samba/shared
sudo chown root:sambashare /samba/shared
sudo chmod 2775 /samba/shared

Edytuj konfigurację Samba w /etc/samba/smb.conf:

# /etc/samba/smb.conf

[global]
   workgroup = WORKGROUP
   server string = Serwer Plików
   security = user
   map to guest = Bad User
   log file = /var/log/samba/log.%m
   max log size = 1000

# Udział z uwierzytelnianiem (tylko zalogowani użytkownicy)
[shared]
   path = /samba/shared
   browseable = yes
   read only = no
   guest ok = no
   valid users = @sambashare
   create mask = 0664
   directory mask = 0775
   force group = sambashare

# Udział publiczny (bez hasła — tylko do odczytu)
[public]
   path = /samba/public
   browseable = yes
   read only = yes
   guest ok = yes
# Zweryfikuj konfigurację smb.conf
testparm

# Dodaj użytkownika do Samba (musi mieć konto systemowe)
sudo adduser uzytkownik
sudo usermod -aG sambashare uzytkownik
sudo smbpasswd -a uzytkownik      # Ustaw hasło Samba (oddzielne od systemowego)
sudo smbpasswd -e uzytkownik      # Włącz konto

# Restart Samba
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd

Samba — klient (Linux i Windows)

# Instalacja klienta CIFS (Linux)
sudo apt install cifs-utils smbclient

# Lista dostępnych udziałów Samba
smbclient -L //192.168.1.100 -U uzytkownik

# Interaktywne połączenie przez smbclient (jak FTP)
smbclient //192.168.1.100/shared -U uzytkownik
# Komendy: ls, get plik, put plik, cd katalog, quit

# Montowanie udziału Samba na Linux
sudo mkdir -p /mnt/samba-shared
sudo mount -t cifs //192.168.1.100/shared /mnt/samba-shared \
  -o username=uzytkownik,password=haslo,uid=1000,gid=1000
# Bezpieczniejsze montowanie — hasło w pliku zamiast w linii poleceń
sudo nano /etc/samba/credentials-shared
# Zawartość:
# username=uzytkownik
# password=haslo
sudo chmod 600 /etc/samba/credentials-shared

# /etc/fstab z credentials file
# //192.168.1.100/shared  /mnt/samba-shared  cifs  credentials=/etc/samba/credentials-shared,uid=1000,gid=1000,nofail,_netdev  0  0
# Windows — mapowanie dysku sieciowego
# W Eksploratorze: Komputer > Mapuj dysk sieciowy
# Ścieżka: \\192.168.1.100\shared

# Lub przez wiersz poleceń:
# net use Z: \\192.168.1.100\shared /user:uzytkownik haslo /persistent:yes

AutoFS — automontowanie na żądanie

AutoFS montuje udziały automatycznie gdy są potrzebne i odmontowuje po czasie bezczynności — oszczędza zasoby i eliminuje problemy z bootowaniem gdy serwer NFS/Samba jest niedostępny:

# Instalacja autofs
sudo apt install autofs

# Konfiguracja master map
sudo nano /etc/auto.master
# Dodaj linię:
# /mnt/auto  /etc/auto.nfs  --timeout=60

# Konfiguracja udziałów NFS
sudo nano /etc/auto.nfs
# Format: punkt-montowania  opcje  serwer:/eksport
# shared  -fstype=nfs4,rw  192.168.1.100:/export/shared
# media   -fstype=nfs4,ro  192.168.1.100:/export/media

# Restart autofs
sudo systemctl restart autofs

# Testuj — wejdź do katalogu (automontowanie na żądanie)
ls /mnt/auto/shared
# AutoFS automatycznie zamontuje i odmontuje po 60 sekundach bezczynności

Bezpieczeństwo NFS i Samba

  • NFS: ogranicz /etc/exports do konkretnych IP — nigdy *(rw,...).
  • NFS: UFW — zezwól na port 2049/tcp tylko z zaufanych IP.
  • Samba: valid users — ogranicz dostęp do konkretnych użytkowników/grup.
  • Samba: hosts allow — dodaj hosts allow = 192.168.1.0/24 do [global].
  • Obie technologie: VPN — jeśli serwery są w różnych lokalizacjach, użyj WireGuard lub OpenVPN zamiast eksponowania portów na internet.

Najczęstsze pytania

Kiedy używać NFS, a kiedy Samba? +
NFS (Network File System) to wybór gdy wszystkie maszyny to Linux/Unix — wydajniejszy, prostszy w konfiguracji, lepsza integracja z prawami unixowymi (uid/gid). Samba (implementacja protokołu SMB/CIFS) gdy musisz obsłużyć Windows lub macOS. Samba działa też na Linuxie (klienty Linux mogą montować przez mount -t cifs). Dla środowisk mieszanych (Linux serwer + Windows klienty): Samba. Dla środowisk czysto linuxowych (VPS, Kubernetes shared storage): NFS.
Czy NFS jest bezpieczny do użytku przez internet? +
NIE. NFS v3/v4 nie ma własnego szyfrowania — dane są przesyłane tekstem. Używaj NFS WYŁĄCZNIE w sieci lokalnej (prywatna sieć VPS, VPN). Jeśli musisz współdzielić pliki przez internet, użyj SSHFS (rsync/SFTP over SSH) lub Samby z tunelem VPN. Ogranicz dostęp w /etc/exports do konkretnych IP lub podsieci — NIGDY nie eksportuj do 0.0.0.0/0.
Jakie są różnice między NFS v3 a NFS v4? +
NFS v4 (rekomendowana) to znacząca modernizacja: jeden port TCP 2049 (v3 potrzebuje portmapper i wiele losowych portów), wbudowane ACL, lepsza obsługa przez firewall, stateful protokół, Kerberos authentication. NFS v3 to stary standard — prosty, ale mniej bezpieczny. Użyj nfsvers=4 w /etc/fstab. NFS v4.1 i v4.2 dodają pNFS (parallel NFS) i server-side copy.
Jak debugować problemy z montowaniem NFS? +
Krok 1: Sprawdź czy serwer eksportuje: showmount -e IP_SERWERA. Krok 2: Sprawdź logi serwera: journalctl -u nfs-kernel-server -f. Krok 3: Test połączenia: nc -zv IP_SERWERA 2049. Krok 4: Montuj z verbose: mount -t nfs -v IP_SERWERA:/export /mnt/. Krok 5: Sprawdź uprawnienia uid/gid — użytkownik na kliencie musi mieć ten sam uid co właściciel pliku na serwerze (lub użyj all_squash i anonuid).

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.