Android

Cum se instalează și se configurează un server nfs pe ubuntu 18.04

Symlink Tutorial in Linux .

Symlink Tutorial in Linux .

Cuprins:

Anonim

Network File System (NFS) este un protocol de sistem de fișiere distribuit care vă permite să partajați directoarele la distanță printr-o rețea. Cu NFS, puteți monta directoare la distanță pe sistemul dvs. și puteți lucra cu fișierele de pe mașina de la distanță, ca și cum ar fi fișiere locale.

Protocolul NFS nu este criptat în mod implicit și spre deosebire de Samba, nu oferă autentificarea utilizatorului. Accesul la server este restricționat de adresele IP sau nume de gazdă ale clienților.

În acest tutorial, vom examina modul de configurare a unui server NFSv4 pe Ubuntu 18.04. Vă vom arăta, de asemenea, cum să montați un sistem de fișiere NFS pe client.

Cerințe preliminare

Acest exemplu presupune că aveți un server care rulează Ubuntu 18.04 și altul care rulează orice altă distribuție Linux. Serverul și clienții ar trebui să poată comunica între ei printr-o rețea privată. Dacă furnizorul dvs. de găzduire nu oferă adrese IP private, puteți utiliza adrese IP publice și configurați firewall-ul serverului pentru a permite traficul pe portul 2049 numai din surse de încredere.

Mașinile din acest exemplu au următoarele IP-uri:

NFS Server IP: 192.168.33.10 NFS Clients IPs: From the 192.168.33.0/24 range

Configurați serverul NFS

Vom începe prin instalarea și configurarea serverului NFS.

Instalarea serverului NFS

Actualizați indexul pachetelor și instalați pachetul server NFS:

sudo apt update sudo apt install nfs-kernel-server

După terminarea instalării, serviciile NFS vor începe automat.

În mod implicit, pe Ubuntu 18.04 versiunea 2 NFS este dezactivată. Versiunile 3 și 4 sunt activate. Puteți verifica acest lucru executând următoarea comandă cat :

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

NFSv2 este destul de vechi acum și nu există niciun motiv pentru a-l activa.

Opțiunile de configurare a serverului NFS sunt setate în fișierele /etc/default/nfs-kernel-server și /etc/default/nfs-common . Setările implicite sunt suficiente în cazul nostru.

Crearea sistemelor de fișiere

Atunci când configurați un server NFSv4, este o bună practică să utilizați un director rădăcină global NFS și să legați directoarele reale la punctul de montaj partajat. În acest exemplu, vom folosi directorul /srv/nfs4 ca rădăcină NFS.

Vom împărtăși două directoare ( /var/www și /opt/backups ), cu setări diferite de configurare, pentru a explica mai bine cum pot fi configurate monturile NFS.

/var/www/ este deținut de utilizator și grupul www-data și /opt/backups sunt deținute de root .

Creați sistemul de fișiere de export utilizând comanda mkdir :

sudo mkdir -p /srv/nfs4/backups sudo mkdir -p /srv/nfs4/www

Montați directoarele reale:

sudo mount --bind /opt/backups /srv/nfs4/backups sudo mount --bind /var/www /srv/nfs4/www

Pentru a face suporturile de legare permanente, deschideți /etc/fstab :

sudo nano /etc/fstab

și adăugați următoarele linii:

/ Etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

Exportarea sistemelor de fișiere

Următorul pas este definirea sistemelor de fișiere care vor fi exportate de serverul NFS, opțiunile de partajare și clienții cărora li se permite accesul la aceste sisteme de fișiere. Pentru aceasta, deschideți /etc/exports :

sudo nano /etc/exports Fișierul /etc/exports conține, de asemenea, comentarii care descriu modul de export a unui director.

În cazul nostru, trebuie să exportăm directoarele www și backups și să permitem accesul numai de la clienți în rețeaua 192.168.33.0/24 :

/ etc / exporturi

/srv/nfs4 192.168.33.0/24(rw, sync, no_subtree_check, crossmnt, fsid=0) /srv/nfs4/backups 192.168.33.0/24(ro, sync, no_subtree_check) 192.168.33.3(rw, sync, no_subtree_check) /srv/nfs4/www 192.168.33.110(rw, sync, no_subtree_check)

