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