TL;DR

znacznie krótszy przewodnik jest dostępny w Ubuntu Server Guide jeśli potrzebujesz więcej informacji, przeczytaj poniżej.

wprowadzenie

NFS (Network File System) pozwala na „współdzielenie” katalogu znajdującego się na jednym komputerze sieciowym z innymi komputerami / urządzeniami w tej sieci. Komputer, na którym znajduje się Katalog, nazywany jest serwerem, a komputery lub urządzenia łączące się z tym serwerem nazywane są klientami. Klienci zazwyczaj „montują” udostępniony katalog, aby stał się częścią ich własnej struktury katalogów.,

NFS jest idealny do tworzenia NAS (Network Attached Storage) w środowisku Linux/Unix. Jest to natywny protokół Linux / Unix w przeciwieństwie do Samby, który używa protokołu SMB opracowanego przez Microsoft. Apple OS ma dobre wsparcie dla NFS. Windows 7 ma pewne wsparcie dla NFS.

NFS jest prawdopodobnie najlepszy dla bardziej 'stałych' katalogów montowanych w sieci, takich jak katalogi / home lub regularnie dostępne współdzielone zasoby. Jeśli chcesz mieć udział sieciowy, z którym użytkownicy mogą się łatwo połączyć, Samba jest bardziej odpowiedni., Dzieje się tak dlatego, że narzędzia istnieją łatwiej we starych i zastrzeżonych systemach operacyjnych, aby tymczasowo montować i odłączać akcje Samby.

Ubuntu przed wdrożeniem NFS powinieneś znać:

  • uprawnienia do plików i katalogów Linuksa
  • montowanie i odłączanie (odmontowywanie) systemów plików

To HowTo sprawia, że Ubuntu server nfsv4 jest gotowy.

NFS quick start

Jeśli rozumiesz, co robisz, użyj tego krótkiego spaceru, aby skonfigurować serwer NFSv4 na Ubuntu (bez zabezpieczeń uwierzytelniania). Następnie zamontuj udział na kliencie Ubuntu., Został przetestowany na Ubuntu 14.04.

serwer NFS

aby sprawdzić, czy serwer NFS nie jest zainstalowany, możesz to zrobić…

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

Zainstaluj wymagane pakiety…

  • # apt-get install nfs-kernel-server

dla łatwiejszej konserwacji wyizolujemy wszystkie eksporty NFS w jednym katalogu, gdzie prawdziwe katalogi będą montowane z opcją –bind.

  • powiedzmy, że chcemy wyeksportować katalogi domowe naszych użytkowników w/home / users., Najpierw tworzymy system plików export:

    # mkdir -p /export/users 

    ważne jest, aby użytkownicy /export i /export/mieli uprawnienia 777, ponieważ będziemy mieli dostęp do udziału NFS od klienta bez uwierzytelniania LDAP/NIS. Nie będzie to miało zastosowania w przypadku korzystania z uwierzytelniania(patrz poniżej)., Teraz zamontuj prawdziwy katalog użytkowników z:

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

    aby uratować nas przed ponownym wpisaniem tego po każdym ponownym uruchomieniu dodajemy następującą

    linię do /etc/fstab

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

  • jedyną ważną opcją w /etc/default/NFS-kernel-Server na razie jest need_svcgssd. Domyślnie ustawiona jest na „no”, co jest w porządku, ponieważ tym razem nie aktywujemy zabezpieczeń NFSv4.

aby nazwy ID były automatycznie mapowane, zarówno klient, jak i serwer wymagają /etc/idmapd.,plik conf ma taką samą zawartość z poprawnymi nazwami domen. Co więcej, Plik ten powinien mieć następujące wiersze w sekcji mapowania:

  • Nobody-User = nobodyNobody-Group = nogroup

    jednak klient może mieć inne wymagania dla Nobody-User i Nobody-Group. Na przykład w wariantach Redhata jest to nfsnobody dla obu. cat / etc / passwd i cat/etc / group powinny pokazywać konta „nikt”.

w ten sposób serwer i klient nie potrzebują użytkowników do współdzielenia tego samego UID / GUID.,

dla tych, którzy używają uwierzytelniania opartego na LDAP, dodaj następujące linie do idmapd klienta.conf:

Method = nsswitch

spowoduje to, że idmapd będzie wiedział, jak patrzeć na nsswitch.conf w celu ustalenia, gdzie powinien szukać informacji poświadczeniowych (a jeśli uwierzytelnianie LDAP już działa, nsswitch nie powinien wymagać dalszych wyjaśnień).

aby wyeksportować nasze katalogi do sieci lokalnej 192.168.1.0/24 dodajemy następujące dwie linie do /etc/exports

