NFS nebo Network File System je protokol distribuovaného systému souborů, který umožňuje sdílet adresáře v síti. S NFS můžete připojit vzdálené adresáře ve vašem systému a pracovat se soubory na vzdáleném počítači, jako by to byly místní soubory.
Ve výchozím nastavení není protokol NFS šifrován a neposkytuje ověření uživatele. Přístup na server je omezen IP adresami klienta nebo jmény hostitele.
Tento článek vysvětluje, jak nastavit server NFSv4 na Ubuntu 20.04. Ukážeme vám také, jak připojit systém souborů NFS na klientském počítači.
Předpoklady #
Použijeme dva stroje, jeden se systémem Ubuntu 20.04, který bude fungovat jako server NFS, a další se spuštěnou jakoukoli jinou distribucí Linuxu, na kterou sdílíme připojení. Server a klienti by měli být schopni komunikovat mezi sebou prostřednictvím privátní sítě. Můžete použít veřejné IP adresy a nakonfigurovat bránu firewall serveru tak, aby umožňovala provoz na portu 2049
pouze z důvěryhodných zdrojů.
Stroje v tomto příkladu mají následující adresy IP:
IP serveru NFS: 192.168.33.10 IP adres klientů NFS: od 192.168.33.Rozsah 0/24
Nastavení serveru NFS #
Prvním krokem je nastavení serveru NFS. Nainstalujeme potřebné balíčky, vytvoříme a exportujeme adresáře NFS a nakonfigurujeme bránu firewall.
Instalace serveru NFS #
Balíček serveru NFS poskytuje podporu uživatelského prostoru potřebnou ke spuštění serveru jádra NFS. Chcete-li nainstalovat balíček, spusťte:
sudo apt aktualizace
sudo apt nainstalovat nfs-kernel-server
Po dokončení instalace se automaticky spustí služby NFS.
Na Ubuntu 20.04, NFS verze 2 je zakázána. Verze 3 a 4 jsou povoleny. Můžete to ověřit spuštěním následujícího kočka
příkaz:
sudo cat / proc / fs / nfsd / verze
-2 +3 +4 +4.1 +4.2
NFSv2 je nyní docela starý a není důvod jej aktivovat.
Konfigurace serveru NFS je definována v / etc / default / nfs-kernel-server
a / etc / default / nfs-common
soubory. Výchozí nastavení je pro většinu situací dostačující.
Vytváření souborových systémů #
Server NFSv4 používá globální kořenový adresář a exportované adresáře jsou relativní k tomuto adresáři. Bod připojení sdílené složky můžete propojit s adresáři, které chcete exportovat, pomocí připojení vazby.
V tomto příkladu nastavíme / srv / nfs4
adresář jako NFS root. Abychom lépe vysvětlili, jak lze konfigurovat připojení NFS, budeme sdílet dva adresáře (/ var / www
a / opt / zálohy
) s různým nastavením konfigurace. The / var / www /
je ve vlastnictví uživatele www-data
, a / opt / zálohy
je ve vlastnictví vykořenit
.
Nejprve vytvořte kořenový adresář a připojovací připojovací body:
sudo mkdir -p / srv / nfs4 / backups
sudo mkdir -p / srv / nfs4 / www
Svázat připojení adresářů ke sdíleným připojovacím bodům:
sudo mount --bind / opt / backups / srv / nfs4 / backups
sudo mount --bind / var / www / srv / nfs4 / www
Chcete-li, aby se vazby při restartování trvale stáhly, otevřete / etc / fstab
soubor:
sudo nano / etc / fstab
a přidejte následující řádky:
/ etc / fstab/ opt / backups / srv / nfs4 / backups none bind 0 0 / var / www / srv / nfs4 / www none bind 0 0
Export souborových systémů #
Dalším krokem je přidání souborových systémů, které budou exportovány a klientům povolen přístup k těmto sdíleným složkám / etc / exporty
soubor.
Každý řádek pro exportovaný souborový systém má následující formulář:
exportovat hostitele (možnosti)
Kde vývozní
je exportovaný adresář, hostitel
je název hostitele nebo IP adresa / rozsah, který má přístup k exportu, a možnosti
jsou možnosti hostitele.
Otevři / etc / exporty
soubor a přidejte následující řádky:
sudo nano / etc / exporty
/ etc / exporty/ srv / nfs4 192.168.33.0/24 (rw, sync, no_subtree_check, crossmnt, fsid = 0) / srv / nfs4 / backups 192.168.33.0/24 (ro, synchronizace, no_subtree_check) 192.168.33.3 (rw, sync, no_subtree_check) / srv / nfs4 / www 192.168.33.20 (rw, sync, no_subtree_check)
První řádek obsahuje fsid = 0
možnost, která definuje kořenový adresář NFS (/ srv / nfs4
). Přístup k tomuto svazku NFS je povolen pouze klientům z 192.168.33.0/24
podsíť. The kříž
pro sdílení adresářů, které jsou podadresáři exportovaného adresáře, je vyžadována možnost.
Druhý řádek ukazuje, jak určit více exportních pravidel pro jeden souborový systém. Přístup pro čtení je povolen pro celý 192.168.33.0/24
rozsah a přístup pro čtení i zápis pouze do souboru 192.168.33.3
IP adresa. The synchronizace
volba řekne NFS, aby před odpovědí zapsal změny na disk.
Poslední řádek je vysvětlující. Další informace o všech dostupných možnostech zadejte člověk vyváží
ve vašem terminálu.
Uložte soubor a exportujte sdílené položky:
sudo exportfs -ar
Výše uvedený příkaz musíte spustit pokaždé, když upravíte / etc / exporty
soubor. Pokud se vyskytnou nějaké chyby nebo varování, zobrazí se na terminálu.
Chcete-li zobrazit aktuální aktivní exporty a jejich stav, použijte:
sudo exportfs -v
Výstup bude zahrnovat všechny sdílené položky s jejich možnostmi. Jak vidíte, existují i možnosti, které jsme v / etc / exporty
soubor. Jedná se o výchozí možnosti a pokud je chcete změnit, musíte tyto možnosti explicitně nastavit.
/ srv / nfs4 / backup 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.20 (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)
Na Ubuntu, root_squash
je ve výchozím nastavení povoleno. Toto je jedna z nejdůležitějších možností zabezpečení NFS. Zabraňuje uživatelům root připojeným z klientů, aby měli oprávnění root na připojené sdílené složky mapováním root UID
a GID
na nikdo
/podskupina
UID
/GID
.
Aby uživatelé na klientských počítačích měli přístup, NFS očekává, že se ID uživatele a skupiny klienta shodují s těmi na serveru. Další možností je použít funkci NFSv4 idmapping, která převádí ID uživatelů a skupin na jména a naopak.
A je to. V tomto okamžiku jste na serveru Ubuntu nastavili server NFS. Nyní můžete přejít na další krok a nakonfigurovat klienty a připojit se k serveru NFS.
Konfigurace brány firewall #
Pokud instalujete Jenkins na vzdálený server Ubuntu, který je chráněn bránou firewall, budete muset povolit provoz na portu NFS:
sudo ufw povolit od 192.168.33.0/24 na libovolný port nfs
Ověření změny:
sudo ufw status
Výstup by měl ukázat, že provoz na portu 2049
je povoleno:
K akci od - ------ ---- 2049 POVOLIT 192.168.33.0/24 22 / tcp POVOLIT kdekoli 22 / tcp (v6) POVOLIT kdekoli (v6)
Nastavit klienty NFS #
Nyní, když je nastaven server NFS a exportují se sdílené složky, je dalším krokem konfigurace klientů a připojení vzdálených souborových systémů.
Zaměříme se na systémy Linux, ale můžete také připojit sdílení NFS na strojích macOS a Windows.
Instalace klienta NFS #
Na klientských počítačích musíme nainstalovat pouze nástroje potřebné k připojení vzdáleného systému souborů NFS.
Nainstalujte klienta NFS na Debian a Ubuntu
Název balíčku, který obsahuje programy pro připojení souborových systémů NFS k distribucím založeným na Debianu, je
nfs-common
. Chcete-li jej nainstalovat, spusťte:sudo apt aktualizace
sudo apt install nfs-common
Nainstalujte klienta NFS na CentOS a Fedora
Na Red Hat a jeho deriváty nainstalujte
nfs-utils
balík:sudo yum nainstalovat nfs-utils
Připojení souborových systémů #
Budeme pracovat na klientském počítači s IP 192.168.33.20
, který má přístup ke čtení a zápisu do / srv / nfs4 / www
souborový systém a přístup jen pro čtení k / srv / nfs4 / zálohy
souborový systém.
Vytvořte dva nové adresáře pro přípojné body:
sudo mkdir -p / zálohy
sudo mkdir -p / srv / www
Adresáře můžete vytvořit na libovolném místě, které chcete.
Připojte exportované souborové systémy pomocí připojit
příkaz:
sudo mount -t nfs -o vers = 4192.168.33.10: / zálohy / zálohy
sudo mount -t nfs -o vers = 4192.168.33.10: / www / srv / www
Kde 192.168.33.10
je IP adresa serveru NFS. Místo IP adresy můžete také použít název hostitele, ale musí být vyřešen klientským počítačem. To se obvykle provádí mapováním názvu hostitele na IP v / etc / hosts
soubor.
Při připojování souborového systému NFSv4 vynechejte kořenový adresář NFS. Použití / zálohy
, namísto / srv / nfs4 / zálohy
.
Ověřte, zda jsou vzdálené systémy souborů úspěšně připojeny pomocí připojení nebo df
příkaz:
df -h
Příkaz vytiskne všechny připojené systémy souborů. Poslední dva řádky jsou připojené sdílené složky:
Použitá velikost souborového systému Využít Využít% Připojeno k udev 951M 0 951M 0% / dev tmpfs 199M 676K 199M 1% / run / dev / sda3 124G 2.8G 115G 3% / tmpfs 994M 0 994M 0% / dev / shm tmpfs 5.0M 0 5.0M 0% / běh / uzamčení tmpfs 994M 0 994M 0% / sys / fs / cgroup / dev / sda1 456M 197M 226M 47% / boot tmpfs 199M 0 199M 0% / běh / uživatel / 1000 192.168.33.10: / zálohy 124G 2.8G 115G 3% / zálohy 192.168.33.10: / www 124G 2.8G 115G 3% / srv / www
Chcete-li, aby se připojení při restartu zobrazila trvale, otevřete / etc / fstab
soubor a přidejte následující řádky ::
sudo nano / etc / fstab
/ etc / fstab192.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
Informace o dostupných možnostech při připojování systému souborů NFS zadejte muž nfs
ve vašem terminálu.
Další možností připojení vzdálených souborových systémů je použít buď autofs
nástroj nebo k vytvoření systémové jednotky.
Testování přístupu NFS #
Otestujme přístup ke sdíleným složkám vytvořením nového souboru pro každou z nich.
Nejprve zkuste vytvořit testovací soubor do souboru / zálohy
adresář pomocí dotek
příkaz:
sudo touch / backups / test.txt
The /záloha
souborový systém je exportován pouze pro čtení a podle očekávání uvidíte a Přístup odepřen
chybové hlášení:
touch: cannot touch '/ backups / test': Oprávnění odepřeno
Dále zkuste vytvořit testovací soubor do / srv / www
adresář jako root pomocí sudo
příkaz:
sudo touch / srv / www / test.txt
Opět uvidíte Přístup odepřen
zpráva.
touch: cannot touch '/ srv / www': Oprávnění odepřeno
Pokud si vzpomenete, / var / www
adresář je vlastněn www-data
uživatele a tato sdílená položka má root_squash
sada možností, která mapuje uživatele root na nikdo
uživatel a podskupina
skupina, která nemá oprávnění k zápisu do vzdálené sdílené složky.
Za předpokladu, že máte www-data
použít na klientském počítači se stejným UID
a GID
jako na vzdáleném serveru (což by se mělo stát, pokud jste například nainstalovali nginx na oba stroje), můžete zkusit vytvořit soubor jako uživatel www-data
:
sudo -u www-data touch / srv / www / test.txt
Příkaz nezobrazí žádný výstup, což znamená, že soubor byl úspěšně vytvořen.
Chcete-li jej ověřit, uveďte seznam souborů v / srv / www
adresář:
ls -la / srv / www
Výstup by měl zobrazit nově vytvořený soubor:
drwxr-xr-x 3 www-data www-data 4096 10. dubna 22:18 . drwxr-xr-x 3 root root 4096 duben 10 22:29… -rw-r - r-- 1 www-data www-data 0 duben 10 21:58 index.html -rw-r - r-- 1 www-data www-data 0 10. dubna 22:18 test.txt
Odpojení systému souborů NFS #
Pokud již vzdálená sdílená položka NFS není potřeba, můžete ji odpojit jako jakýkoli jiný připojený systém souborů pomocí umount
příkaz.
Například k odpojení /záloha
sdílet, spustili byste:
sudo umount / backups
Pokud je přípojný bod definován v souboru / etc / fstab
souboru, ujistěte se, že řádek odstraníte nebo jej okomentujete přidáním #
na začátku řádku.
Závěr #
Ukázali jsme vám, jak nastavit server NFS a jak připojit vzdálené systémy souborů na klientských počítačích. Pokud implementujete NFS ve výrobě a sdílíte rozumná data, je dobré povolit ověřování pomocí protokolu Kerberos.
Jako alternativu k NFS můžete použít SSHFS k připojení vzdálených adresářů přes připojení SSH. SSHFS je ve výchozím nastavení šifrován a je mnohem snazší jej konfigurovat a používat.
Pokud máte jakékoli dotazy, neváhejte zanechat komentář.