Zarejestruj się na BitBay.net
Home > Linux > Udostępnianie zasobów za pomocą NFS

Udostępnianie zasobów za pomocą NFS

NFS – Network File System (z ang. Sieciowy System Plików) umożliwia udostępnianie danych pomiędzy komputerami z systemami uniksowymi.

Zasada działania:

Serwer NFS eksportuje swój system plików (w części lub całości). Komputer klienta montuje zasoby eksportowane przez serwer NFS i korzysta z nich tak, jak z zasobów lokalnych.

Ograniczenia:

  • serwer może eksportować wyłącznie lokalne systemy plików
  • nazwane łącza (named pipes) i urządzenia są traktowane w sposób specjalny
  • eksportowania zasobów lokalnych i montowania zasobów zewnętrznych może dokonywać jedynie administrator systemu
  • aby zachować prawa dostępu do swoich plików w obrębie NFS użytkownik powinien mieć te same numery UID i GID na komputerach: serwera i klienta NFS.

Na serverze na którym chcemy coś udostępnić:

  1. Instalujemy potrzebne pakiety:
    yum install nfs-utils portmap
  2. Listę udostępnianych zasobów administrator umieszcza w pliku /etc/exports. Edytujemy go i dodajemy :
    /u01/backup 192.168.4.0/255.255.255.0(rw) 10.0.0.0/255.0.0.0(rw)
  3. Edytujemy /etc/hosts.allow i dodajemy
    portmap: 192.168.4.0/255.255.255.0, 10.0.0.0/255.0.0.0
  4. Uruchamiamy usługę
    /etc/init.d/nfs start
  5. Sprawdzamy poprawność wpisów w pliku /etc/exports:
    exportfs -v
  6. Aby sprawdzić czy wszystkie RPC-based services są włączone używamy komendy: rpcinfo -p Oczywiście odpowiednie porty muszą być odblokowane na firewallu.
    [root@vmware /]# rpcinfo -p
       program wer. proto   port
        100000    2   tcp    111  portmapper
        100000    2   udp    111  portmapper
        100024    1   udp    804  status
        100024    1   tcp    807  status
        100011    1   udp    713  rquotad
        100011    2   udp    713  rquotad
        100011    1   tcp    716  rquotad
        100011    2   tcp    716  rquotad
        100003    2   udp   2049  nfs
        100003    3   udp   2049  nfs
        100003    4   udp   2049  nfs
        100021    1   udp  60830  nlockmgr
        100021    3   udp  60830  nlockmgr
        100021    4   udp  60830  nlockmgr
        100003    2   tcp   2049  nfs
        100003    3   tcp   2049  nfs
        100003    4   tcp   2049  nfs
        100021    1   tcp  55394  nlockmgr
        100021    3   tcp  55394  nlockmgr
        100021    4   tcp  55394  nlockmgr
        100005    1   udp    727  mountd
        100005    1   tcp    730  mountd
        100005    2   udp    727  mountd
        100005    2   tcp    730  mountd
        100005    3   udp    727  mountd
        100005    3   tcp    730  mountd

Na serverze na którym chcemy podmontować udostępniony zasób:

  1. Instalujemy klienta NFS (nfs-common)
  2. Sprawdzamy co nam serwer udostępnia:
    showmount -e 192.168.4.7
  3. Edytujemy /etc/fstab i dodajemy:
    192.168.4.7:/u01/backup /mnt/vmware-wiel nfs rw,hard,intr 0 0
  4. Montujemy zasób:
    mount /mnt/vmware-wiel
  5. Lub ręczne montowanie bez /etc/fstab:
    mount 192.168.4.7:/u01/backup /mnt/vmware-wiel

Uwagi:

Przy montowaniu zasobu NFS możemy określić:

  • rodzaju montowania (z prawem zapisu lub bez)
  • zablokowanie bitu suid
  • montowanie “twarde” (hard) lub “miękkie” (soft). W przypadku montowania “miękkiego” w przypadku utraty łączności system po kilku próbach zasygnalizuje błąd, przy montowaniu “twardym” – będzie próbował nawiązać łączność aż do skutku.

Przyporządkowywanie identyfikatora UID:
Demon nfsd opiera swą kontrolę dostępu plików serwera na identyfikatorach uid i gid przesyłanych z każdym żądaniem NFS. Standardowym zachowaniem, jakiego można się spodziewać jest dostęp do własnych plików, tak jak byłyby one umieszczone na lokalnym systemie plików. Wymaga to użycia tych samych identyfikatorów użytkownika (uid) i grupy (gid) zarówno na serwerze, jak i na kliencie. Warunek ten nie jest zawsze spełniony, a czasami wręcz niepożądany.

