NFS poslužitelj na Linuxu: dijeljenje direktorija | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Postavljanje NFS poslužitelja na Linuxu za dijeljenje direktorija putem NFS-a

Razina: Napredno
Procijenjeno vrijeme: ~30 minuta
Cilj: Konfigurirati NFS poslužitelj na Linuxu za dijeljenje direktorija s više klijenata, čime se olakšava automatizacija rutinskih zadataka i proaktivna sigurnosna revizija.

Uvod

Upravljanje zajedničkom pohranom na floti poslužitelja temeljni je zahtjev za održavanje produkcijskih okruženja s visokim zahtjevima za dostupnost. Protokol NFS (Network File System) omogućuje sustavu da putem mreže dijeli direktorij putem NFS-a i pritom djeluje kao NAS (Network Attached Storage). Postavljanjem NFS poslužitelja na Linuxu možete istovremeno pružiti centraliziran pristup datotekama većem broju NFS klijenata. Ovaj vodič prikazuje kako učinkovito postaviti NFS poslužitelj na Linuxu, uz zadanu uporabu NFSv4.2.

Warning

Ovaj vodič koristi sigurnosni način sec=sys (AUTH_SYS). U tom načinu poslužitelj po prirodi vjeruje klijentu u pogledu identifikacije korisnika (UID/GID), bez ikakve kriptografske autentifikacije. Kontrola pristupa temelji se isključivo na filtriranju IP adresa u datoteci /etc/exports i standardnim UNIX dozvolama nad datotekama. Ovakva je konfiguracija izvrsna za pouzdane interne mreže (primjerice unutar virtualnog okruženja Proxmox), ali se ne preporučuje za nepouzdane mreže. Za dodatnu sigurnost razmislite o uvođenju Kerberos autentifikacije (npr. sec=krb5, sec=krb5i ili sec=krb5p).

Preduvjeti

Prije početka provjerite jesu li ispunjeni sljedeći uvjeti:

  • Operacijski sustav: Ubuntu 22.04/24.04 LTS, Debian 12/13 ili CentOS/RHEL 9/AlmaLinux 10
  • Potreban softver: nfs-kernel-server (2.6+) za Ubuntu/Debian ili nfs-utils (2.x+) za CentOS/RHEL/AlmaLinux
  • Pristup: sudo ili root pristup na svim računalima
  • Mreža: poslužitelji moraju moći komunicirati putem privatne mreže.
  • Potrebno znanje: samostalno služenje naredbenim retkom sustava Linux.

Terminologija

Prije nastavka upoznajte se sa sljedećim osnovnim pojmovima:

  • NFS (Network File System): protokol koji korisnicima omogućuje pristup datotekama putem mreže kao da su pohranjene lokalno.
  • NFS poslužitelj: središnje računalo koje pohranjuje datoteke i čini ih dostupnima putem mreže.
  • NFS klijent: udaljeno računalo koje se povezuje s poslužiteljem radi pristupa dijeljenim datotekama.
  • Dijeljeni direktorij (Shared Directory): lokalna mapa na poslužitelju koja će biti dostupna klijentima.
  • Izvoz (Export): postupak kojim lokalni direktorij postaje dostupan klijentima putem mreže.
  • /etc/exports: glavna konfiguracijska datoteka koju NFS daemon koristi za određivanje koji se direktoriji izvoze i kakva su pravila pristupa.
  • Montiranje (Mounting): postupak povezivanja udaljenog mrežnog dijeljenja s lokalnom strukturom direktorija.
  • Točka montiranja (Mount Point): lokalni direktorij na klijentu na koji se povezuje udaljeni datotečni sustav.
  • nfs-utils: softverski paket s alatima i daemonima potrebnima za NFS klijent i poslužitelj.
  • RPC (Remote Procedure Call): protokol kojim program može zatražiti uslugu od programa koji se nalazi na drugom računalu.
  • Portmapper / rpcbind: usluga koja preslikava brojeve RPC programa u brojeve mrežnih priključaka (portova), potrebna NFS-u za dogovaranje veza.
  • Dozvole (Permissions): prava pristupa koja određuju tko može čitati, pisati ili izvršavati datoteke.
  • Pristup samo za čitanje (RO): stanje dozvola koje klijentima omogućuje pregled datoteka, ali ne i njihovu izmjenu.
  • Pristup za čitanje i pisanje (RW): stanje dozvola koje klijentima omogućuje izmjenu dijeljenih datoteka.
  • root_squash: sigurnosna značajka koja zahtjeve udaljenog korisnika root preslikava u neprivilegiranog korisnika (nobody) kako bi se spriječio neovlašteni root pristup.
  • Vatrozid (Firewall): mrežni sigurnosni sustav koji nadzire i kontrolira dolazni i odlazni mrežni promet.
  • Linux datotečni sustav: strukturirana metoda kojom Linux pohranjuje i organizira datoteke na disku.
  • Naziv računala (Hostname): čitljiva oznaka dodijeljena uređaju spojenom na računalnu mrežu.
  • IP adresa: jedinstveni brojčani identifikator dodijeljen svakom uređaju spojenom na mrežu.
  • Automount (automatsko montiranje): praksa automatskog montiranja datotečnih sustava pri pokretanju.
  • NAS (Network Attached Storage): arhitektura pohrane na razini datoteka koja podatke čini dostupnima putem mreže.

