TL; DR

een veel kortere gids is beschikbaar in de Ubuntu Servergids Als u meer informatie nodig hebt, lees dan hieronder.

Inleiding

NFS (Network File System) stelt u in staat om een map op een netwerkcomputer te ‘delen’ met andere computers / apparaten op dat netwerk. De computer waarop directory zich bevindt, wordt de server genoemd en computers of apparaten die verbinding maken met die server worden clients genoemd. Clients ‘mounten’ meestal de gedeelde map om het een deel van hun eigen directory structuur te maken.,

NFS is perfect voor het maken van NAS (Networked Attached Storage) in Linux/Unix-omgeving. Het is een native Linux/Unix protocol in tegenstelling tot Samba die gebruik maakt van het SMB protocol ontwikkeld door Microsoft. Het Apple OS heeft goede ondersteuning voor NFS. Windows 7 heeft enige ondersteuning voor NFS.

NFS is misschien het beste voor meer ‘permanente’ netwerk aangekoppelde mappen zoals / home mappen of regelmatig gebruikte gedeelde bronnen. Als je een netwerkshare wilt waar gastgebruikers gemakkelijk verbinding mee kunnen maken, is Samba meer geschikt., Dit komt omdat tools gemakkelijker bestaan over oude en eigen besturingssystemen om tijdelijk te mounten en los te maken van Samba-shares.

Ubuntu voordat u NFS implementeert, moet u bekend zijn met:

  • Linux-bestand-en mapmachtigingen
  • aankoppelen en ontkoppelen (ontkoppelen) bestandssystemen

deze HowTo maakt Ubuntu-server NFSv4 gereed.

NFS quick start

Als u begrijpt wat u doet, kunt u deze korte wandeling gebruiken om een NFSv4-server op Ubuntu op te zetten (zonder authenticatiebeveiliging). Koppel de share vervolgens aan op een Ubuntu-client., Het is getest op Ubuntu 14.04.

NFS-server

om te controleren of de NFS-server niet is geïnstalleerd, kunt u dit doen…

  • $ dpkg -l | grep nfs-kernel-server

Installeer de vereiste pakketten…

  • # apt-get install nfs-kernel-server

voor eenvoudiger onderhoud zullen we alle NFS-exports isoleren in een enkele map, waar de echte mappen zullen worden aangekoppeld met de –bind optie.

  • stel dat we de persoonlijke mappen van onze gebruikers willen exporteren in /home/users., Eerst maken we het exportbestandssysteem aan:

    # mkdir -p /export/users 

    Het is belangrijk dat /export en /export/users 777 rechten hebben omdat we de NFS share vanaf de client benaderen zonder LDAP/NIS authenticatie. Dit is niet van toepassing bij gebruik van authenticatie (zie hieronder)., Mount nu de map echte gebruikers met:

    # mount --bind /home/users /export/users

    om te voorkomen dat we dit opnieuw typen na elke herstart voegen we de volgende

    regel toe aan /etc/fstab

    /home/users /export/users none bind 0 0

  • de enige belangrijke optie in /etc/default/NFS-kernel-server voor nu is need_svcgssd. Het is standaard ingesteld op “nee”, wat prima is, omdat we deze keer de NFSv4-beveiliging niet activeren.

om de ID-namen automatisch te mappen, hebben zowel de client als de server de /etc/idmapd nodig.,conf bestand om dezelfde inhoud met de juiste domeinnamen. Verder moet dit bestand de volgende regels in de Mapping sectie hebben:

  • Nobody-User = nobodyNobody-Group = nogroup

    de client kan echter verschillende vereisten hebben voor de Nobody-User en Nobody-Group. Bijvoorbeeld op RedHat varianten, het is nfsnobody voor beide. cat/etc /passwd en cat/etc / group zouden de “nobody” accounts moeten tonen.

op deze manier hebben server en client de gebruikers niet nodig om dezelfde UID / GUID te delen.,

voor degenen die LDAP-gebaseerde authenticatie gebruiken, voeg de volgende regels toe aan de idmapd van uw client.conf:

Method = nsswitch

Dit zorgt ervoor dat idmapd weet dat er naar nsswitch moet worden gekeken.conf om te bepalen waar het moet zoeken naar informatie (en als LDAP authenticatie al werkt, moet nsswitch geen verdere uitleg nodig hebben).

om onze mappen naar een lokaal netwerk te exporteren 192.168.1.0 / 24 voegen we de volgende twee regels toe aan /etc/exports

portmap Lockdown

optioneel

voeg de volgende regel toe aan /etc/hosts.,weigeren:

rpcbind mountd nfsd statd lockd rquotad : ALL