Bardzo często jest niepożądane, by uzyskując dostęp do plików umieszczonych na serwerze administrator na komputerze kliencie był traktowany tak samo, jak gdyby był administratorem serwera. W tym celu identyfikator uid 0 pochodzący z żądań NFS jest zamieniony przez serwer na inny identyfikator, tzw. anonymous (anonimowy) lub nobody (nikt). Ten tryb pracy (zwany ‘root squashing’) jest zachowaniem domyślnym serwera, i może być wyłączony za pomocą opcji no_root_squash.

Domyślnie demon nfsd podczas uruchamiania próbuje pobrać identyfikatory uid i gid anonimowego użytkownika sprawdzając czy istnieje użytkownik nobody w pliku /etc/passwd. Jeśli taki użytkownik nie istnieje anonimowym identyfikatorom uid i guid jest nadawana wartosc -2 (65534). Wartości te mogą zostać zmienione za pomocą opcji anonuidanongid.

Dodatkowo demon nfsd pozwala na określenie dowolnych identyfikatorów uid i guid jakie powinny zostać nadane anonimowemu użytkwnikowi (nobody). Ostatecznie można zmieniać wszystkie żądania na żądania pochodzące od anonimowego użytkownika przez podanie opcji all_squash.

Serwer nfsd udostępnia również możliwość dynamicznej zamiany identyfikatorów uid i gid servera na identyfikatory klienta i na odwrót. Włączane jest to za pomocą opcji map_daemon, zaś w tym celu wykorzystywany jest protokół UGID RPC. Dlatego, aby to przekodowanie pracowało poprawnie wymagane jest uruchomienie na komputerze kliencie demona ugidd(8) .

Poniżej kompletna lista opcji zamiany identyfikatorów:

  • root_squash
    Zamień żądania z identyfikatorami uid/gid 0 na żądania pochodzące od anonimowych identyfikatorów uid/gid. Należy zwrócić uwagę, że nie dotyczy to żadnych innych identyfikatorów, które mogłyby być podobnie wrażliwe np. użytkownik bin.
  • no_root_squash
    Wyłącz ‘root squashing’. Ta opcja jest użyteczna przede wszystkim w odniesieniu do bezdyskowych klientów.
  • squash_uidssquash_gids
    Te opcje określają listę identyfikatorów uid i gid, które powinny podlegać zamianie na identyfikatory anonimowe. Poprawna lista identyfikatorów może wyglądać następująco:
  • squash_uids=0-15,20,25-50
    Zwykle wygląda to trochę prościej:  squash_uids=0-100
  • all_squash
    Zamień wszystkie identyfikatory uid i gid na identyfikatory anomimowego użytkownika. Pożyteczne w przypadku publicznie dostępnych katalogów FTP, news itp. Opcją o przeciwnym znaczeniu jest no_all_squash, która obowiązuje domyślnie.
  • map_daemon
    Ta opcja włącza dynamiczną zamianę identyfikatorów uid/gid. Każdy identyfikator w żądaniu NFS będzie zamieniony na odpowiedni identyfikator obowiązujący na serwerze i każdy identyfikator w odpowiedzi NFS będzie zamieniany w przeciwną stronę. Ta opcja wymaga uruchomienia na komputerze kliencie demona rpc.ugidd(8). Ustawieniem domyślnym jest map_identity, pozostawiające wszystkie identyfikatory bez zmian. Zwykłe opcje zamiany (squash options) mają zastosowanie niezależnie od zastosowania zamiany dynamicznej.
  • anonuidanongid
    Te opcje pozwalają na jawne nadanie identyfikatorom uid i gid użytkownika anonimowego dowolnych wartości. Są szczególnie użyteczne dla klientów PC/NFS, kiedy często chcemy aby wszystkie żądania pochodzące z klientów PC/NFS były traktowane tak, jak gdyby pochodziły od jednego użytkownika. Rozważmy podany poniżej przykład dla katalogu /home/joe, który zamienia wszyskie żądania tak, jak gdyby pochodziły od użytkownika o identyfikatorze 150 (prawdopodobnie identyfikator użytkownika joe).
Kategorie:Linux Tagi:
  1. MirekQ
    Czerwiec 14th, 2015 at 16:09 | #1

    Trudno było znaleźć ten post w google, strona ciekawa, zasługuje na większy ruch. SEO w 2015 stało się skomplikowane, jest coś co ci się napewno przyda, poszukaj sobie w google – niezbędnik dla każdego webmastera

  1. Listopad 18th, 2010 at 18:59 | #1

*