Network File System neboli NFS je protokol distribuovaného systému souborů, který umožňuje vzdáleným hostitelům připojit systémy souborů přes síť a provádět na nich operace se soubory, jako by byly připojeny lokálně. To je zvláště užitečné, když chcete sdílet prostředky z jednoho serveru přes více klientů nebo umožnit více klientům zapisovat do jednoho úložného prostoru.
V tomto tutoriálu se naučíte, jak nainstalovat a nakonfigurovat server NFS a klienty NFS založené na Rocky Linux 8. Za tímto účelem nastavíme hostitele nebo server pro sdílení souborů a klienta pro přístup k souborům hostitele pomocí připojení NFS. .
Předpoklady
- Dva servery Rocky Linux 8. Každý z nich by měl mít uživatele bez oprávnění root s právy sudo.
- Hostitel i klient by měli mít statickou IP adresu. Obojí můžete dokonce nastavit přes privátní síť. Pro náš tutoriál použijeme host_ip k označení IP adresy hostitele a client_ip odkazovat na IP adresu Klienta.
Krok 1 – Instalace NFS na hostitele a klienta
Hostitel
Chcete-li nainstalovat balíčky NFS, musíte nainstalovat nfs-utils
balík. Poskytuje démona pro server NFS a související nástroje.
Nainstalujte balíček.
$ sudo dnf install nfs-utils
Povolte a spusťte nfs-server
servis. Zbývající služby nezbytné pro připojení a sdílení NFS, jako je nfsd
, nfs-idmapd
, rpcbind
, rpc.mountd
, lockd
, rpc.statd
, rpc.quotad
a rpc.idmapd
spustí se automaticky spolu s ním.
$ sudo systemctl enable nfs-server --now
Ověřte verzi instalace NFS.
$ sudo cat /proc/fs/nfsd/versions -2 +3 +4 +4.1 +4.2
NFS verze 3 a 4 jsou ve výchozím nastavení povoleny a verze 2 je zakázána. NFSv2 je docela starý a zastaralý, a proto můžete vidět -ve podepsat před ním.
NFS ukládá své konfigurace v /etc/nfsmount.conf
a /etc/nfs.conf
soubory. Soubor /etc/nfsmount.conf
je konfigurovat připojení NFS v /etc/nfs.conf
je nakonfigurovat démona NFS a související nástroje. Výchozí nastavení stačí pro náš tutoriál a není potřeba žádná změna.
Klient
Na klienta nainstalujte nfs-utils
a nfs4-acl-tools
balíčky.
$ sudo dnf install nfs-utils nfs4-acl-tools
Krok 2 – Vytvoření sdílených adresářů na hostiteli
Použijeme dva příklady s různým nastavením konfigurace – jeden s univerzálním připojením a jeden se sdílením domovského adresáře hostitele.
NFS připojené adresáře nejsou součástí klienta. Proto na nich NFS nemůže provádět úlohy vyžadující oprávnění superuživatele. Znamená to, že klient nemůže změnit vlastnictví, zapisovat na něj jako uživatel root nebo provádět úkoly na vysoké úrovni. Existují však případy, kdy důvěryhodný uživatel na klientovi potřebuje provést takové úkoly, aniž by vyžadoval přístup superuživatele na hostiteli. Server NFS lze nakonfigurovat tak, aby to umožňoval, ale existuje riziko, že klient může přistupovat k hostiteli.
Práce s univerzálním držákem
V našem prvním případě vytvoříme jednoduché připojení, které používá výchozí chování NFS, což znamená, že klient nemůže provádět žádné úkoly vyžadující oprávnění superuživatele.
Vytvořte sdílený adresář.
host:$ sudo mkdir /var/nfs/share -p
Tento adresář bude vlastnit uživatel root hostitele, protože jsme použili sudo
k jeho vytvoření.
host:$ ls -l /var/nfs total 0 drwxr-xr-x. 2 root root 6 Dec 13 07:30 share
NFS přeloží všechny operace root na straně klienta do nobody:nobody
přihlašovací údaje z bezpečnostních důvodů. Proto je musíme porovnat na straně hostitele.
host:$ sudo chown nobody:nobody /var/nfs/general
Práce s domovským adresářem
V našem druhém případě zpřístupníme domovský adresář na hostiteli klientovi. Nemusíme jej vytvářet, protože již existuje. Nemusíme měnit žádná oprávnění, protože by to ovlivnilo uživatele na hostitelském počítači.
Krok 3 – Konfigurace exportů NFS na hostiteli
Otevřete soubor /etc/exports
na hostitelském počítači pro úpravy.
host:$ sudo nano /etc/exports
Vložte následující kód do souboru.
/var/nfs/share client_ip(rw,sync,no_subtree_check) /home client_ip(rw,sync,no_root_squash,no_subtree_check)
Každý adresář a jeho konfigurace musí být na samostatném řádku. Nahraďte client_ip
hodnotu se skutečnou IP adresou klientského počítače.
Pojďme si projít všechny možnosti pro exporty NFS.
- rw - poskytuje klientskému počítači přístup ke čtení a zápisu na svazek NFS.
- synchronizovat - tato volba přinutí NFS zapsat změny na disk před odpovědí. Tato možnost je považována za spolehlivější. Snižuje však také rychlost operací se soubory.
- no_subtree_check - tato volba zabraňuje kontrole podstromu, což je proces, kdy hostitel musí zkontrolovat, zda je soubor dostupný spolu s oprávněními pro každý požadavek. Může také způsobit problémy, když je soubor přejmenován na hostiteli, zatímco je stále otevřený na klientovi. Jeho zakázání zvyšuje spolehlivost NFS.
- no_root_squash - Ve výchozím nastavení NFS překládá požadavky od uživatele root na klientovi na neprivilegovaného uživatele na hostiteli. Tato možnost toto chování zakáže a měla by být používána opatrně, aby klient mohl získat přístup k hostiteli.
Po dokončení uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Chcete-li exportovat sdílené položky, spusťte následující příkaz.
host:$ sudo exportfs -arv exporting client_ip:/home exporting client_ip:/var/nfs/share
- -a - tato volba způsobí export všech adresářů.
- -r - tato volba způsobí, že všechny adresáře budou exportovány vytvořením nového seznamu v
/var/lib/nfs/etab
adresář. Tato možnost se používá k obnovení seznamu exportů se všemi změnami provedenými v souboru/etc/exports
. - -v - umožňuje podrobný výstup.
Chcete-li zobrazit seznam všech exportovaných adresářů, spusťte následující příkaz. Zobrazí všechny možnosti, včetně výchozích, které nebyly specifikovány v /etc/exports
soubor.
host:$ sudo exportfs -s /var/nfs/share client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /home client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
Krok 4 – Konfigurace brány firewall na hostiteli
Rocky Linux používá Firewalld Firewall. Zkontrolujte stav brány firewall.
host:$ sudo firewall-cmd --state running
To znamená, že je úspěšně spuštěn.
Firewall pracuje s různými zónami a veřejná zóna je výchozí zóna, kterou budeme používat. Seznam všech služeb a portů aktivních na bráně firewall.
host:$ sudo firewall-cmd --permanent --list-services
Měl by ukazovat následující výstup.
cockpit dhcpv6-client ssh
Dále musíme povolit provoz potřebným službám NFS - mountd
, nfs
a rpc-bind
. Musíme také povolit přístup z IP klienta. Pokud jsou vaši klienti a hostitelské servery ve stejné podsíti, nemusíte přidávat IP adresu klienta.
host:$ sudo firewall-cmd --permanent --add-service=nfs host:$ sudo firewall-cmd --permanent --add-service=rpc-bind host:$ sudo firewall-cmd --permanent --add-service=mountd host:$ sudo firewall-cmd --permanent --add-source=client_IP
Chcete-li použít změny, znovu načtěte bránu firewall.
host:$ sudo firewall-cmd --reload
Krok 5 – Vytvoření přípojných bodů a adresářů na klientovi
Nyní, když je server/hostitel NFS nakonfigurován, je dalším krokem nastavení přípojných bodů a adresářů na klientovi. Můžete spustit showmount
příkaz na klientovi, abyste zkontrolovali seznam exportovaných systémů souborů na hostiteli.
client:$ showmount -e host_ip Export list for host_ip: /home host_ip /var/nfs/share host_ip
Vždy vytvořte nový adresář jako přípojné body na klientovi nebo použijte existující prázdný adresář. Pokud je v adresáři, který připojujete, soubor, bude skrytý.
Vytvořte adresáře Mount.
client:$ sudo mkdir -p /nfs/share client:$ sudo mkdir -p /nfs/home
Připojte sdílené složky pomocí adresy IP hostitele.
client:$ sudo mount host_ip:/var/nfs/share /nfs/share client:$ sudo mount host_ip:/home /nfs/home
Ověřte, že připojení bylo úspěšné.
client:$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 370M 0 370M 0% /dev tmpfs 405M 0 405M 0% /dev/shm tmpfs 405M 16M 389M 4% /run tmpfs 405M 0 405M 0% /sys/fs/cgroup /dev/vda1 25G 2.4G 23G 10% / tmpfs 81M 0 81M 0% /run/user/1000 host_ip:/var/nfs/share 25G 2.4G 23G 10% /nfs/share host_ip:/home 25G 2.4G 23G 10% /nfs/home
Obě sdílené položky jsou připojeny ze stejného systému souborů. Ukazují tedy stejné využití disku.
Můžete také použít mount
příkaz k ověření.
client:$ mount | grep nfs rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) host_ip:/var/nfs/share on /nfs/share type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip) host_ip:/home on /nfs/home type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
Krok 6 – Test přístupu NFS
Testování obecného sdílení
Napište testovací soubor do /var/nfs/share
sdílet.
client:$ sudo touch /nfs/share/test.txt
Zkontrolujte jeho vlastnictví.
client:$ ls -l /nfs/share/test.txt -rw-r--r--. 1 nobody nobody 0 Dec 13 08:08 /nfs/share/test.txt
Protože jsme tento svazek připojili pomocí výchozího nastavení NFS a vytvořili soubor na klientovi pomocí sudo
, vlastnictví souboru je ve výchozím nastavení nobody:nobody
. Superuživatelé klientů nemohou provádět žádné administrativní úkoly na sdílené složce.
Testování sdílení domovského adresáře
Napište testovací soubor do /nfs/home
sdílet.
client:$ sudo touch /nfs/home/home.txt
Zkontrolujte jeho vlastnictví.
client:$ ls -l /nfs/home/home.txt -rw-r--r--. 1 root root 0 Dec 13 08:09 /nfs/home/home.txt
Protože jsme použili no_root_squash
Tato možnost umožnila uživateli root klienta jednat jako root na samotné sdílené složce.
Krok 7 – Udělejte přípojné body trvalými
Sdílené složky NFS jsou ve výchozím nastavení dočasné a je třeba je připojit při spouštění. Můžeme je učinit trvalými úpravou /etc/fstab
soubor na klientovi.
Otevřete soubor /etc/fstab
pro úpravy.
client:$ sudo nano /etc/fstab
Vložte následující řádky do spodní části souboru.
. . . host_ip:/var/nfs/share /nfs/share 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
Více o možnostech uvedených výše můžete zjistit spuštěním následujících příkazů.
client:$ man nfs client:$ man mount
Pokud si je chcete přečíst online, můžete si vygooglit frázi man nfs
a man mount
se o těchto možnostech dozvíte více.
Krok 8 – Odpojení sdílení NFS
Pokud již vzdálené připojení ve svém systému nechcete, můžete je odpojit pomocí umount
příkaz. Všimněte si, že příkaz se nazývá umount a nikoli odpojit což je častá chyba.
Přesuňte se ze sdílených připojení a odpojte je.
client:$ cd ~ client:$ sudo umount /nfs/share client:$ sudo umount /nfs/home
Pokud již nepotřebujete sdílené položky znovu připojovat po restartu, ujistěte se, že jste zakomentovali odpovídající položky v /etc/fstab
soubor vložením #
podepsat před nimi.
Závěr
V tomto tutoriálu jsme se naučili, jak vytvořit hostitelský server NFS a pomocí něj připojit adresáře, které jsme sdíleli s klientem NFS. Pokud jej implementujete v privátní síti, pak by neměl být žádný problém, ale pokud jej používáte v produkci, měli byste si uvědomit, že protokol není šifrovaný a měli byste implementovat určitou autentizaci pro ochranu vašich dat.
Pokud máte nějaké dotazy, napište je do komentářů níže.