portmap Lockdown

opcjonalnie

dodajemy następującą linię do /etc/hosts.,deny:

rpcbind mountd nfsd statd lockd rquotad : ALL

blokując najpierw wszystkich klientów, tylko klientów w /etc/hosts.Zezwalaj poniżej będzie można uzyskać dostęp do serwera.

teraz dodaj następujący wiersz do/etc / hosts.pozwól:

rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

gdzie znajduje się ciąg „lista adresów IP”, musisz utworzyć listę adresów IP, która składa się z serwera i wszystkich klientów. Muszą to być adresy IP z powodu ograniczenia w portmap (nie lubi nazw hostów). Zauważ, że jeśli masz skonfigurowaną sieć NIS, po prostu dodaj je do tej samej linii.,

Uwaga: Upewnij się, że lista autoryzowanych adresów IP zawiera adres localhost (127.0.0.1), ponieważ skrypty startowe w najnowszych wersjach Ubuntu używają polecenia rpcinfo do wykrywania obsługi NFSv3, a opcja ta zostanie wyłączona, jeśli localhost nie będzie mógł się połączyć.,rozwiń pełne drzewo eksportu za pomocą jednego polecenia:

możemy również zamontować eksportowany subtree za pomocą:

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

aby uratować nas przed ponownym wpisaniem tego po każdym ponownym uruchomieniu dodajemy następującą linię do /etc/fstab:

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

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

    Jeśli po zamontowaniu wpis w/proc/mounts pojawi się jako < NFS-server-ip >: //(z dwoma ukośnikami), może być konieczne podanie dwóch ukośniki w / etc / fstab, w przeciwnym razie umount może narzekać, że nie może znaleźć montowania.,

    opcja auto montuje się przy starcie. Nie będzie to jednak działać, jeśli Klient korzysta z połączenia Wi-Fi zarządzanego na poziomie użytkownika( po zalogowaniu), ponieważ sieć nie będzie dostępna w czasie rozruchu. W Ubuntu 12.04 LTS i nowszych, połączenia wifi są domyślnie zarządzane na poziomie systemu, więc automatyczne montowanie udziałów NFS w czasie rozruchu powinno działać dobrze.

    Ubuntu Server nie ma żadnego init.d / netfs lub Inne skrypty, aby to zrobić za Ciebie.

    Blokada Portmap

    opcjonalnie

    dodaj następującą linię do /etc/hosts.,deny:

    rpcbind : ALL

    blokując najpierw wszystkich klientów, tylko klientów w /etc / hosts.Zezwalaj poniżej będzie można uzyskać dostęp do serwera.

    teraz dodaj następujący wiersz do/etc / hosts.pozwól:

    rpcbind : NFS server IP address

    gdzie „adres IP serwera NFS” jest adresem IP serwera. To musi być cyfra! Tak działa portmap.

    NFS Server

    Konfiguracja Przedinstalacyjna

    żadna z poniższych czynności przedinstalacyjnych nie jest bezwzględnie konieczna.

    Uprawnienia użytkowników

    uprawnienia użytkowników NFS są oparte na identyfikatorze użytkownika (UID)., Adresy UID Użytkowników Klienta muszą być zgodne z tymi na serwerze, aby użytkownicy mieli dostęp. Typowe sposoby to:

    • Ręczna synchronizacja plików haseł
    • Korzystanie z LDAP

    • Korzystanie z NIS

    ważne jest również, aby pamiętać, że musisz być ostrożny na systemach, w których główny użytkownik ma dostęp do roota – ten użytkownik może zmienić identyfikatory UID w systemie, aby umożliwić sobie dostęp do dowolnych plików. Ta strona zakłada, że zespół administracyjny jest jedyną grupą z dostępem do roota i że wszyscy są zaufani., Wszystko inne reprezentuje bardziej zaawansowaną konfigurację i nie będzie tutaj omawiane.

    uprawnienia Grupowe

    w systemie NFS dostęp Użytkownika do plików zależy od jego przynależności do grup na kliencie, a nie na serwerze. Istnieje jednak ważne ograniczenie: maksymalnie 16 grup jest przekazywanych z Klienta do serwera, a jeśli użytkownik jest członkiem więcej niż 16 grup na kliencie, niektóre pliki lub katalogi mogą być nieoczekiwanie niedostępne.

    nazwy hostów

    opcjonalne, jeśli używasz DNS

    Dodaj dowolną nazwę klienta i adresy IP do /etc/hosts. The real (nie 127.,0.0.1) adres IP serwera powinien już być tutaj. Zapewnia to, że NFS nadal będzie działał, nawet jeśli DNS przestanie działać. Możesz polegać na DNS, jeśli chcesz, to zależy od Ciebie.

    NIS

    opcjonalne – wykonywanie kroków tylko przy użyciu NIS

    uwaga: to działa tylko przy użyciu NIS. W przeciwnym razie nie można używać netgroups i należy określić poszczególne IP lub nazwy hostów w pliku / etc / exports. Przeczytaj sekcję błędy w Man netgroup.

    Edytuj/etc / netgroup i dodaj linię do klasyfikacji klientów. (Ten krok nie jest konieczny, ale jest dla wygody).,

    myclients (client1,,) (client2,,)

    oczywiście można dodać więcej klientów. myclienty mogą być dowolne; jest to nazwa netgroup.

    Uruchom to polecenie, aby odbudować bazę danych YP:

    sudo make -C /var/yp

    Blokada Portmapy

    opcjonalne

    dodaj następującą linię do/etc / hosts.deny:

    rpcbind mountd nfsd statd lockd rquotad : ALL

    blokując najpierw wszystkich klientów, tylko klientów w /etc/hosts.Zezwalaj poniżej będzie można uzyskać dostęp do serwera.

    teraz dodaj następujący wiersz do/etc / hosts.,pozwól:

    rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

    gdzie znajduje się ciąg „lista adresów IP”, musisz utworzyć listę adresów IP, która składa się z serwera i wszystkich klientów. Muszą to być adresy IP z powodu ograniczenia w portmap (nie lubi nazw hostów). Zauważ, że jeśli masz skonfigurowaną sieć NIS, po prostu dodaj je do tej samej linii.,

    instalacja i konfiguracja

    Zainstaluj serwer NFS

    sudo apt-get install rpcbind nfs-kernel-server

    akcje

    Edytuj /etc/exports i dodaj akcje:

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

    powyższe akcje /home I /usr/local dla wszystkich klientów w netgroup myclients.

    powyższe akcje /home I/usr / local do dwóch klientów ze stałymi adresami ip. Najlepiej używać tylko z maszynami, które mają statyczne adresy ip.

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

    powyższe akcje /home I/usr / local dla wszystkich klientów w sieci prywatnej mieszczących się w wyznaczonym zakresie adresów ip.,

    RW sprawia, że udostępnienie jest odczytywane / zapisywane, a synchronizacja wymaga, aby serwer odpowiadał na żądania tylko wtedy, gdy zmiany zostaną spłukane na dysk. Jest to najbezpieczniejsza opcja (async jest szybsza, ale niebezpieczna. Zdecydowanie zaleca się przeczytanie man exports.

    Po skonfigurowaniu/etc/exports, wyeksportuj akcje:

    sudo exportfs -ra

    będziesz chciał wykonać to polecenie przy każdej zmianie/etc / exports.,

    restart Services

    Jeśli zmieniono /etc/default/portmap, trzeba będzie ponownie uruchomić portmap:

    sudo service portmap restart

    serwer jądra NFS będzie również wymagał restartu:

    sudo service nfs-kernel-server restart

    Uwaga bezpieczeństwa

    oprócz identyfikatora UID kwestie omówione powyżej, należy zauważyć, że atakujący może potencjalnie maskarada jako maszyna, która może mapować udział, co pozwala im tworzyć dowolne UID, aby uzyskać dostęp do plików. Jednym z potencjalnych rozwiązań jest IPSec, patrz także sekcja NFS i IPSec poniżej., Możesz skonfigurować wszystkich członków domeny, aby rozmawiali tylko ze sobą przez IPSec, co skutecznie uwierzytelni, że twój Klient jest tym, za kogo się podaje.

    IPSec działa poprzez szyfrowanie ruchu do serwera za pomocą klucza serwera, a serwer odsyła wszystkie odpowiedzi zaszyfrowane kluczem klienta. Ruch jest odszyfrowany odpowiednimi kluczami. Jeśli klient nie ma kluczy, które powinien mieć, nie może wysyłać ani odbierać danych.

    alternatywą dla IPSec są fizycznie oddzielne sieci., Wymaga to osobnego przełącznika sieciowego i osobnych kart ethernet oraz fizycznego bezpieczeństwa tej sieci.

    Klient NFS

    instalacja

    sudo apt-get install rpcbind nfs-common

    Blokada Portmapy

    opcjonalne

    dodaj następującą linię do /etc/hosts.deny:

    rpcbind : ALL

    blokując najpierw wszystkich klientów, tylko klientów w /etc / hosts.Zezwalaj poniżej będzie można uzyskać dostęp do serwera.

    teraz dodaj następujący wiersz do/etc / hosts.pozwól:

    rpcbind : NFS server IP address

    gdzie „adres IP serwera NFS” jest adresem IP serwera. To musi być cyfra!, Tak działa portmap.

    nazwy hostów

    opcjonalne, jeśli używasz DNS

    Dodaj nazwę serwera do /etc/hosts. Zapewnia to, że montowania NFS będą nadal działać, nawet jeśli DNS ulegnie awarii. Możesz polegać na DNS, jeśli chcesz, to zależy od Ciebie.

    montuje

    sprawdź, czy wszystko działa

    powinieneś spróbować zamontować go teraz., Podstawowy szablon, którego użyjesz, to:

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

    tak więc na przykład:

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

    montowanie przy starcie

    montowanie NFS może być automatycznie montowane przy użyciu autofs lub może być ustawione przy użyciu montowania statycznego przy użyciu wpisów w/etc / fstab. Oba są wyjaśnione poniżej.

    Automounter

    Install autofs:

    sudo apt-get install autofs

    poniższy przykład konfiguracji ustawia katalogi domowe do automatycznego montowania na serwerze NFS po zalogowaniu. Inne katalogi mogą być skonfigurowane do automatycznego montowania po dostępie, jak również.,

    Dodaj następujący wiersz na końcu/etc / auto.master:

     /home /etc/auto.home

    teraz Utwórz /etc/auto.home i włóż następujące elementy:

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

    Uruchom ponownie autofs, aby włączyć konfigurację:

    sudo service autofs start

    montowania statyczne

    przed skonfigurowaniem montowań upewnij się, że katalogi, które będą działać jako punkty montowania, są już utworzone.

    w /etc/fstab Dodaj wiersze dla akcji takich jak:

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

    RW montuje go do odczytu/zapisu., Oczywiście, jeśli serwer udostępnia go tylko do odczytu, klient nie będzie mógł go zamontować jako coś więcej niż to. Dysk montuje udział w taki sposób, że jeśli serwer stanie się niedostępny, program będzie czekał, aż będzie dostępny. Alternatywa jest miękka. intr pozwala na przerwanie / zabicie procesu. Inaczej Cię zignoruje. Dokumentacja dla nich znajduje się w sekcji Mount options for nfs w Man mount.

    systemy plików mogą być teraz montowane za pomocą mount / mountpoint lub mount-a, aby zamontować wszystko, co powinno być zamontowane podczas rozruchu.,

    uwagi

    minimalistyczna Konfiguracja NFS

    powyższe kroki są bardzo wyczerpujące. Minimalna liczba kroków wymaganych do skonfigurowania NFS jest wymieniona tutaj:

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

    używanie grup z udziałami NFS

    podczas korzystania z grup na akcjach NFS (NFSv2 lub NFSv3), należy pamiętać, że może to nie działać, jeśli użytkownik jest członkiem więcej niż 16 grup. Wynika to z ograniczeń w protokole NFS., Więcej informacji na temat Launchpad („Odmowa uprawnień, gdy użytkownik należy do grupy, która posiada katalogi group writable lub setgid montowane przez nfs”) oraz w tym artykule: „Jak wygląda sprawa ograniczenia 16 identyfikatorów grup w NFS?”

    IPsec Notes

    Jeśli używasz IPSec, domyślna kolejność zamykania w Breezy / Dapper powoduje zawieszenie klienta, ponieważ jest on wyłączany, ponieważ IPSec wyłącza się przed NFS., Aby to naprawić, wykonaj następujące czynności:

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

    zgłoszono błąd: https://launchpad.net/distros/ubuntu/+source/ipsec-tools/+bug/37536

    Rozwiązywanie problemów

    montowanie udziałów NFS w zaszyfrowanym katalogu domowym nie będzie działać podczas rozruchu

    montowanie udziału NFS w zaszyfrowanym katalogu domowym będzie działać tylko po pomyślnym zalogowaniu się i dom jest odszyfrowany. Oznacza to, że użycie /etc/fstab do montowania udziałów NFS podczas rozruchu nie zadziała – ponieważ twój dom nie został odszyfrowany w czasie montowania., Jest prosty sposób na obejście tego za pomocą dowiązań symbolicznych:

    • Utwórz alternatywny katalog, aby zamontować udziały NFS w:
    $ sudo mkdir /nfs$ sudo mkdir /nfs/music
    • Edytuj /etc/fstab, aby zamontować udział NFS do tego katalogu:

    nfsserver:music /NFS/music NFS auto 0 0

    • Utwórz dowiązanie symboliczne wewnątrz domu, wskazując na rzeczywistą lokalizację montowania (w naszym przypadku usuń katalog 'Music' już tam istniejący):
    $ rmdir /home/user/Music$ ln -s /nfs/music/ /home/user/Music