Korak 1: Instalirajte potrebne pakete

Najprije instalirajte potreban softver na poslužitelj i klijente. Paket nfs-utils pruža daemone i alate za upravljanje datotečnim sustavom. Moderne postavke trebaju prema zadanim postavkama koristiti NFSv4.2, koji je stateful (s pamćenjem stanja) i pojednostavljuje pravila vatrozida.

Na NFS poslužitelju (Debian/Ubuntu):

sudo apt update sudo apt install nfs-kernel-server

Na NFS poslužitelju (CentOS/RHEL/AlmaLinux):

sudo dnf install nfs-utils sudo systemctl enable --now rpcbind nfs-server

Info

U čistoj NFSv4 postavci usluga rpcbind tehnički nije potrebna za samo NFS montiranje. Potrebna je, međutim, ako namjeravate koristiti naredbu showmount (kako je prikazano u Koraku 5) za otkrivanje izvoza ili ako morate podržavati starije NFSv3 klijente.

Na NFS klijentu (Debian/Ubuntu):

sudo apt update sudo apt install nfs-common

Na NFS klijentu (CentOS/RHEL/AlmaLinux):

sudo dnf install nfs-utils

Instalacija bi se trebala uspješno dovršiti. Potrebne RPC i NFS usluge sada su instalirane i pokrenute.

Korak 2: Izradite dijeljeni direktorij i postavite NFS dozvole

Na poslužitelju izradite direktorij koji namjeravate izvoziti:

sudo mkdir -p /mnt/nfs_share

Postavite odgovarajuće NFS dozvole kako bi klijenti mogli pristupati datotekama. U ovom vodiču vlasništvo ćemo dodijeliti namjenskom neprivilegiranom korisniku usluge i odobriti odgovarajuće grupne dozvole.

Debian/Ubuntu:

sudo chown nobody:nogroup /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share

CentOS/RHEL/AlmaLinux:

sudo chown nobody:nobody /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share

Ova konfiguracija ne zaobilazi lokalni Linux model dozvola, pa NFS kontrola pristupa nije vaš jedini sigurnosni sloj. Dozvola 2775 sigurno omogućuje grupnu suradnju bez narušavanja načela najmanjih povlastica.

Korak 3: Konfigurirajte NFS poslužitelj na Linuxu

Za definiranje pravila izvoza morate urediti datoteku /etc/exports na poslužitelju.

Otvorite datoteku:

sudo nano /etc/exports

Dodajte sljedeći redak kako biste odobrili pristup određenoj podmreži klijenata (npr. <CLIENT_SUBNET>):

/mnt/nfs_share <CLIENT_SUBNET>(rw,sync,no_subtree_check,root_squash)

