NFS Network FileSystem ²١A̦eO Sun oaqҵoiXӪALتNOQPBP@~tΥiHɭӧOɮװաIثeb Unix Like ΨӰ file server O۷@Ӥ׳IWA Unix Like Dst@ Unix Like DӤɩɮɡAϥ NFS n SAMBA ֳtBKhFI~A NFS ]wu²AXGunOoҰ Remote Procedure Call oөNN ( NO portmap oӮMաI ) N@wiH[]_ӡIuOڡILApGnF Windows P Linux qA٬OH SAMBA eڡILצpA NFS ٬OiHpqξǮճ줺 Unix Like @ file @ Server I |
DG
аݧڪDOH RPM Mz Linux distribution AҦp Red Hat, Mandrake P OpenLinux AڭnpDڪḒO_wgwˤF portmap P nfs MOH G ²檺ϥ rpm -qa | grep nfs P rpm -qa | grep portmap YiDաI |
[root@test
root]# vi /etc/exports
/tmp *(rw,no_root_squash) |
[root@test
root]# vi /etc/exports
/tmp@@@@@*(rw,no_root_squash) /home/public@192.168.0.*(rw)@@ *(ro) /home/public@192.168.0.0/24(rw)@*(ro) |
[root@test
root]# vi /etc/exports
/tmp@@@@@*(rw,no_root_squash) /home/public@192.168.0.*(rw)@@ *(ro) /home/test@@192.168.0.100(rw) |
[root@test
root]# vi /etc/exports
/tmp@@@@@*(rw,no_root_squash) /home/public@192.168.0.*(rw)@@ *(ro) /home/test@@192.168.0.100(rw) /home/linux@ *.linux.org(rw,all_squash,anonuid=40,anongid=40) |
[root@test
root]# vi /etc/exports
/tmp@@@@@*(rw,no_root_squash) /home/public@192.168.0.*(rw)@@ *(ro) /home/test@@192.168.0.100(rw) /home/linux@ *.linux.org(rw,all_squash,anonuid=40,anongid=40) |
[root@test
root]# /etc/rc.d/init.d/portmap start<==Ұ
portmap I
[root@test root]# /etc/rc.d/init.d/nfs start@@ <==Ұ NFS |
[root@test
root]# vi /var/log/messages
Nov 16 15:04:45 test portmap: portmap startup succeeded Nov 16 15:04:53 test nfs: Starting NFS services: succeeded Nov 16 15:04:54 test nfs: rpc.rquotad startup succeeded Nov 16 15:04:54 test nfs: rpc.mountd startup succeeded Nov 16 15:04:54 test nfs: rpc.nfsd startup succeeded |
ykG
[root@test root]# exportfs [-aruv] ѼƻG -a G(Ψ) /etc/exports ɮפ]w -r Gs /etc/exports ̭]wA~APBs /etc/exports @@ /var/lib/nfs/xtab eI -u GY@ؿ -v Gb export ɭԡANɪؿܨùWI dҡG [root@test root]# exportfs -rv <==s export @I exporting 192.168.0.100:/home/test exporting 192.168.0.*:/home/public exporting *.linux.org:/home/linux exporting *:/home/public exporting *:/tmp reexporting 192.168.0.100:/home/test to kernel [root@test root]# exportfs -au <==FI |
[root@test
root]# vi /var/lib/nfs/xtab
/home/test 192.168.0.100(rw,sync,wdelay,hide,secure,root_squash, no_all_squash,subtree_check,secure_locks,mapping=identity,anonuid=-2, anongid=-2) |
ykG
[root@test root]# showmount [-ae] hostname -a GbùWܥثeDP Client ҳsWӪϥΥؿA -e G hostname o /etc/exports ̭ɥؿI dҡG [root@test root]# showmount -e localhost Export list for localhost: /tmp * /home/linux *.linux.org /home/public (everyone) /home/test 192.168.0.100 |
[root@test
root]# netstat -utln
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN <==Ӧ portmap tcp 0 0 0.0.0.0:817 0.0.0.0:* LISTEN <==Ӧ rpc.xxxx tcp 0 0 0.0.0.0:1266 0.0.0.0:* LISTEN <==Ӧ rpc.xxxx udp 0 0 0.0.0.0:2049 0.0.0.0:*@@@@@@@@@@@<==NO nfs port udp 0 0 0.0.0.0:814 0.0.0.0:*@@@@@@@@@@@<==Ӧ rpc.xxxx udp 0 0 0.0.0.0:1327 0.0.0.0:*@@@@@@@@@@@<==Ӧ rpc.xxxx udp 0 0 0.0.0.0:111 0.0.0.0:*@@@@@@@@@@@<==Ӧ portmap |
ykG
[root@test root]# rpcinfo [-p] hostname(orIP) -p GܩҦ port P program TI dҡG [root@test root]# rpcinfo -p test.linux.org program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100011 1 udp 1014 rquotad 100011 2 udp 1014 rquotad 100011 1 tcp 1017 rquotad 100011 2 tcp 1017 rquotad 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100021 1 udp 1339 nlockmgr 100021 3 udp 1339 nlockmgr 100021 4 udp 1339 nlockmgr 100005 1 udp 1340 mountd 100005 1 tcp 1271 mountd 100005 2 udp 1340 mountd 100005 2 tcp 1271 mountd 100005 3 udp 1340 mountd 100005 3 tcp 1271 mountd |
OKաIҥHڭ̱oD@Uڭ̪ḒH]ڪDW٬O test.linux.org AڭnDYǤǥ NFS ɥXӪؿANL showmount @UoI
@@
[root@test root]# showmount -e test.linux.org
Export list for localhost:
/tmp *
/home/linux *.linux.org
/home/public (everyone)
/home/test 192.168.0.100
MOH]ڭnN /home/public bڪ /home/nfs/public UAڴNooӥؿ~rIMAQ mount oӫOӱ /home/public oӥؿIIoˡG
@@
[root@test root]# mkdir -p /home/nfs/public <==إ public oӥؿA[ -p iHW[ؿ
[root@test root]# mount -t nfs test.linux.org:/home/public /home/nfs/public
榡G
[root@test root]# mount -t nfs hostname(orIP):/directory /mount/point
[root@test root]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 1904920 1235380 572776 69% /
/dev/hdb1 976344 115212 810736 13% /backup
test.linux.org:/home/public
1904920 1235376 572776 69% /home/nfs/public <==oӬOݥDeq
`N@U NFS ɮת榡dҳIIo˴NiHNƱiӰաIЪ`NIHAunziJzؿ /home/nfs/public NF test.linux.org ݥD /home/public ӥؿoIܤaIpN NFS ؿOHNϥ umount ڡI
@@
[root@test root]# umount /home/nfs/public
ioͪDG
q`Lk]UoXӡG
- ϥΪ̪vGHWҤlӻAڪ /home/test uണ 192.168.0.0/24 oӺAҥHApGڦb test.linux.org oAH localhost ӱɡAN|LkWAovSDaIziHոլݡG
ҥHoIpGzo{WܪTɡANܱzDviJӥؿoIpGTwz IP S~AЦ^ /etc/exports oɮפAwzۤv IP ӶiץaI
[root @test root]# mount -t nfs localhost:/home/test /home/nfs
mount: localhost:/home/test failed, reason given by server: Permission denied
@- ѰOҰ portmap G
oӳ̮eQѰOFINOѰOFҰ portmap oӪAȰաIpGzo{z mount TOoˡGΪ̬OG
[root@test root]# mount -t nfs localhost:/home/test /home/nfs
mount: RPC: Port mapper failure - RPC: Unable to receiveNN portmap ҰʧaIIåB]ݭnN nfs sҰʳI
[root@test root]# mount -t nfs localhost:/home/test /home/nfs
mount: RPC: Program not registered@
[root@test root]# /etc/rc.d/init.d/portmap start
[root@test root]# /etc/rc.d/init.d/nfs restart- QױFG
oӤ]ܮeѰOFINOs]w@UzAo]tFⳡA]A iptables P TCP_Wrappers I]ڭ̱ҰʤF portmap AoӪF観ӸƻݭnɥXӡA@ӬO port 111 ݭnѥXhA]z iptables WhAݭn}o port IIo˪Xrn[Jz iptables rules GpGzwg}Fo port svAo٬OLks\AӴNO TCP_Wrappers DFIˬd@Uz /etc/hosts.deny YO_oG
iptables -A INPUT -p TCP --dport 111 -j ACCEPT
iptables -A INPUT -p UDP --dport 111 -j ACCEPTGupܡAѩ portmap O portmap o daemon ұҰʪAҥHzNnb /etc/hosts.allow ̭[Jo@G
[root@test root]# vi /etc/hosts.deny
ALL: ALLΪ̬ON ALL 令zҷQnLϥ NFS YiIo˻iHAѤFܡHYQi@BAѤ@UAаѦҫe`LG²ظmC
[root@test root]# vi /etc/hosts.allow
portmap: ALL
ݭn`NOAѩ NFS ϥΪo RPC b client ݳsWDɡAzDQnAiN|yiȡzIpGz Server W٦ Client bsuAznAionƭY~`\IӡIuI۫HܡHMzۭӨոլݡI ^_^IҥHoAijz NFS Server QneAy portmap P nfs zoӪFIpGLkTNo daemons AH netstat -utlp X PID AMH kill NLIoˤ~k`\IoӽЯSOSO`NOI
nFI@Ǫ`NƶFAAөOHFISO̭nw]w譱DFI NFS iH]wwa観̩OH٤֩OHѥ~ӤiHoˬݡG𪺰аѦҡy²ظmz@A̦nNӽg峹LݧA_hٯuAѩUbFI]zwgݧӽguFAۤUӧڭ̴Non@B@B۫إߨoI
- iptables ]wF
- TCP_Wrappers ]wF
- /etc/exports v]wC
- ϥ iptables jdsuG
]ڭ̪ NFS DnOw鷺}ӤwAӹ~udzN}AYO 140.0.0.0/8 AziHϥγo˪ykGoˤjPWNiH 192.168.0.0/24 o C Class P 140.0.0.0/8 o A Class zḒӡAӨLsuNz쥻 iptables AөwI
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
@- ϥ TCP_Wrappers ӪdG
ƹWApGzop]w iptables ܡA]SYAڭ̥iHϥ TCP_Wrappers I]nϥ NFS NnqL portmap o@( ]nϥ RPC աI )Aӳo portmap iHǥ TCP_Wrappers ӺzIIӦnFINNLsudpoIڭ̥iHb /etc/hosts.allow ̭WwsW NFS DD IP PW١A]Du 192.168.0.0/24 o C class 140.116.44.125 oӥDAHΫ᭱O ncku.edu.tw iHsWڪ NFS DAڥiHgoˡGIo˥iN]wnoI²檺aI
[root@test root]# vi /etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0
portmap: 140.116.44.125
portmap: .ncku.edu.tw[root@test root]# vi /etc/hosts.deny
portmap: ALL
@- ϥ /etc/exports ]wwvG
oNoAzҤFI]wSYAObyKQzPywzAnzIoI root_squash all_squash \AAQ anonuid ]wӳWdnJzDϥΪ̨I٬OkѤ@Ӹw NFS DIq`ڭ̳|ijAnҰ NFS Server AYϭnҰʡA̦n]OwYӽdӶiؿɡIåBAynϥΪ̼hŨӺzz|n@dzIUڭ̴NӹڪbzWd@²檺 NFS server aI
- Client ݱDG
WAb Client ݱɭԡAF߷|p߭ NFS ݱiӪ㦳 SUID vɮת{Ioӫܥi|M`tΪwOI] SUID ӴNOܦwIҥHOAzo root ]iHN NFS ҤɪؿHwpiӡIҦpGnosuid ]O@ӫܤܳI
[root@test root]# mount -t nfs -o nosuid,ro hostname:/directory /mount/point
]ҡGatmG
- ]ڪ Linux D 192.168.0.100 o@F
- wpN /tmp HiŪgAåBϥΪ̨觋ɵҦ 192.168.0.0/24 oӺ줤Ҧ Linux u@F
- wp} /home/nfs oӥؿAϥΪݩʬŪAiѰF줺u@~AV~紣ѸƤeF
- wp} /home/upload 192.168.0.0/24 oӺ쪺ƤWǥؿA𫟺Ao /home/upload ϥΪ̤Ωݸsլ nfs-upload oӦWrAL UID P GID 210F
- wpN /home/andy oӥؿȤɵ 192.168.0.50 o Linux DAHѸӥDW andy oӨϥΪ̨ӨϥΡA]NOA andy b 192.168.0.50 192.168.0.100 bABb andy AҥHwp} /home/andy andy ϥΥLaؿաI
nFAбznݩUסAۤvʵΪ̪bۤvWʤ@@ݡAoznפAbݩUaIӨBJjPWNOo˧oI[oI
- ANOnإ /etc/exports oɮתeoAziHo˼gaI
jNOoˤlaIziHۦլݬݡI
[root @test root]# vi /etc/exports
/tmp@@@@@192.168.0.*(rw,no_root_squash)
/home/nfs@ @192.168.0.*(ro) *(ro,all_squash)
/home/upload@192.168.0.*(rw,all_squash,anonuid=210,anongid=210)
/home/andy@@192.168.0.50(rw)
@- AӡANOnإߨCӹؿ Linux vFIڭ̤@Ӥ@ӨӬݡG
oˤl@ӡAvDjNiHѨMoI
1. /tmp
[root @test root]# ll /
drwxrwxrwt 6 root root 4096 Nov 16 09:07 tmp2. /home/nfs
[root @test root]# mkdir -p /home/nfs <==إߩһݭnؿ
[root @test root]# chmod 755 -R /home/nfs <==קY檺ɮv
NؿPɮ׳]wŪIgJAA|OI@II3. /home/upload
[root @test root]# groupadd -g 210 nfs-upload <==إߩһݭn 210 oӸs
[root @test root]# useradd -g 210 -u 210 -M nfs-upload <==إݭnϥΪ̦W
[root @test root]# mkdir -p /home/upload <==إ߰_ؿFI
[root @test root]# chown -R nfs-upload:nfs-upload /home/upload <==ק̡֦I
pAhϥΪ̻Pؿv]woI4. /home/andy
[root @test root]# ll /home
drwx------ 3 andy andy 4096 Oct 28 13:37 andy
@- Ұ portmap P nfs AȡG
@
[root @test root]# /etc/rc.d/init.d/portmap start
[root @test root]# /etc/rc.d/init.d/nfs start- b 192.168.0.50 oWtm@UG
1. T{iΥؿ
[andy @linux50 andy]$ showmount -e 192.168.0.100
Export list for 192.168.0.100:
/tmp 192.168.0.*
/home/nfs (everyone)
/home/upload 192.168.0.*
/home/andy 192.168.0.502. إ߱IG
[andy @linux50 andy]$ mkdir -p /home/zzz/tmp
[andy @linux50 andy]$ mkdir -p /home/zzz/nfs
[andy @linux50 andy]$ mkdir -p /home/zzz/upload
[andy @linux50 andy]$ mkdir -p /home/zzz/andy3. ڱG
[andy @linux50 andy]$ su <==q` Linux u\ root ӱI
[root @linux50 andy]# mount -t nfs 192.168.0.100:/tmp /home/zzz/tmp
[root @linux50 andy]# mount -t nfs 192.168.0.100:/home/nfs /home/zzz/nfs
[root @linux50 andy]# mount -t nfs 192.168.0.100:/home/upload /home/zzz/upload
[root @linux50 andy]# mount -t nfs 192.168.0.100:/home/andy /home/zzz/andy
[root @linux50 andy]# exit
b LPI http://www.lpi.org ̭쪺A NFS ҸDwaAub LPI level 1 102 A̭ topic 113 Networking Services Aĥ|IA² NFS ]wCjժOyժ̻A NFS ]wBҰʻPYzܩ|ҪɮPOioǡG
- /etc/exports
- /etc/fstab
- mount
- umount