Prima linie conține fsid=0 care definește directorul rădăcină NFS /srv/nfs . Accesul la acest volum NFS este permis doar clienților din subrețea 192.168.33.0/24 . Opțiunea crossmnt este necesară pentru a partaja directoare care sunt subdirectoare ale unui director exportat.

În a doua linie se arată cum se pot specifica mai multe reguli de export pentru un sistem de fișiere. /srv/nfs4/backups directorul /srv/nfs4/backups și permite accesul numai de citire la întregul interval 192.168.33.0/24 și accesul atât la citire cât și la scriere la 192.168.33.3 . Opțiunea de sync spune NFS să scrie modificări pe disc înainte de a răspunde.

Ultima linie ar trebui să fie explicativă. Pentru mai multe informații despre toate opțiunile disponibile, tipul man exports în terminalul dvs.

Salvați fișierul și exportați acțiunile:

sudo exportfs -ra

Trebuie să rulați comanda de mai sus de fiecare dată când modificați /etc/exports . Dacă există erori sau avertismente, acestea vor fi afișate pe terminal.

Pentru a vizualiza exporturile active actuale și starea lor, utilizați:

sudo exportfs -v

Rezultatul va include toate acțiunile cu opțiunile lor. După cum vedeți, există și opțiuni pe care nu le-am definit în /etc/exports . Acestea sunt opțiuni implicite și dacă doriți să le schimbați, va trebui să setați în mod explicit opțiunile respective.

