Network File System nebo zkratka NFS je protokol distribuovaného systému souborů, který vám umožňuje připojit vzdálené adresáře na váš server. NFS umožňuje přístup k souborům a složkám z jiného serveru nebo klienta. Na tento server můžete zapisovat z více klientů nebo vzdálených systémů přes síť. Tato technologie vám poskytuje flexibilitu sdílení prostředků na více systémech.
V tomto tutoriálu se naučíme, jak nastavit server NFS a jak připojit sdílené složky NFS na klienta pomocí Ubuntu 20.04.
Předpoklady
- Dva systémy Ubuntu 20.04. Každý server by měl mít uživatele bez oprávnění root s právy sudo a nastaveným firewallem UFW.
- Server i klienta můžete nastavit prostřednictvím privátní sítě. V našem tutoriálu použiji host_ip k označení host_ip adresu a ip_klienta odkazovat na IP adresu Klienta.
Krok 1 – Instalace NFS na server a klienta
Hostitel
Potřebujeme nainstalovat nfs-kernel-server
balíček na hostiteli, abyste mohli sdílet své adresáře.
$ sudo apt update
$ sudo apt install nfs-kernel-server
Klient
Pro klienta nainstalujeme nfs-common
balíček, který klientovi umožňuje připojit hostitelský adresář, ale nemůže hostovat samotný adresář.
$ sudo apt update
$ sudo apt install nfs-common
Krok 2 – Vytvoření sdílených adresářů na hostiteli
Existují dva způsoby, jak můžete klientovi udělit přístup k adresářům na hostiteli. Ve výchozím nastavení server NFS neumožňuje operace, které vyžadují oprávnění sudo. To znamená, že superuživatelé na klientovi nemohou zapisovat soubory jako root, měnit přiřazení vlastnictví nebo provádět úkoly, které vyžadují zvýšená oprávnění.
Někdy však klient potřebuje provést určité operace na hostiteli, které vyžadují zvýšená oprávnění, ale nepotřebuje k tomu přístup superuživatele.
První metoda
Toto je výchozí způsob sdílení adresářů. Pro uživatele root na klientovi je obtížné komunikovat s hostitelem pomocí zvýšených oprávnění.
Nejprve vytvořte sdílený adresář.
$ sudo mkdir /var/nfs/general -p
Pokud na klientovi provedete nějaké operace root, pak je NFS přeloží do nobody:nogroup
přihlašovací údaje na hostitelském počítači. Proto musíme sdílenému adresáři přidělit příslušné vlastnictví.
$ sudo chown nobody:nogroup /var/nfs/general
Druhá metoda
Zde sdílíme hostitelský domovský adresář s klientem. To umožní uživatelům root na klientovi správný přístup k hostiteli.
Protože domovský adresář již na hostitelském serveru existuje, nemusíme jej vytvářet. Není potřeba měnit ani oprávnění, protože to způsobí mnoho problémů pro uživatele na hostitelském počítači.
Krok 3 – Konfigurace NFS na hostiteli
Je čas nakonfigurovat NFS pro nastavení sdílení.
Otevřete soubor /etc/exports
na hostitelském serveru.
$ sudo nano /etc/exports
Přidejte následující řádky na konec, každý jeden, pro každý adresář, který sdílíte.
/var/nfs/general client_ip(rw,sync,no_subtree_check)
/home client_ip(rw,sync,no_root_squash,no_subtree_check)
Pojďme si projít všechny tyto možnosti a co znamenají.
- rw :Toto poskytuje klientovi přístup pro čtení a zápis do hostitelských adresářů.
- synchronizovat :Tato možnost nutí NFS, aby zapsal změny před odpovědí. To znamená, že NFS nejprve dokončí zápis do hostitelského adresáře a poté odpoví klientovi. To zajišťuje, že se odráží skutečný stav hostitelského serveru, ale může zpomalit rychlost operací se soubory.
- no_subtree_check :Tato možnost zakáže kontrolu podstromu. Kontrola podstromu je operace, kdy s každým požadavkem NFS musí server zkontrolovat, zda je přítomen zpřístupňovaný soubor a zda je v exportovaném stromu. Tato operace způsobuje problémy při přejmenování souborů, ke kterým klient přistupuje. Proto je ve většině případů nejlepší ponechat jej vypnutý. Má určité mírné bezpečnostní důsledky, ale může zlepšit spolehlivost.
- no_root_squash :Ve výchozím nastavení NFS převádí všechny operace provedené klientem jako root na neprivilegovaného uživatele na serveru. Děje se tak se záměrem zlepšit bezpečnost. Tato možnost zakáže toto chování pro určité sdílené položky.
Až budete hotovi, zavřete soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Chcete-li použít změny, restartujte server NFS.
$ sudo systemctl restart nfs-kernel-server
Krok 4 – Konfigurace brány firewall hostitele
Osvědčeným postupem s NFS je povolit jej specificky pro IP adresu každého klienta zvlášť, místo aby k ní byl povolen přístup odkudkoli.
NFS používá port 2049. Povolte přístup pro NFS následujícím příkazem.
$ sudo ufw allow from client_ip to any port nfs
Zkontrolujte stav pro ověření.
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
2049 ALLOW 167.100.34.78
OpenSSH (v6) ALLOW Anywhere (v6)
Krok 5 – Vytvoření přípojných bodů na klientovi
Nyní, když je náš hostitel nakonfigurován, je čas nastavit klienta.
Vytvořte dva adresáře pro připojení na klientovi.
$ sudo mkdir -p /nfs/general
$ sudo mkdir -p /nfs/home
Nyní, když jsme vše nastavili na konec hostitele, můžeme sdílené složky připojit pomocí adresy IP hostitele.
$ sudo mount host_ip:/var/nfs/general /nfs/general
$ sudo mount host_ip:/home /nfs/home
Můžete zkontrolovat, zda byly úspěšně připojeny pomocí následujícího příkazu.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 448M 0 448M 0% /dev
tmpfs 99M 664K 98M 1% /run
/dev/vda1 25G 3.2G 21G 14% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1000
123.175.112.87:/var/nfs/general 25G 18G 6.3G 74% /nfs/general
123.175.112.87:/home 25G 18G 6.3G 74% /nfs/home
Obě připojené sdílené položky můžete vidět ve spodní části seznamu. Protože byly oba připojeny ze stejného souborového systému, zobrazují plné využití disku a nikoli skutečné využití připojených adresářů.
Chcete-li zjistit, kolik skutečného prostoru se využívá pod každým připojením, použijte následující příkaz.
$ du -sh /nfs/general
36K /nfs/general
Krok 6 – Test sdílení NFS
Vytvořte testovací soubor do /var/nfs/general
sdílet.
$ sudo touch /nfs/general/general.test
Zkontrolujte jeho vlastnictví.
$ ls -l /nfs/general/general.test
-rw-r--r-- 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test
Toto bylo připojeno pomocí výchozích možností NFS a protože jsme soubor vytvořili pomocí root z klientského počítače, vlastnictví na hostiteli bylo převedeno na nobody:nogroup
. Zde klientský uživatel nemůže provádět administrativní úlohy na počítači hostitele.
Vytvořte testovací soubor pro sdílenou složku /nfs/home.
$ sudo touch /nfs/home/home.test
Zkontrolujte jeho vlastnictví.
$ ls -l /nfs/home/home.test
-rw-r--r-- 1 root root 0 Aug 1 13:32 /nfs/home/home.test
Protože jsme vytvořili testovací soubor pomocí root z klientského počítače, bylo vlastnictví zachováno na hostitelském počítači. Bylo to proto, že jsme použili no_root_squash
příznak, který umožnil uživateli root na klientském počítači jako uživatele root také na hostitelském počítači.
Krok 7 – Připojení sdílených složek NFS během spouštění
Po zavedení klientského počítače nebudou tato připojení zachována. Aby byly trvalé, musíme upravit /etc/fstab
soubor.
Otevřete /etc/fstab
soubor pro úpravy.
$ sudo nano /etc/fstab
Vložte následující řádky do spodní části souboru. Každý řádek odpovídá každému adresáři, který chceme připojit při spouštění.
. . .
host_ip:/var/nfs/general /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Chcete-li se dozvědět o těchto možnostech, podívejte se na manuálovou stránku nfs
.
$ man nfs
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restartujte server a zkontrolujte připojení.
$ sudo reboot
Přihlaste se na klient-server a ověřte, že jsou přítomna připojení.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 448M 0 448M 0% /dev
tmpfs 99M 664K 98M 1% /run
/dev/vda1 25G 3.2G 21G 14% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1000
123.175.112.87:/var/nfs/general 25G 18G 6.3G 74% /nfs/general
123.175.112.87:/home 25G 18G 6.3G 74% /nfs/home
Krok 8 – Odpojení sdílených složek NFS
Jakmile nepotřebujete připojení NFS, můžete je odpojit pomocí následujícího příkazu.
$ sudo umount /nfs/home
$ sudo umount /nfs/general
Častou chybou je použití unmount
místo umount
což je skutečný příkaz.
Ověřte, že byly správně odpojeny.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 448M 0 448M 0% /dev
tmpfs 99M 664K 98M 1% /run
/dev/vda1 25G 3.2G 21G 14% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1000
Budete také muset smazat jejich záznamy z /etc/fstab
aby se při bootování znovu nepřipojily. Můžete také jednoduše odkomentovat jejich příspěvky umístěním #
znak vpředu pro případ, že byste potřebovali znovu použít úchyty.
Závěr
Tímto končí náš tutoriál, kde jsme se naučili, jak vytvořit připojení NFS na hostitelském počítači a jak k nim přistupovat z různých klientských počítačů. Pokud máte nějaké dotazy, napište je do komentářů níže.