door eerst alle clients te blokkeren, alleen clients in /etc/hosts.hieronder toestaan zal worden toegestaan om toegang te krijgen tot de server.

Voeg nu de volgende regel toe aan /etc/hosts.allow:

rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

waar de” list of IP addresses ” string is, moet u een lijst met IP-adressen maken die bestaat uit de server en alle clients. Dit moeten IP-adressen zijn vanwege een beperking in portmap (het houdt niet van hostnamen). Merk op dat als je NIS hebt ingesteld, voeg deze dan gewoon toe aan dezelfde regel.,

Opmerking: Zorg ervoor dat de lijst met geautoriseerde IP-adressen het localhost-adres (127.0.0.1) bevat, aangezien de opstartscripts in recente versies van Ubuntu de opdracht rpcinfo gebruiken om nfsv3-ondersteuning te ontdekken, en dit zal worden uitgeschakeld als localhost geen verbinding kan maken.,unt de volledige uitvoer boom met één commando:

We kunnen ook nog de geëxporteerde substructuur met:

  • # mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/users /home/users

om ons Te redden van het overtypen van deze na iedere herstart we de volgende regel toevoegen aan /etc/fstab:

  • <nfs-server-IP>:/ /mnt nfs auto 0 0

    Als na de montage van de ingang in /proc/mounts wordt weergegeven als <nfs-server-IP>:// (met twee slashes), dan moet je misschien geef twee slashes in /etc/fstab, of anders umount kunnen klagen dat het niet kunnen vinden van de berg.,

    de optie automatisch wordt aankoppeld bij opstarten. Dit zal echter niet werken als uw client een wifi-verbinding gebruikt die beheerd wordt op gebruikersniveau (na het inloggen), omdat het netwerk niet beschikbaar zal zijn tijdens het opstarten. In Ubuntu 12.04 LTS en hoger worden wifi-verbindingen standaard op systeemniveau beheerd, dus automatisch aankoppelen van NFS-shares tijdens het opstarten zou prima moeten werken.

Ubuntu-Server wordt niet geleverd met een init.d / netfs of andere scripts om dit voor je te doen.

portmap Lockdown

optioneel

voeg de volgende regel toe aan /etc/hosts.,weigeren:

rpcbind : ALL

door eerst alle clients te blokkeren, alleen clients in /etc/hosts.hieronder toestaan zal worden toegestaan om toegang te krijgen tot de server.

Voeg nu de volgende regel toe aan /etc/hosts.toestaan:

rpcbind : NFS server IP address

waarbij” NFS server IP address ” het IP-adres van de server is. Dit moet numeriek zijn! Zo werkt portmap.

NFS Server

Pre-installatie Setup

geen van de volgende pre-installatie stappen zijn strikt noodzakelijk.

gebruikersmachtigingen

NFS-gebruikersmachtigingen zijn gebaseerd op Gebruikers-ID (UID)., UID ‘ s van gebruikers op de client moeten overeenkomen met die op de server om de gebruikers toegang te geven. De typische manieren om dit te doen zijn:

  • handmatige synchronisatie van wachtwoordbestanden
  • gebruik van LDAP

  • gebruik van NIS

het is ook belangrijk om op te merken dat je voorzichtig moet zijn op systemen waar de hoofdgebruiker root – toegang heeft-dat de gebruiker UID ‘ s op het systeem kan wijzigen om zichzelf toegang te geven tot iemands bestanden. Deze pagina gaat ervan uit dat het beheerteam de enige groep is met root-toegang en dat ze allemaal vertrouwd zijn., Al het andere vertegenwoordigt een meer geavanceerde configuratie, en zal hier niet worden behandeld.

groepsmachtigingen

met NFS wordt de toegang van een gebruiker tot bestanden bepaald door zijn / haar lidmaatschap van groepen op de client, niet op de server. Er is echter een belangrijke beperking: Er worden maximaal 16 groepen doorgegeven van de client naar de server, en als een gebruiker lid is van meer dan 16 groepen op de client, kunnen sommige bestanden of mappen onverwacht ontoegankelijk zijn.

hostnamen

optioneel bij gebruik van DNS

voeg een clientnaam en IP-adressen toe aan /etc/hosts. De echte (niet 127.,0.0.1) het IP-adres van de server zou hier al moeten staan. Dit zorgt ervoor dat NFS nog steeds werkt, zelfs als DNS uitvalt. Je kunt vertrouwen op DNS als je wilt, het is aan jou.

nis

optioneel-voer alleen stappen uit bij gebruik van NIS

