Strežnik NFS v Linuxu: nastavitev in skupna raba imenika | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Nastavitev strežnika NFS v Linuxu za skupno rabo imenika prek NFS

Raven: Napredno
Ocenjeni čas: ~30 minut
Cilj: Nastaviti strežnik NFS v sistemu Linux za souporabo imenika z več odjemalci, kar olajša avtomatizacijo rutinskih opravil in proaktivno varnostno revizijo.

Uvod

Upravljanje skupne shrambe podatkov v flotah strežnikov je temeljna zahteva za vzdrževanje produkcijskih okolij z visokimi zahtevami glede razpoložljivosti. Protokol NFS (Network File System) sistemu omogoča, da prek omrežja omogoči souporabo imenika prek NFS in tako deluje kot NAS (Network Attached Storage). Z namestitvijo strežnika NFS v sistemu Linux lahko hkrati zagotovite centraliziran dostop do datotek več odjemalcem NFS. Ta vodič prikazuje, kako učinkovito nastaviti strežnik NFS v sistemu Linux, privzeto z uporabo različice NFSv4.2.

Warning

Ta vodič uporablja varnostni način sec=sys (AUTH_SYS). V tem načinu strežnik odjemalcu glede identifikacije uporabnikov (UID/GID) načeloma zaupa brez kakršnega koli kriptografskega preverjanja pristnosti. Nadzor dostopa temelji izključno na filtriranju naslovov IP v datoteki /etc/exports in na standardnih dovoljenjih UNIX za datoteke. Takšna nastavitev je odlična za zaupanja vredna notranja omrežja (na primer znotraj navideznega okolja Proxmox), vendar je za nezaupanja vredna omrežja ne priporočamo. Za dodatno varnost razmislite o uvedbi overjanja Kerberos (npr. sec=krb5, sec=krb5i ali sec=krb5p).

Predpogoji

Preden začnete, se prepričajte, da so izpolnjeni naslednji pogoji:

  • Operacijski sistem: Ubuntu 22.04/24.04 LTS, Debian 12/13 ali CentOS/RHEL 9/AlmaLinux 10
  • Zahtevana programska oprema: nfs-kernel-server (2.6+) za Ubuntu/Debian ali nfs-utils (2.x+) za CentOS/RHEL/AlmaLinux
  • Dostop: dostop sudo ali root na vseh računalnikih
  • Omrežje: strežniki morajo med seboj komunicirati prek zasebnega omrežja.
  • Zahtevano znanje: samozavestna uporaba ukazne vrstice v sistemu Linux.

Terminologija

Preden nadaljujete, se seznanite z naslednjimi osnovnimi pojmi:

  • NFS (Network File System): protokol, ki uporabnikom omogoča dostop do datotek prek omrežja, kot da bi bile shranjene lokalno.
  • Strežnik NFS: osrednji računalnik, ki gostuje datoteke in jih daje na voljo v omrežju.
  • Odjemalec NFS: oddaljeni računalnik, ki se poveže s strežnikom za dostop do skupnih datotek.
  • Skupni imenik (Shared Directory): lokalna mapa na strežniku, ki bo na voljo odjemalcem.
  • Izvoz (Export): postopek, s katerim lokalni imenik postane dostopen odjemalcem prek omrežja.
  • /etc/exports: glavna konfiguracijska datoteka, ki jo demon NFS uporablja za določitev, kateri imeniki se izvozijo in kakšna so pravila dostopa.
  • Priklop (Mounting): postopek pripenjanja oddaljene omrežne souporabe na lokalno strukturo imenikov.
  • Priklopna točka (Mount Point): lokalni imenik na odjemalcu, na katerega je pripet oddaljeni datotečni sistem.
  • nfs-utils: programski paket z orodji in demoni, potrebnimi za odjemalca in strežnik NFS.
  • RPC (Remote Procedure Call): protokol, s katerim lahko program zahteva storitev od programa v drugem računalniku.
  • Portmapper / rpcbind: storitev, ki številke programov RPC preslika v številke omrežnih vrat; NFS jo potrebuje za dogovarjanje o povezavah.
  • Dovoljenja (Permissions): pravice dostopa, ki določajo, kdo lahko datoteke bere, piše ali izvaja.
  • Dostop samo za branje (RO): stanje dovoljenj, ki odjemalcem omogoča ogled datotek, ne pa njihovega spreminjanja.
  • Dostop za branje in pisanje (RW): stanje dovoljenj, ki odjemalcem omogoča spreminjanje skupnih datotek.
  • root_squash: varnostna funkcija, ki zahteve oddaljenega uporabnika root preslika v neprivilegiranega uporabnika (nobody) in tako prepreči nepooblaščen dostop z pravicami root.
  • Požarni zid (Firewall): omrežni varnostni sistem, ki nadzoruje in upravlja dohodni in odhodni omrežni promet.
  • Datotečni sistem Linux: strukturirana metoda, s katero Linux shranjuje in organizira datoteke na disku.
  • Ime gostitelja (Hostname): človeku berljiva oznaka, dodeljena napravi, povezani v računalniško omrežje.
  • Naslov IP: enolični številski identifikator, dodeljen vsaki napravi v omrežju.
  • Automount (samodejni priklop): praksa samodejnega priklopa datotečnih sistemov ob zagonu.
  • NAS (Network Attached Storage): arhitektura shranjevanja na ravni datotek, ki podatke omogoča dostopne prek omrežja.