/srv/nfs4/backups 192.168.33.3(rw, wdelay, root_squash, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/www 192.168.33.110(rw, wdelay, root_squash, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4 192.168.33.0/24(rw, wdelay, crossmnt, root_squash, no_subtree_check, fsid=0, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/backups 192.168.33.0/24(ro, wdelay, root_squash, no_subtree_check, sec=sys, ro, secure, root_squash, no_all_squash)

Pe Ubuntu, root_squash este activat implicit. Aceasta este una dintre cele mai importante opțiuni privind securitatea NFS. Împiedică utilizatorii root conectați de la clienți să aibă privilegii root pe acțiunile montate. Acesta va UID și GID rădăcină către nobody / nogroup UID / GID .

Pentru ca utilizatorii de pe mașinile client să aibă acces, NFS se așteaptă ca utilizatorul și ID-ul clientului să se potrivească cu cele de pe server. O altă opțiune este utilizarea funcției de idmapping NFSv4 care traduce ID-urile de utilizator și de grup la nume și invers.

Asta e. În acest moment, ați configurat un server NFS pe serverul dvs. Ubuntu. Acum puteți trece la pasul următor și configurați clienții și vă puteți conecta la serverul NFS.

Configurare firewall

Presupunând că utilizați UFW pentru a gestiona firewallul pentru a permite accesul din subrețea 192.168.33.0/24 trebuie să rulați următoarea comandă:

sudo ufw allow from 192.168.33.0/24 to any port nfs

Pentru a verifica execuția modificării:

sudo ufw status

Ieșirea ar trebui să arate că traficul pe portul 2049 este permis:

To Action From -- ------ ---- 2049 ALLOW 192.168.33.0/24 22/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6)

Configurați clienții NFS

Acum, când serverul NFS este configurat și partajele sunt exportate la pasul următor, configurați clienții și montați sistemele de fișiere la distanță.

Puteți monta, de asemenea, cota NFS pe macOS și mașini Windows, dar ne vom concentra pe sistemele Linux.

Instalarea clientului NFS

Pe aparatele client trebuie să instalăm doar instrumentele necesare pentru montarea unui sistem de fișiere NFS la distanță.

  • Instalați clientul NFS pe Debian și Ubuntu

    Numele pachetului care include programe pentru montarea sistemelor de fișiere NFS pe distribuții bazate pe Debian este nfs-common . Pentru a instala, rulați:

    sudo apt update sudo apt install nfs-common

    Instalați clientul NFS pe CentOS și Fedora

    Pe Red Hat și derivatele sale instalați pachetul nfs-utils :

    sudo yum install nfs-utils

Montarea sistemelor de fișiere

Vom lucra pe aparatul client cu IP 192.168.33.110 care are acces de citire și scriere la sistemul de fișiere /srv/nfs4/www și acces de citire numai la sistemul de fișiere /srv/nfs4/backups .

Creați două directoare noi pentru punctele de montare. Puteți crea aceste directoare în orice locație doriți.

sudo mkdir -p /backups sudo mkdir -p /srv/www

Montați sistemele de fișiere exportate cu comanda mount :

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

Unde este 192.168.33.10 este IP-ul serverului NFS. Puteți utiliza, de asemenea, numele de gazdă în locul adresei IP, dar acesta trebuie rezolvat de către mașina client. Acest lucru se face de obicei prin maparea numelui de gazdă către IP în /etc/hosts .

Când montați un sistem de fișiere NFSv4, trebuie să comutați directorul rădăcină NFS, deci în loc de /srv/nfs4/backups trebuie să utilizați /backups .

Verificați dacă sistemele de fișiere la distanță sunt montate cu succes folosind fie comanda mount sau df :

df -h

Comanda va imprima toate sistemele de fișiere montate. Ultimele două linii sunt acțiunile montate:

Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% / devtmpfs 236M 0 236M 0% /dev tmpfs 244M 0 244M 0% /dev/shm tmpfs 244M 4.5M 240M 2% /run tmpfs 244M 0 244M 0% /sys/fs/cgroup /dev/sda2 1014M 87M 928M 9% /boot tmpfs 49M 0 49M 0% /run/user/1000 192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.10:/www 9.7G 1.2G 8.5G 13% /srv/www

Pentru a face ca suporturile să fie permanente la repornire, deschideți /etc/fstab :

sudo nano /etc/fstab

și adăugați următoarele linii:

/ Etc / fstab

192.168.33.10:/backups /backups nfs defaults, timeo=900, retrans=5, _netdev 0 0 192.168.33.10:/www /srv/www nfs defaults, timeo=900, retrans=5, _netdev 0 0

Pentru a găsi mai multe informații despre opțiunile disponibile la montarea unui sistem de fișiere NFS, tastați man nfs în terminalul dvs.

O altă opțiune pentru a monta sistemele de fișiere la distanță este să folosiți instrumentul autofs sau să creați o unitate systemd.

Testarea accesului NFS

Să testăm accesul la acțiuni prin crearea unui nou fișier pentru fiecare dintre ele.

În primul rând, încercați să creați un fișier de testare în directorul /backups folosind comanda touch :

sudo touch /backups/test.txt

Sistemul /backup fișiere /backup este exportat doar în citire și, așa cum este de așteptat, veți vedea un mesaj de eroare Permission denied Permis:

touch: cannot touch '/backups/test': Permission denied

În continuare, încercați să creați un fișier de testare în directorul /srv/www ca rădăcină folosind comanda sudo :

sudo touch /srv/www/test.txt

Din nou, veți vedea mesajul Permission denied .

touch: cannot touch '/srv/www': Permission denied

Presupunând că aveți o utilizare www-data pe mașina client cu același UID și GID ca pe serverul de la distanță (ceea ce ar trebui să fie cazul, de exemplu, dacă ați instalat nginx pe ambele mașini), puteți testa pentru a crea un fișier ca utilizator. www-data cu:

sudo -u www-data touch /srv/www/test.txt

Comanda nu va afișa nicio ieșire ceea ce înseamnă că fișierul a fost creat cu succes.

Pentru verificare, listați fișierele din directorul /srv/www :

ls -la /srv/www

Rezultatul arăta fișierul nou creat:

drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18. drwxr-xr-x 3 root root 4096 Jun 23 22:29.. -rw-r--r-- 1 www-data www-data 0 Jun 23 21:58 index.html -rw-r--r-- 1 www-data www-data 0 Jun 23 22:18 test.txt

Demontarea sistemului de fișiere NFS

sudo umount /backups

Dacă punctul de montaj este definit în /etc/fstab , asigurați-vă că eliminați linia sau comentați-l adăugând # la începutul liniei.

Concluzie

În acest tutorial, v-am arătat cum să configurați un server NFS și cum să montați sistemele de fișiere la distanță pe mașinile client. Dacă implementați NFS în producție și partajarea de date sensibile, este o idee bună să activați autentificarea kerberos.

Ca alternativă la NFS, puteți utiliza SSHFS pentru a monta directoarele la distanță pe o conexiune SSH. SSHFS este criptat implicit și mult mai ușor de configurat și utilizat.

Simțiți-vă liber să lăsați un comentariu dacă aveți întrebări.

terminal Ubuntu nfs mount