Opmerking: Dit werkt alleen bij gebruik van NIS. Anders kunt u geen netgroups gebruiken, en MOET u individuele IP ‘ s of hostnamen opgeven in /etc/exports. Lees de BUGS sectie in man netgroup.

Bewerk /etc / netgroup en voeg een regel toe om uw clients te classificeren. (Deze stap is niet nodig, maar is voor het gemak).,

myclients (client1,,) (client2,,)

Uiteraard kunnen meer clients worden toegevoegd. myclients kan alles zijn wat je wilt; dit is een netgroup naam.

voer dit commando uit om de YP-database opnieuw op te bouwen:

sudo make -C /var/yp

portmap Lockdown

optioneel

voeg de volgende regel toe aan /etc/hosts.weigeren:

rpcbind mountd nfsd statd lockd rquotad : ALL

door eerst alle clients te blokkeren, alleen clients in /etc/hosts.hieronder toestaan zal worden toegestaan om toegang te krijgen tot de server.

Voeg nu de volgende regel toe aan /etc/hosts.,allow:

rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

waar de” list of IP addresses ” string is, moet u een lijst met IP-adressen maken die bestaat uit de server en alle clients. Dit moeten IP-adressen zijn vanwege een beperking in portmap (het houdt niet van hostnamen). Merk op dat als je NIS hebt ingesteld, voeg deze dan gewoon toe aan dezelfde regel.,

installatie en configuratie

installeer NFS Server

sudo apt-get install rpcbind nfs-kernel-server

Shares

Bewerk /etc/exports en voeg de shares toe:

/home @myclients(rw,sync,no_subtree_check)/usr/local @myclients(rw,sync,no_subtree_check)

de bovenstaande shares /home en /usr/local aan alle clients in de myclients-netgroep.

de bovenstaande shares / home en/usr / local naar twee clients met vaste ip-adressen. Het beste alleen gebruikt met machines die statische ip-adressen hebben.

/home 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)/usr/local 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)

de bovenstaande shares /home en /usr/local voor alle clients in het particuliere netwerk die binnen het aangewezen ip-adresbereik vallen.,