1. korak: Namestite potrebne pakete

Najprej namestite potrebno programsko opremo na strežnik in odjemalce. Paket nfs-utils zagotavlja demone in orodja za upravljanje datotečnega sistema. Sodobne nastavitve naj privzeto uporabljajo NFSv4.2, ki je stanjski (stateful) in poenostavi pravila požarnega zidu.

Na strežniku NFS (Debian/Ubuntu):

sudo apt update sudo apt install nfs-kernel-server

Na strežniku NFS (CentOS/RHEL/AlmaLinux):

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

Info

Pri čisti nastavitvi NFSv4 storitev rpcbind za sam priklop NFS tehnično ni potrebna. Potrebna pa je, če nameravate za odkrivanje izvozov uporabiti ukaz showmount (kot je prikazano v 5. koraku) ali če morate podpirati starejše odjemalce NFSv3.

Na odjemalcu NFS (Debian/Ubuntu):

sudo apt update sudo apt install nfs-common

Na odjemalcu NFS (CentOS/RHEL/AlmaLinux):

sudo dnf install nfs-utils

Namestitev bi se morala uspešno zaključiti. Potrebne storitve RPC in NFS so zdaj nameščene in delujejo.

2. korak: Ustvarite skupni imenik in nastavite dovoljenja NFS

Na strežniku ustvarite imenik, ki ga želite izvoziti:

sudo mkdir -p /mnt/nfs_share

Nastavite ustrezna dovoljenja NFS, da bodo odjemalci lahko dostopali do datotek. V tem vodiču bomo lastništvo dodelili namenskemu neprivilegiranemu uporabniku storitve in podelili ustrezna skupinska dovoljenja.

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

Ta konfiguracija ne obide lokalnega modela dovoljenj v sistemu Linux, zato nadzor dostopa NFS ni vaša edina varnostna plast. Dovoljenje 2775 varno omogoča skupinsko sodelovanje, ne da bi kršilo načelo najmanjših pravic.

3. korak: Nastavite strežnik NFS v sistemu Linux

Za določitev pravil izvoza morate na strežniku urediti datoteko /etc/exports.

Odprite datoteko:

sudo nano /etc/exports

Dodajte naslednjo vrstico, da dodelite dostop določenemu podomrežju odjemalcev (npr. <CLIENT_SUBNET>):

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

Strežnik bo imenik izvozil z naslednjimi možnostmi:

  • rw: dodeli dostop za branje in pisanje (RW). Za dostop samo za branje (RO) uporabite ro.
  • sync: zahteva, da se spremembe zapišejo na disk, preden strežnik odgovori odjemalcu.
  • no_subtree_check: onemogoči preverjanje poddrevesa (subtree), kar izboljša zanesljivost.
  • root_squash: izrecno preslika zahteve oddaljenega uporabnika root v neprivilegiranega uporabnika (nobody). To je privzeto vedenje, vendar ga je zaradi revizije vedno treba navesti izrecno. Možnost no_root_squash uporabljajte samo v strogo nadzorovanih okoljih.

Info

Več odjemalcev lahko določite tako, da v isto vrstico dodate več naslovov IP ali podomrežij, ločenih s presledki, s čimer omogočite dostop več računalnikom.

Uveljavite konfiguracijo izvoza:

Debian/Ubuntu:

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

CentOS/RHEL/AlmaLinux:

sudo exportfs -a sudo systemctl restart nfs-server

Strežnik zdaj aktivno izvaža imenik v omrežje.

4. korak: Nastavite požarni zid

Na strežniku morate v požarnem zidu dovoliti promet NFS, da omogočite povezave odjemalcev.

Z UFW (Debian/Ubuntu):

Pri sveži namestitvi sistema Ubuntu je UFW privzeto neaktiven. Na čistem sistemu Debian 13 morda sploh ni nameščen. Če nameravate uporabljati UFW, poskrbite, da je nameščen (sudo apt install ufw) in izrecno omogočen, preden dodate pravila:

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

S 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): pri čisti namestitvi AlmaLinux je SELinux nastavljen na Enforcing. Za privzeto pot /mnt/nfs_share, uporabljeno v tem vodiču, je obstoječi kontekst mnt_t združljiv z demonom nfsd. Če pa nameravate izvažati nestandardne poti (npr. /srv, /data ali /home/...), NFS vanje ne bo mogel pisati, dokler ustrezno ne nastavite SELinuxa. Lahko vklopite globalno logično vrednost (sudo setsebool -P nfs_export_all_rw 1) ali pa z orodjem semanage nastavite pravilen fcontext.

