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.
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 ilinfs-utils(2.x+) za CentOS/RHEL/AlmaLinux - Pristup:
sudoilirootpristup 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
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) koristitero.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 korisnikarootu neprivilegiranog korisnika (nobody). To je zadano ponašanje, ali ga zbog revizije uvijek treba izričito navesti. Opcijuno_root_squashkoristite samo u strogo kontroliranim okruženjima.
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
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.
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.
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
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