rw maakt de share lezen / schrijven, en synchronisatie vereist dat de server alleen antwoordt op verzoeken als er wijzigingen zijn doorgespoeld naar de schijf. Dit is de veiligste optie (async is sneller, maar gevaarlijk. Het wordt sterk aanbevolen dat u leest Man export.

na het instellen van /etc/exports, exporteer de shares:

sudo exportfs -ra

u zult dit commando willen uitvoeren wanneer /etc/exports wordt gewijzigd.,

herstart Services

Als /etc/default/portmap is gewijzigd, moet portmap opnieuw worden gestart:

sudo service portmap restart

de NFS-kernelserver moet ook opnieuw worden gestart:

sudo service nfs-kernel-server restart

Beveiligingsnota

afgezien van de UID-problemen die hierboven zijn besproken, moet het opgemerkt dat een aanvaller zich zou kunnen voordoen als een machine die de Share in kaart mag brengen, waardoor ze willekeurige UID ‘ s kunnen maken om toegang te krijgen tot uw bestanden. Een mogelijke oplossing hiervoor is IPSec, zie ook de NFS en IPSec sectie hieronder., U kunt al uw domeinleden Instellen om alleen met elkaar te praten via IPSec, wat effectief zal verifiëren dat uw client is wie het zegt dat het is.

IPSec werkt door verkeer naar de server te versleutelen met de sleutel van de server, en de server stuurt alle antwoorden versleuteld terug met de sleutel van de client. Het verkeer wordt gedecodeerd met de respectieve sleutels. Als de client niet de sleutels heeft die de client zou moeten hebben, kan hij geen gegevens verzenden of ontvangen.

een alternatief voor IPSec zijn fysiek gescheiden netwerken., Dit vereist een aparte netwerkswitch en aparte ethernetkaarten, en fysieke beveiliging van dat netwerk.

NFS Client

installatie

sudo apt-get install rpcbind nfs-common

portmap Lockdown

optioneel

voeg de volgende regel toe aan /etc/hosts.weigeren:

rpcbind : ALL

door eerst alle clients te blokkeren, alleen clients in /etc/hosts.hieronder toestaan zal worden toegestaan om toegang te krijgen tot de server.

Voeg nu de volgende regel toe aan /etc/hosts.toestaan:

rpcbind : NFS server IP address

waarbij” NFS server IP address ” het IP-adres van de server is. Dit moet numeriek zijn!, Zo werkt portmap.

hostnamen

optioneel bij gebruik van DNS

voeg de servernaam toe aan /etc/hosts. Dit zorgt ervoor dat de NFS mounts nog steeds werken, zelfs als DNS uitvalt. Je kunt vertrouwen op DNS als je wilt, het is aan jou.

Mounts

Controleer of alles werkt

u moet het nu proberen te mounten., Het basissjabloon dat u gebruikt is:

sudo mount ServerIP:/folder/already/setup/to/be/shared /home/username/folder/in/your/local/computer

dus bijvoorbeeld:

sudo mount 192.168.1.42:/home/music /home/poningru/music

Mount bij het opstarten

NFS-koppelingen kunnen automatisch worden aangekoppeld wanneer ze worden geopend met behulp van autofs of kunnen worden ingesteld met statische koppelingen met behulp van items in /etc/fstab. Beide worden hieronder uitgelegd.

Automounter

Installeer autofs:

sudo apt-get install autofs

het volgende configuratievoorbeeld stelt persoonlijke mappen in om een NFS-server automatisch te koppelen bij het inloggen. Andere mappen kunnen worden ingesteld om te automount bij Toegang ook.,

voeg de volgende regel toe aan het einde van /etc/auto.master:

 /home /etc/auto.home

Maak nu /etc/auto aan.begin en voeg het volgende in:

 * solarisbox1.company.com.au,solarisbox2.company.com.au:/export/home/&

herstart autofs om de configuratie in te schakelen:

sudo service autofs start

statische Aankoppelingen

voordat u de aankoppelingen opzet, moet u ervoor zorgen dat de mappen die als aankoppelpunten fungeren al zijn aangemaakt.

in /etc/fstab, voeg regels toe voor shares zoals:

servername:dir /mntpoint nfs rw,hard,intr 0 0

De rw koppelt het lezen/schrijven., Het is duidelijk dat als de server het alleen-lezen deelt, de client het niet als iets meer dan dat kan mounten. De harde koppelt de share zodanig dat als de server niet beschikbaar is, het programma zal wachten totdat het beschikbaar is. Het alternatief is zacht. intr kunt u onderbreken / te doden het proces. Anders zal het je negeren. Documentatie hiervoor is te vinden in de Mount opties voor nfs sectie van man mount.

de bestandssystemen kunnen nu aangekoppeld worden met mount / mountpoint, of mount-a om alles te mounten dat aangekoppeld moet worden tijdens het opstarten.,

Notes

minimalistische NFS Set-Up

de bovenstaande stappen zijn zeer uitgebreid. Het minimum aantal stappen dat nodig is om NFS in te stellen, wordt hier weergegeven:

http://www.ubuntuforums.org/showthread.php?t=249889

gebruik van groepen met NFS-Shares

bij gebruik van groepen op NFS-shares (NFSv2 of NFSv3), houd er rekening mee dat dit mogelijk niet werkt als een gebruiker lid is van meer dan 16 groepen. Dit komt door beperkingen in het NFS protocol., Je kunt meer informatie vinden over Launchpad (“Permission denied when user belongs to group that own group writable or setgid directory ’s mounted via nfs”) en in dit artikel: “What’ s the deal on the 16 group id limitation in NFS?”

IPSec Notes

Als u IPSec gebruikt, zorgt de standaard afsluitvolgorde in Breezy / Dapper ervoor dat de client blijft hangen terwijl deze wordt afgesloten omdat IPSec wordt uitgeschakeld voordat NFS dat doet., Om het op te lossen, doe:

sudo update-rc.d -f setkey removesudo update-rc.d setkey start 37 0 6 S .

een bug is hier gearchiveerd: https://launchpad.net/distros/ubuntu/+source/ipsec-tools/+bug/37536

probleemoplossing

mounten van NFS-shares in versleutelde home zal niet werken tijdens het opstarten

het mounten van een NFS-share in een versleutelde home-map zal alleen werken nadat u succesvol bent ingelogd en uw home is ontcijferd. Dit betekent dat het gebruik van /etc/fstab om NFS shares te mounten tijdens het opstarten niet zal werken – omdat je huis niet is gedecodeerd op het moment van het mounten., Er is een eenvoudige manier om dit te omzeilen met behulp van symbolische koppelingen:

  • Maak een alternatieve map aan om de NFS-shares in te koppelen:
$ sudo mkdir /nfs$ sudo mkdir /nfs/music
  • Bewerk /etc/fstab om de NFS-share in die map te koppelen:

nfsServer:music /nfs/music NFS auto 0 0

  • Maak een symbolische link in uw home, wijzend naar de werkelijke koppellocatie (in ons geval verwijder de map ‘muziek’ die daar al bestaat):
$ rmdir /home/user/Music$ ln -s /nfs/music/ /home/user/Music