Time se poslužitelj konfigurira za izvoz direktorija sa sljedećim opcijama:

  • rw: odobrava pristup za čitanje i pisanje (RW). Za pristup samo za čitanje (RO) koristite ro.
  • sync: prisiljava da se promjene zapišu na disk prije odgovora klijentu.
  • no_subtree_check: onemogućuje provjeru podstabla (subtree), čime se poboljšava pouzdanost.
  • root_squash: izričito preslikava zahtjeve udaljenog korisnika root u neprivilegiranog korisnika (nobody). To je zadano ponašanje, ali ga zbog revizije uvijek treba izričito navesti. Opciju no_root_squash koristite samo u strogo kontroliranim okruženjima.

Info

Više klijenata možete navesti dodavanjem dodatnih IP adresa ili podmreža, odvojenih razmacima, u isti redak, čime omogućujete pristup većem broju računala.

Primijenite konfiguraciju izvoza:

Debian/Ubuntu:

sudo exportfs -a sudo systemctl restart nfs-kernel-server

CentOS/RHEL/AlmaLinux:

sudo exportfs -a sudo systemctl restart nfs-server

Poslužitelj sada aktivno izvozi direktorij u mrežu.

Korak 4: Konfigurirajte vatrozid

Morate dopustiti NFS promet kroz vatrozid na poslužitelju kako biste omogućili veze klijenata.

Uz UFW (Debian/Ubuntu):

Na svježoj instalaciji Ubuntua UFW je prema zadanim postavkama neaktivan. Na čistom sustavu Debian 13 možda nije ni instaliran. Ako namjeravate koristiti UFW, provjerite je li instaliran (sudo apt install ufw) i izričito omogućen prije dodavanja pravila:

sudo ufw enable sudo ufw allow from <CLIENT_SUBNET> to any port nfs

Uz Firewalld (CentOS/RHEL/AlmaLinux):

sudo firewall-cmd --permanent --zone=public --add-service=nfs sudo firewall-cmd --permanent --zone=public --add-service=rpc-bind sudo firewall-cmd --permanent --zone=public --add-service=mountd sudo firewall-cmd --reload

Info

AlmaLinux/RHEL (SELinux): na čistoj instalaciji AlmaLinuxa SELinux je postavljen na Enforcing. Za zadanu putanju /mnt/nfs_share koja se koristi u ovom vodiču postojeći kontekst mnt_t kompatibilan je s daemonom nfsd. Ako pak planirate izvoziti nestandardne putanje (npr. /srv, /data ili /home/...), NFS u njih neće moći pisati dok ne konfigurirate SELinux na odgovarajući način. Možete uključiti globalnu logičku vrijednost (sudo setsebool -P nfs_export_all_rw 1) ili pomoću alata semanage postaviti ispravan fcontext.

Klijenti iz dopuštene podmreže sada mogu pristupiti NFS uslugama.

Korak 5: Provjerite izvoz naredbom showmount

Na poslužitelju proaktivno provjerite aktivne izvoze i interno stanje revizije kako biste osigurali sukladnost sa sigurnosnim zahtjevima. Pokrenite sljedeću naredbu da provjerite točne opcije izvoza koje primjenjuje NFS daemon:

sudo cat /var/lib/nfs/etab

Alternativno možete upotrijebiti sudo exportfs -v za prikaz detaljnog popisa izvoza.

Zatim na klijentskom računalu pomoću naredbe showmount provjerite je li izvoz vidljiv putem mreže. Zamijenite <SERVER_IP> stvarnom IP adresom svog NFS poslužitelja.

Info

showmount zahtijeva da je port 111 (rpcbind) otvoren na poslužitelju. Ako koristite čistu NFSv4 postavku i niste otvorili taj port, preskočite ovaj korak: izvoze provjerite na poslužitelju naredbom sudo exportfs -v, a dostupnost s klijenta testirajte montiranjem u Koraku 6.

showmount -e <SERVER_IP>

Očekivani ispis:

