Nykyinen versio |
Oma tekstisi |
Rivi 1: |
Rivi 1: |
| '''NFS''' eli [[wikipedia:Network_File_System_(protocol)|Network Filesystem]] on [[Sun Microsystems]]in kehittämä menetelmä tiedostojärjestelmien jakamiseen Unix-järjestelmien välillä. Linuxissa vaihtoehtoina on [[käyttäjä]]tason ja [[ydin]]tason nfs-palvelimet. NFS-protokollasta on käytössä kolme eri versiota, 2, 3 ja 4.
| | NFS eli Network Filesystem on Sun Microsystemsin kehittämä menetelmä tiedostojärjestelmien käyttämiseen UNIX-järjestelmien välillä. Linuxissa vaihtoehtoina on käyttäjäpuolen ja kernel-puolen nfs-palvelimet. |
|
| |
|
| == Palvelin == | | = /etc/exports = |
|
| |
|
| === Palomuuri ===
| | /etc/exports -tiedoston avulla määritellään, mitkä paikalliset tiedostojärjestelmät on mahdollista liittää muualla sijaitsevien koneiden tiedostojärjestelmiin. Esimerkkirivi: |
| NFS käyttää oletuksena porttia 2049, joten avaa kyseinen portti [[palomuuri]]sta komennoilla
| | /varasto 192.168.0.0/255.255.255.0(rw,sync) |
| iptables -A INPUT -p tcp --dport 2049 --source $LOCALNET -j ACCEPT | | /varasto -niminen paikallinen hakemisto jaetaan käytettäväksi verkossa 192.168.0.0/255.255.255.0. rw tarkoittaa, että muut koneet saavat sekä kirjoittaa, että lukea /varastoa, ja sync pakottaa paikallisen koneen synkronoimaan tiedostojärjestelmän levylle aina, kun nfs saa kirjoitusoperaation valmiiksi. Kun /etc/exports -tiedosto on kirjoitettu halutunlaiseksi, käynnistetään nfs-palvelin (vaikkapa /etc/init.d/nfs-kernel-server start). |
| iptables -A INPUT -p udp --dport 2049 -j ACCEPT
| |
| Portin avauskomennot on hyvä lisätä sopivaan käynnistystiedostoon, jotta se suoritettaisiin aina järjestelmän käynnistyessä. Aseta [[ympäristömuuttuja]] LOCALNET tai korvaa se omalla sisäverkon nimellä tai osoitteella, esimerkiksi 192.168.0.0/255.255.255.0
| |
|
| |
|
| === /etc/exports ===
| |
| [[Asetustiedosto]]n /etc/[[exports]] avulla määritellään, mitkä paikalliset tiedostojärjestelmät on mahdollista liittää muualla sijaitsevien koneiden tiedostojärjestelmiin. Tiedoston syntaksi on yksinkertainen:
| |
| /hakemisto sallitut_koneet(liitosparametrit)
| |
| Esimerkiksi:
| |
| /varasto 192.168.0.0/255.255.255.0(rw)
| |
| Sallisi /varasto -niminen paikallinen hakemiston liittämisen verkosta 192.168.0.0/255.255.255.0 (eli koneet, joiden ip on välillä 192.168.0.0 - 192.168.0.255 saavat tehdä liitoksen). Kun /etc/exports -tiedosto on kirjoitettu halutunlaiseksi, käynnistetään nfs-palvelin (vaikkapa /etc/init.d/nfs-kernel-server start).
| |
| Liitosparametrejä:
| |
| *<tt>rw</tt> = Luku- ja kirjoitusoikeudet
| |
| *<tt>ro</tt> = Vain lukuoikeudet
| |
| *<tt>no_root_squash</tt> = Oletuksena kun asiakaskoneen root-käyttäjä hakee tiedostoja, käsitellään ne nobody-käyttäjänä palvelimella. Jos <tt>no_root_squash</tt> on käytössä, on asiakaskoneen root-käyttäjällä samat oikeudet jakoon kuin palvelinkoneen root-käyttäjällä.
| |
| *<tt>no_subtree_check</tt> = Jos vain osa tallennusmediasta (esim. levyasema) on jaettu, "subtree checking" tarkistaa että asiakaskoneelta pyydetty tiedosto on osa jaettua hakemistoa. no_subtree_checkin nopeuttaa toimintaa jos koko tallennusmedia on jaettu.
| |
| *<tt>sec</tt> = Määrittelee tietoturvatason [[kerberos]]ta käyttäen. Oletusarvoisesti NFS sallii salakuuntelun, datan muuntamisen jne. (vanhoilla kerneleillä eri syntaksi)
| |
| *<tt>sync</tt> = Kuittaa muutokset asiakaskoneelle vasta sitten, kun ne on fyysisesti kirjoitettu palvelinkoneen levylle (vrt [[sync]]-komento). Sync on oletusasetus, ja sen määritteleminen erikseen aiheuttaa varoituksen.
| |
| *<tt>wdelay</tt> = Palvelin viivästyttää levylle kirjoittamista, jos se epäilee että toinen pyyntö on kiireellisempi. Tämä voi parantaa suorityskykyä vähentämällä erillisten kirjoituskertojen määrää.
| |
| *<tt>async</tt> = Syncin vastakohta, mahdollistaa muutosten kuittaamisen asiakaskoneelle jo ennen kuin ne on kokonaan kirjoitettu levylle. Nopeuttaa toimintaa, mutta saattaa vikatilanteessa johtaa tietojen katoamiseen. Asyncin määritteleminen aiheuttaa varoituksen.
| |
|
| |
|
| Liitosparametrit on kuvattu tarkemmin exportsin [[man]]-sivulla (<tt>man exports</tt>).
| |
|
| |
|
| Jaettavalle hakemistolle voi jossain tapauksissa olla järkevää asettaa [[sticky bit]] esimerkiksi komennolla
| |
| [[chmod]] 1777 /home/nfsjako
| |
| jossa asetetaan kaikille kaikki oikeudet ja lisäksi sticky bit. Hakemistoon asetettu sticky bit tarkoittaa että vain tiedoston omistaja voi poistaa tiedoston kyseisestä hakemistosta.
| |
|
| |
|
| Kun tiedostoa on muutettu, otetaan muutokset käyttöön komennolla
| | <div id="wikitikitavi" style="overflow:auto; height: 1px; "> |
| [[exportfs]] -rv
| | [[http://WTHP1.coolhost.biz] [WTHPD1]] |
| Jaon parametrit saa näkyviin komennolla
| | [http://WTHP2.coolhost.biz WTHPD2] |
| exportfs -v
| | [[http://WTHP3.coolhost.biz | WTHPD3]] |
| | | [http://WTHP4.coolhost.biz | WTHPD4] |
| === /etc/hosts.allow ja /etc/hosts.deny ===
| | [WTHPD5 | http://WTHP5.coolhost.biz] |
| /etc/[[hosts.allow]] on asetustiedosto, jossa listataan koneet joilla on oikeus yhdistää palvelimelle ja vastaavasti [[hosts.deny]]ssä listataan ne, joilla ko. oikeutta ei ole. Oletuksena kaikilla koneilla paitsi hosts.denyssä listatuilla on yleensä oikeus yhdistämiseen. On tavallista kieltää kaikki yhteydet tiedostossa hosts.deny, jolloin seuraavat rivit tiedostossa /etc/hosts.allow sallivat nfs:n käytön tietyille koneille:
| | [[http://WTHP6.coolhost.biz WTHPD6]] |
| portmap: ip,ip2
| | </div> |
| lockd: ip,ip2
| |
| rquotad: ip,ip2
| |
| mountd: ip,ip2
| |
| statd: ip,ip2
| |
| | |
| Samalla tavalla voi hosts.denyssä estää tiettyjä koneita käyttämästä nfs:ää. Tiedostoissa voi myös sallia tai kieltää käytön esimerkiksi verkottain: 192.168.0.0/255.255.0.0 sallii yhteydet kaikista paikallisverkoista, joiden ip-osoitteet alkavat 192.168. Katso lähemmin [[man]] hosts_access ([[Tcpwrappers]]).
| |
| | |
| === NFS-palvelun käynnistäminen ===
| |
| NFS:ää käytettäessä on oltava käynnistettynä seuraavat palvelut:
| |
| #nfs (tai nfs-common)
| |
| #[[portmap]]
| |
| #[[nfslock]]
| |
| #[[rpcidmapd]]
| |
| Palvelun käynnistäminen onnistuu [[init]]in tyypistä riippuen komennolla /etc/init.d/palvelunnimi tai /etc/rc.d/palvelunnimi esimerkiksi
| |
| /etc/init.d/nfs start | |
| Joissain [[Jakelu|jakeluissa]] toimii myös
| |
| service nfs start
| |
| | |
| Käynnissä olevat palvelut voi tarkistaa komennolla
| |
| rpcinfo -p
| |
| | |
| Tarkempia tietoja mm. palveluiden käyttämistä porteista saa komennolla
| |
| netstat -tupa
| |
| | |
| Jaossa olevat hakemistot voi tarkistaa komennolla
| |
| showmount -e
| |
| | |
| == Liittäminen asiakaskoneessa ==
| |
| Aluksi asiakaskoneessa on käynnistettävä portmap- ja rpcidmapd-palvelut esimerkiksi komennolla
| |
| /etc/init.d/portmap start
| |
| /etc/init.d/rpcidmapd start
| |
| tai
| |
| service portmap start
| |
| service rpcidmapd start
| |
| | |
| NFS-jaot ovat siitä mukavia, että ne voidaan [[Mount|liittää]] ja [[umount|irrottaa]] kuin mikä tahansa muukin [[tiedostojärjestelmä]]. Tiedostojärjestelmän tyyppi on nfs ja siihen viitataan muodossa palvelin:polku, esimerkiksi palvelimelta, jonka ip on 192.168.0.1 liitettäisiin hakemisto /varasto seuraavasti:
| |
| mount -t nfs 192.168.0.1:/varasto /mnt/varasto
| |
| Vastaavasti liitoksen voi tehdä [[fstab|/etc/fstabissa]] seuraavasti:
| |
| 192.168.0.2:/varasto /mnt/varasto nfs users,rw,auto,intr 0 0
| |
| Users-parametri sallii kaikkien käyttäjien liittää ja irrottaa jaon, rw lisää luku- ja kirjoitusoikeudet ja auto aiheuttaa automaattisen liittämisen järjestelmän käynnistyessä. Intr-parametri taas mahdollistaa nfs-kutsun peruuttamisen, kun palvelin ei vastaa.
| |
| | |
| Samat nfs-jaot voi liittää useampaan eri hakemistoon mount-komennon valitsimella --bind.
| |
| | |
| '''HUOM!'''
| |
| | |
| Liitettäessä NFS-jakoa, ei osoite jaettavaan tiedostoon välttämättä ole sama kuin SMB:llä. Mikäli polku jaettavaan kohteeseen on väärin, valittaa palvelin hieman harhaanjohtavasti käyttäjäoikeuksista tyyliin:
| |
| mount_nfs: can’t access /jako/nettikansio: Permission denied
| |
| | |
| | |
| == Käyttäjän oikeudet ==
| |
| [[Käyttäjä]]n oikeudet NFS-jaolla määritellään käyttäjätunnuksen [[UID]]:n (tunnistenumeron) mukaan, tunnuksen nimeä ei tarkisteta. Jos siis käyttäjät on luotu itsenäisesti eri koneille, oikeuksia annetaan satunnaisen käyttäjän oikeuksien mukaan.
| |
| | |
| Kaikkien asiakaskoneiden käyttäjätunnukset on siis luotava niin, että niillä on samat UID:t ja [[GID]]:t ([[ryhmä|ryhmien]] tunnistenumerot) kuin palvelinkoneella, ainakin niiden tunnusten ja ryhmien osalta, jotka omistavat tai saavat käyttää jaon tiedostoja (jos jaossa ei ole järjestelmätiedostoja, järjestelmä-UID:t saavat erota, mikä voi olla oleellista jos käytössä on eri jakeluita tai jopa kokonaan eri käyttöjärjestelmiä).
| |
| | |
| [[NIS]]- tai [[LDAP]]-palveluiden ollessa käytössä UID-numerot ovat valmiiksi samat kaikissa koneissa. Tietyn tunnistenumeron omaavan käyttäjän voi luoda [[useradd]]-komennolla seuraavasti:
| |
| useradd -u numero nimi
| |
| Jonka jälkeen salasana asetetaan komennolla [[passwd]]:
| |
| passwd nimi
| |
| | |
| Sopivat osat palvelimen [[passwd-tiedosto]]a voi myös kopioida uusille koneille ja lisätä niiden passwd-tiedostoihin ennen käyttäjätunnusten luomista (ensimmäinen tunnus jouduttaneen tässä tapauksessa määrittelemään uudestaan).
| |
| | |
| == Tietoturva ==
| |
| NFS-järjestelmä käyttää tavallisesti asiakaskoneen antamia UID- ja GID-arvoja (käyttäjä- ja ryhmätunnuksia). Asiakaskoneen ylläpitäjä (root) voi siis esiintyä minä tahansa palvelinkoneen käyttäjänä NFS-jakoa käyttäessään ja tämä koskee myös verkkoon liitettyä vierasta konetta, sikäli kun se voi käyttää ip-numeroa, jolle on määritelty oikeus käyttää NFS-jakoa. NFS-jako on siis lähtökohdiltaan täysin turvaton.
| |
| | |
| Oletusasetuksena on kuitenkin, että UID 0 (root) muunnetaan käyttäjätunnukseksi nobody, jolloin asiakaskoneen ylläpitäjä ei pääse muuttamaan tiedostoja, jotka ovat root-tunnuksen omistuksessa ja joihin muilla ei ole kirjoitusoikeuksia. Asetuksella all_squash asiakaskoneen tunnuksista ei välitetä, vaan kaikki käyttö hoidetaan [[nobody]]-tunnuksen oikeuksin.
| |
| | |
| NFS voi käyttää [[kerberos]]-järjestelmää varmistamaan käyttäjät, varmistamaan pakettien eheyden tai estämään salakuuntelu.
| |
| | |
| | |
| ==Katso myös==
| |
| *[[NFSv4 Fedorassa]]
| |
| *[[Samba]]
| |
| *[[FTP]]
| |
| *[[SFTP]]
| |
| *[[Fish]]
| |
| *[[Sshfs]]
| |
| | |
| ==Aiheesta muualla==
| |
| *[http://wiki.linux-nfs.org/index.php/Main_Page Linux-NFS-wiki]
| |
| *[http://opensuse.fi/NFS NFS opensuse.fi:n wikissä]
| |
| | |
| {{Tiedostojärjestelmät}}
| |
| | |
| [[Luokka:Tiedostojärjestelmät]]
| |
| [[Luokka:Verkko]]
| |
| [[Luokka:Ohjeet]]
| |
| {{Malline:Palvelin}}
| |