Ero sivun ”NFS” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p
Lisätty Palvelin-malline
(taas omista kokemuksista) |
p (Lisätty Palvelin-malline) |
||
(38 välissä olevaa versiota 18 käyttäjän tekeminä ei näytetä) | |||
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. | |||
/etc/exports | == Palvelin == | ||
/varasto 192.168.0.0/255.255.255.0(rw | |||
/varasto -niminen paikallinen | === Palomuuri === | ||
NFS käyttää oletuksena porttia 2049, joten avaa kyseinen portti [[palomuuri]]sta komennoilla | |||
iptables -A INPUT -p tcp --dport 2049 --source $LOCALNET -j ACCEPT | |||
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 | |||
[[exportfs]] -rv | |||
Jaon parametrit saa näkyviin komennolla | |||
exportfs -v | |||
=== /etc/hosts.allow ja /etc/hosts.deny === | |||
/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: | |||
portmap: ip,ip2 | |||
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}} |