Export list for <SERVER_IP>: /mnt/nfs_share <CLIENT_SUBNET>

Ako je izvoz naveden, konfiguracija poslužitelja ispravna je i dostupna s klijenta.

Korak 6: Montirajte NFS datotečni sustav na klijentu

Za korištenje dijeljenja morate montirati NFS datotečni sustav na lokalnu točku montiranja na klijentu.

Izradite točku montiranja:

sudo mkdir -p /mnt/client_share

Montirajte direktorij:

sudo mount -t nfs -o vers=4.2 <SERVER_IP>:/mnt/nfs_share /mnt/client_share

Dijeljenje je sada montirano. To možete provjeriti naredbom df -h, koja prikazuje povezani mrežni pogon. Navođenjem vers=4.2 osigurava se da klijent izričito koristi najnoviju verziju protokola umjesto da se tiho vrati na NFSv3 ili NFSv4.0.

Tip

Kako bi klijent pri pokretanju automatski montirao NFS datotečni sustav, možete konfigurirati statičko montiranje dodavanjem unosa u /etc/fstab. Imajte na umu da je to statičko montiranje; prave, dinamične Automount konfiguracije u produkciji obično se izvode putem autofs (/etc/auto.master).

Otvorite /etc/fstab:

sudo nano /etc/fstab

Dodajte sljedeći redak:

<SERVER_IP>:/mnt/nfs_share /mnt/client_share nfs auto,nofail,noatime,_netdev,hard,vers=4.2,timeo=600 0 0

Time se sprječava da klijent blokira postupak pokretanja ako je poslužitelj privremeno nedostupan.

Provjera

Kako biste potvrdili da su NFS dozvole i mrežne postavke ispravne, s klijenta pokrenite test čitanja i pisanja:

touch /mnt/client_share/test_file.txt ls -l /mnt/client_share/

Očekivani ispis:

-rw-r--r-- 1 nobody nogroup 0 May 24 12:00 test_file.txt

Info

Ovisno o operacijskom sustavu klijenta, vlasnik datoteke prikazat će se kao nobody nogroup (Debian/Ubuntu) ili nobody nobody (RHEL/AlmaLinux). To je očekivano ponašanje NFSv4 preslikavanja identiteta (idmapping) kada se zahtjevi ispravno preslikavaju u neprivilegiranog korisnika. Ako primijetite nepodudarnosti, provjerite podudara li se parametar Domain u /etc/idmapd.conf na poslužitelju i na klijentu.

Ako je datoteka uspješno izrađena, vaši klijenti mogu komunicirati s poslužiteljem i zapisivati podatke prema planu.

Poništavanje promjena

Za odmontiranje dijeljenja na klijentu:

sudo umount /mnt/client_share

Uklonite unos iz /etc/fstab na klijentu ako ste ga dodali.

Za prestanak dijeljenja direktorija na poslužitelju uklonite odgovarajući redak iz /etc/exports i primijenite promjene:

Debian/Ubuntu:

sudo exportfs -a sudo systemctl restart nfs-kernel-server

CentOS/RHEL/AlmaLinux:

sudo exportfs -a sudo systemctl restart nfs-server

Za potpuno uklanjanje instaliranih paketa:

Debian/Ubuntu:

sudo apt remove nfs-kernel-server nfs-common

CentOS/RHEL/AlmaLinux:

sudo dnf remove nfs-utils

Ova radnja potpuno će onemogućiti NFS funkcionalnost na vašim računalima.

Zaključak

Uspješno ste naučili kako postaviti NFS poslužitelj na Linuxu. Ispravnom konfiguracijom možete sigurno dijeliti direktorij putem NFS-a s više NFS klijenata. Ova postavka pouzdan je temelj za automatizaciju rutinskih administrativnih zadataka i centralizaciju zapisnika radi proaktivnih sigurnosnih revizija.

Verzija dokumenta: 1.0
Posljednje ažuriranje: svibanj 2026.
Vlasnik: Tim za tehničku dokumentaciju

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA