TL;DR

en mycket kortare guide finns i Ubuntu Server Guide om du behöver mer info, läs nedan.

introduktion

NFS (Network File System) låter dig ”dela” en katalog som finns på en nätverksansluten dator med andra datorer / enheter i nätverket. Datorn där Katalogen finns kallas servern och datorer eller enheter som ansluter till den servern kallas klienter. Klienter brukar ”montera” den delade katalogen för att göra den till en del av sin egen katalogstruktur.,

NFS är perfekt för att skapa nas (nätverksansluten lagring) i Linux / Unix-miljö. Det är ett inbyggt Linux / Unix-protokoll i motsats till Samba som använder SMB-protokollet som utvecklats av Microsoft. Apple OS har bra stöd för NFS. Windows 7 har lite stöd för NFS.

NFS är kanske bäst för fler ”permanenta” nätverksmonterade kataloger som / hemkataloger eller regelbundet tillgängliga delade resurser. Om du vill ha en nätverksandel som gästanvändare enkelt kan ansluta till, är Samba mer lämpad., Detta beror på att verktyg finns lättare över gamla och proprietära operativsystem för att tillfälligt montera och lossa från Samba-aktier.

Ubuntu innan du distribuerar NFS bör du vara bekant med:

  • Linux-fil och katalogbehörigheter
  • montering och borttagning (avmontering) filsystem

detta HowTo gör Ubuntu server nfsv4 redo.

NFS quick start

Om du förstår vad du gör, Använd denna korta genomgång för att ställa in en nfsv4-server på Ubuntu (utan autentiseringssäkerhet). Montera sedan delningen på en Ubuntu-klient., Det har testats på Ubuntu 14.04.

NFS server

för att kontrollera att NFS-servern inte är installerad kan du göra det…

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

Installera de paket som krävs…

  • # apt-get install nfs-kernel-server

För enklare underhåll kommer vi att isolera alla NFS-export i en katalog, där de riktiga katalogerna kommer att monteras med –bind-alternativet.

  • låt oss säga att vi vill exportera våra användares hemkataloger i/hem / användare., Först skapar vi exportfilsystemet:

    # mkdir -p /export/users 

    det är viktigt att /export och /export/användare har 777 behörigheter eftersom vi kommer att komma åt NFS-delen från klienten utan LDAP/NIS-autentisering. Detta gäller inte om du använder autentisering (se nedan)., Montera nu den riktiga användarkatalogen med:

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

    för att rädda oss från att skriva om detta efter varje omstart lägger vi till följande

    linje till /etc/fstab

    /home/users /export/users none bind 0 0
  • det enda viktiga alternativet i /etc/default/NFS-kernel-server för nu är need_svcgssd. Den är inställd på ” Nej ” Som standard, vilket är bra, eftersom vi inte aktiverar nfsv4-säkerhet den här gången.

för att ID-namnen ska kunna mappas automatiskt kräver både klienten och servern/etc / idmapd.,conf-fil för att ha samma innehåll med rätt domännamn. Dessutom bör den här filen ha följande rader i avsnittet kartläggning:

  • Nobody-User = nobodyNobody-Group = nogroup

    klienten kan dock ha olika krav för Nobody-användaren och Nobody-gruppen. Till exempel på RedHat varianter är det nfsnobody för båda. cat / etc / passwd och cat / etc / group ska visa” nobody ” – kontona.

På så sätt behöver inte server och klient användarna dela samma UID / GUID.,

för dem som använder LDAP-baserad autentisering, Lägg till följande rader i klientens idmapd.conf:

Method = nsswitch

detta gör att idmapd vet att titta på nsswitch.conf för att avgöra var den ska leta efter autentiseringsuppgifter (och om du redan har LDAP-autentisering, bör nsswitch inte kräva ytterligare förklaring).

för att exportera våra kataloger till ett lokalt nätverk 192.168.1.0 /24 lägger vi till följande två rader till/etc/export

Portmap Lockdown

valfritt

Lägg till följande rad till/etc / värdar.,deny:

rpcbind mountd nfsd statd lockd rquotad : ALL

genom att blockera alla klienter först, endast klienter i/etc / värdar.Tillåt nedan kommer att tillåtas att komma åt servern.

lägg nu till följande rad till/etc / värdar.allow:

rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

där strängen ”lista över IP-adresser” är, måste du göra en lista över IP-adresser som består av servern och alla klienter. Dessa måste vara IP-adresser på grund av en begränsning i portmap (det gillar inte värdnamn). Observera att om du har Nis inställd, bara lägga till dessa till samma rad.,

Obs: se till att listan över auktoriserade IP-adresser inkluderar localhost-adressen (127.0.0.1) som startskripten i de senaste versionerna av Ubuntu använder rpcinfo-kommandot för att upptäcka nfsv3-stöd, och detta kommer att inaktiveras om localhost inte kan ansluta.,unt det kompletta exportträdet med ett kommando:

vi kan också montera en exporterad delträd med:

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

för att rädda oss från att skriva om detta efter varje omstart lägger vi till följande rad till /etc/fstab:

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

    om posten i /proc/mounts efter montering visas som <NFS-server-IP>:// (med två snedstreck), kan du behöva ange två snedstreck i /etc/fstab, annars kan umount klaga på att den inte kan hitta fästet.,

    det automatiska alternativet monteras vid start. Detta fungerar dock inte om din klient använder en wifi-anslutning som hanteras på användarnivå (efter inloggning), eftersom nätverket inte kommer att vara tillgängligt vid starttiden. I Ubuntu 12.04 LTS och senare hanteras wifi-anslutningar på systemnivå som standard, så automatisk montering av NFS-aktier vid starttid ska fungera bra.

Ubuntu Server kommer inte med någon init.d / netfs eller andra skript för att göra detta för dig.

Portmap Lockdown

valfritt

Lägg till följande rad till/etc / värdar.,deny:

rpcbind : ALL

genom att blockera alla klienter först, endast klienter i/etc / värdar.Tillåt nedan kommer att tillåtas att komma åt servern.

lägg nu till följande rad till/etc / värdar.Tillåt:

rpcbind : NFS server IP address

var ”NFS server IP-adress” är serverns IP-adress. Detta måste vara numeriskt! Det är så portmap fungerar.

NFS Server

Förinstallationsinstallation

inget av följande förinstallationssteg är absolut nödvändigt.

användarbehörigheter

NFS användarbehörigheter är baserade på användar-ID (uid)., UIDs för alla användare på klienten måste matcha dem på servern för att användarna ska ha tillgång. De typiska sätten att göra detta är:

  • Manuell lösenordsfilsynkronisering
  • användning av LDAP

  • användning av NIS

det är också viktigt att notera att du måste vara försiktig med system där huvudanvändaren har root – åtkomst-den användaren kan ändra UID: s på systemet för att tillåta sig tillgång till någons filer. Den här sidan förutsätter att det administrativa teamet är den enda gruppen med root-åtkomst och att de alla är betrodda., Allt annat representerar en mer avancerad konfiguration, och kommer inte att behandlas här.

gruppbehörigheter

med NFS bestäms användarens åtkomst till filer av hans/hennes medlemskap i grupper på klienten, inte på servern. Det finns dock en viktig begränsning: högst 16 grupper skickas från klienten till servern, och om en användare är medlem i mer än 16 grupper på klienten kan vissa filer eller kataloger vara oväntat otillgängliga.

värdnamn

valfritt om du använder DNS

Lägg till Klientnamn och IP-adresser till /etc/värdar. Den verkliga (inte 127.,0.0.1) IP-adressen för servern borde redan vara här. Detta säkerställer att NFS fortfarande fungerar även om DNS går ner. Du kan lita på DNS om du ville, det är upp till dig.

NIS

valfritt – utför bara steg om du använder NIS

Obs! Detta fungerar bara om du använder NIS. Annars kan du inte använda netgroups, och bör ange enskilda IP-eller värdnamn i / etc / export. Läs avsnittet buggar i man netgroup.

redigera/etc / netgroup och Lägg till en rad för att klassificera dina kunder. (Detta steg är inte nödvändigt, men är för enkelhetens skull).,

myclients (client1,,) (client2,,)

självklart kan fler klienter läggas till. myclients kan vara vad du vill; Detta är ett netgroup namn.

kör det här kommandot för att återskapa YP-databasen:

sudo make -C /var/yp

Portmap-låsning

valfritt

Lägg till följande rad till/etc / värdar.deny:

rpcbind mountd nfsd statd lockd rquotad : ALL

genom att blockera alla klienter först, endast klienter i/etc / värdar.Tillåt nedan kommer att tillåtas att komma åt servern.

lägg nu till följande rad till/etc / värdar.,allow:

rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

där strängen ”lista över IP-adresser” är, måste du göra en lista över IP-adresser som består av servern och alla klienter. Dessa måste vara IP-adresser på grund av en begränsning i portmap (det gillar inte värdnamn). Observera att om du har Nis inställd, bara lägga till dessa till samma rad.,

Installation och konfiguration

installera NFS Server

sudo apt-get install rpcbind nfs-kernel-server

aktier

redigera /etc/export och Lägg till aktierna:

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

ovanstående aktier /hem och /usr/lokal för alla kunder i myclients netgroup.

ovanstående aktier /hem och /usr/lokal till två kunder med fasta ip-adresser. Bäst används endast med maskiner som har statiska ip-adresser.

/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)

ovanstående aktier /hem och/usr / lokal till alla kunder i det privata nätverket som faller inom det angivna ip-adressintervallet.,