Odjemalci iz dovoljenega podomrežja zdaj lahko dosežejo storitve NFS.

5. korak: Preverite izvoz z ukazom showmount

Na strežniku proaktivno preverite aktivne izvoze in notranje revizijsko stanje, da zagotovite skladnost z varnostnimi zahtevami. Zaženite naslednji ukaz in preverite natančne možnosti izvoza, ki jih uporablja demon NFS:

sudo cat /var/lib/nfs/etab

Za podroben seznam izvozov lahko uporabite tudi sudo exportfs -v.

Nato na računalniku odjemalca z ukazom showmount preverite, ali je izvoz viden prek omrežja. <SERVER_IP> zamenjajte z dejanskim naslovom IP svojega strežnika NFS.

Info

showmount zahteva, da so na strežniku odprta vrata 111 (rpcbind). Če uporabljate čisto nastavitev NFSv4 in teh vrat niste odprli, ta korak preskočite: izvoze na strežniku preverite z ukazom sudo exportfs -v, dosegljivost z odjemalca pa preizkusite s priklopom v 6. koraku.

showmount -e <SERVER_IP>

Pričakovani izpis:

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

Če je izvoz na seznamu, je konfiguracija strežnika pravilna in dosegljiva z odjemalca.

6. korak: Priklopite datotečni sistem NFS na odjemalcu

Za uporabo souporabe morate priklopiti datotečni sistem NFS na lokalno priklopno točko na odjemalcu.

Ustvarite priklopno točko:

sudo mkdir -p /mnt/client_share

Priklopite imenik:

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

Souporaba je zdaj priklopljena. To lahko preverite z ukazom df -h, ki prikaže pripeti omrežni pogon. Z navedbo vers=4.2 zagotovite, da odjemalec izrecno uporabi najnovejšo različico protokola in se ne zniža tiho na NFSv3 ali NFSv4.0.

Tip

Da bo odjemalec ob zagonu samodejno priklopil datotečni sistem NFS, lahko nastavite statični priklop z dodajanjem vnosa v /etc/fstab. Upoštevajte, da gre za statični priklop; prave, dinamične konfiguracije Automount se v produkciji običajno izvedejo prek autofs (/etc/auto.master).

Odprite /etc/fstab:

sudo nano /etc/fstab

Dodajte naslednjo vrstico:

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

S tem preprečite, da bi odjemalec blokiral postopek zagona, če je strežnik začasno nedosegljiv.

Preverjanje

Da potrdite, da so dovoljenja NFS in omrežne nastavitve pravilne, z odjemalca izvedite preizkus branja in pisanja:

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

Pričakovani izpis:

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

Info

Glede na operacijski sistem odjemalca bo lastnik datoteke prikazan kot nobody nogroup (Debian/Ubuntu) ali nobody nobody (RHEL/AlmaLinux). To je pričakovano vedenje preslikave identitet (idmapping) v NFSv4, kadar so zahteve pravilno preslikane v neprivilegiranega uporabnika. Če opazite neujemanja, preverite, ali se parameter Domain v /etc/idmapd.conf ujema na strežniku in odjemalcu.

Če je datoteka uspešno ustvarjena, lahko vaši odjemalci komunicirajo s strežnikom in zapisujejo podatke po načrtih.

Razveljavitev sprememb

Za odklop souporabe na odjemalcu:

sudo umount /mnt/client_share

Če ste dodali vnos v /etc/fstab na odjemalcu, ga odstranite.

Če želite prenehati s souporabo imenika na strežniku, odstranite ustrezno vrstico iz /etc/exports in uveljavite spremembe:

Debian/Ubuntu:

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

CentOS/RHEL/AlmaLinux:

sudo exportfs -a sudo systemctl restart nfs-server

Za popolno odstranitev nameščenih paketov:

Debian/Ubuntu:

sudo apt remove nfs-kernel-server nfs-common

CentOS/RHEL/AlmaLinux:

sudo dnf remove nfs-utils

To dejanje bo na vaših računalnikih popolnoma onemogočilo delovanje NFS.

Zaključek

Uspešno ste se naučili, kako nastaviti strežnik NFS v sistemu Linux. S pravilno konfiguracijo lahko varno omogočite souporabo imenika prek NFS z več odjemalci NFS. Ta nastavitev je zanesljiva osnova za avtomatizacijo rutinskih administrativnih opravil in centralizacijo dnevnikov za proaktivne varnostne revizije.

Različica dokumenta: 1.0
Zadnja posodobitev: maj 2026
Lastnik: Ekipa za tehnično dokumentacijo

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