rw gör dela läsa / skriva, och synkronisering kräver att servern endast svara på förfrågningar när eventuella ändringar har spolats till disk. Detta är det säkraste alternativet (async är snabbare, men farligt. Det rekommenderas starkt att du läser man export.

Efter att ha konfigurerat/etc/Export, Exportera aktierna:

sudo exportfs -ra

du vill göra det här kommandot när/etc / export ändras.,

starta om tjänster

om /etc/default/portmap ändrades måste portmap startas om:

sudo service portmap restart

NFS-kärnservern kräver också en omstart:

Säkerhetsanteckning

bortsett från de UID-problem som diskuterats ovan bör det noteras att en angripare kan komma att starta om potentiellt maskerad som en maskin som får kartlägga aktien, vilket gör det möjligt för dem att skapa godtyckliga Uids för att komma åt dina filer. En potentiell lösning på detta är IPSec, se även avsnittet NFS och IPSec nedan., Du kan ställa in alla dina domänmedlemmar att prata bara med varandra över IPSec, som effektivt autentiserar att din klient är den som den säger att den är.

IPSec fungerar genom att kryptera trafik till servern med serverns nyckel, och servern skickar tillbaka alla svar krypterade med klientens nyckel. Trafiken dekrypteras med respektive nycklar. Om klienten inte har de nycklar som klienten ska ha kan den inte skicka eller ta emot data.

ett alternativ till IPSec är fysiskt separata nätverk., Detta kräver en separat nätverksomkopplare och separata ethernet-kort och fysisk säkerhet för det nätverket.

NFS Client

Installation

sudo apt-get install rpcbind nfs-common

Portmap Lockdown

valfritt

Lägg till följande rad till/etc / hosts.deny:

rpcbind : ALL

genom att blockera alla klienter först, endast klienter i/etc / värdar.Tillåt nedan kommer att tillåtas att komma åt servern.

lägg nu till följande rad till/etc / värdar.Tillåt:

rpcbind : NFS server IP address

var ”NFS server IP-adress” är serverns IP-adress. Detta måste vara numeriskt!, Det är så portmap fungerar.

värdnamn

valfritt om du använder DNS

Lägg till servernamnet till /etc/värdar. Detta säkerställer att NFS-fästen fortfarande fungerar även om DNS går ner. Du kan lita på DNS om du ville, det är upp till dig.

Fästen

kontrollera om allt fungerar

Du bör försöka montera det nu., Den grundläggande mallen du kommer att använda är:

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

så till exempel:

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

montera vid start

NFS fästen kan antingen monteras automatiskt när de nås med hjälp av autofs eller kan ställas in med statiska fästen med hjälp av poster i/etc / fstab. Båda förklaras nedan.

Automounter

Installera autofs:

sudo apt-get install autofs

följande konfigurationsexempel ställer in hemkataloger för att automatisera en NFS-server vid inloggning. Andra kataloger kan ställas in för att automatiskt vid åtkomst också.,

Lägg till följande rad i slutet av/etc / auto.master:

 /home /etc/auto.home

skapa nu/etc / auto.startsida och infoga följande:

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

Starta om autofs för att aktivera konfigurationen:

sudo service autofs start

statiska Fästen

innan du konfigurerar fästen, se till att katalogerna som fungerar som monteringspunkter redan har skapats.

i/etc / fstab, Lägg till rader för aktier som:

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

rw monterar det läsa / skriva., Självklart, om servern delar den skrivskyddad, kommer klienten inte att kunna montera den som något annat än det. Den hårda monterar andelen så att om servern blir otillgänglig väntar programmet tills det är tillgängligt. Alternativet är mjukt. intr låter dig avbryta / döda processen. Annars kommer det att ignorera dig. Dokumentation för dessa finns i monteringsalternativen för NFS-sektionen i man mount.

filsystemen kan nu monteras med mount / mountpoint eller mount-a för att montera allt som ska monteras vid uppstart.,

anmärkningar

minimalistiska NFS-Inställningar

stegen ovan är mycket omfattande. Det minsta antalet steg som krävs för att ställa in NFS listas här:

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

använda grupper med NFS-aktier

När du använder grupper på NFS-aktier (NFSv2 eller NFSv3), kom ihåg att detta kanske inte fungerar om en användare är medlem i mer än 16 grupper. Detta beror på begränsningar i NFS-protokollet., Du kan hitta mer information om Launchpad (”tillstånd nekas när användaren tillhör grupp som äger grupp skrivbara eller setgid kataloger monterade via nfs”) och i den här artikeln: ”Vad är affären på 16 grupp-ID begränsning i NFS?”

IPSec Notes

om du använder IPSec orsakar standardavstängningsordningen i Breezy/Dapper att klienten hänger som den stängs av eftersom IPSec går ner innan NFS gör det., För att åtgärda det, gör:

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

en bugg har lämnats in här:https://launchpad.net/distros/ubuntu/+source/ipsec-tools/+bug/37536

felsökning

montering av NFS-aktier i krypterat hem fungerar inte vid uppstart

montering av en NFS-andel i en krypterad hemkatalog fungerar bara efter att du har loggat in och ditt hem är dekrypterat. Det innebär att användning av/etc / fstab för att montera NFS-aktier vid uppstart inte fungerar – eftersom ditt hem inte har dekrypterats vid monteringstillfället., Det finns ett enkelt sätt runt detta med hjälp av symboliska länkar:

  • skapa en alternativ katalog för att montera NFS-aktierna i:
$ sudo mkdir /nfs$ sudo mkdir /nfs/music
  • redigera /etc/fstab för att montera NFS-aktien i den katalogen istället:

nfsserver:music /NFS/music NFS auto 0 0

  • skapa en symbolisk länk i ditt hem och peka på den faktiska monteringsplatsen (i vårt fall radera katalogen”musik”som redan finns där först):
$ rmdir /home/user/Music$ ln -s /nfs/music/ /home/user/Music