1,首先對nfs服務作簡單的配置,修改主配置檔案,
[root@localhost ~]# vim /etc/exports
/tmp *(rw,no_root_squash,sync)
/public 192.168.0.0/24(rw,sync) *(ro,sync)
/test 192.168.0.100(rw,sync)
/linux *.feifan.com(rw,all_squash,anonuid=40,anongid=40,sync)
2,不要忘了建立目錄哦,并做權限修改
[root@localhost ~]# mkdir /public
[root@localhost ~]# mkdir /test
[root@localhost ~]# mkdir /linux
[root@localhost ~]# chmod 757 /public/
[root@localhost ~]# chmod 757 /test/
[root@localhost ~]# chmod 757 /linux/
好了,現在可以啟動了,
[root@localhost ~]# service portmap start
[root@localhost ~]# service nfs start
如果不放心是否真的啟動了,可以查詢一下
[root@localhost ~]# netstat -tulnp
tcp 0 0 0.0.0.0:2049 0.0.0.0:* listen
tcp 0 0 0.0.0.0:111 0.0.0.0:* listen
[root@localhost ~]# rpcinfo -p localhost
程式 版本 協定 端口
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 783 status
100024 1 tcp 786 status
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100021 1 udp 1026 nlockmgr
100021 3 udp 1026 nlockmgr
100021 4 udp 1026 nlockmgr
100021 1 tcp 3953 nlockmgr
100021 3 tcp 3953 nlockmgr
100021 4 tcp 3953 nlockmgr
100011 1 udp 622 rquotad
100011 2 udp 622 rquotad
100011 1 tcp 625 rquotad
100011 2 tcp 625 rquotad
100005 1 udp 626 mountd
100005 1 tcp 629 mountd
100005 2 udp 626 mountd
100005 2 tcp 629 mountd
100005 3 udp 626 mountd
100005 3 tcp 629 mountd
這裡還可以連線觀察
[root@localhost ~]# showmount -e localhost
[root@localhost ~]# tail /var/lib/nfs/etab
重新挂載設定内容
[root@localhost ~]# exportfs -arv
為了安全,不要忘記設定防火牆哦
[root@localhost ~]# iptables -a input -i eth0 -p tcp -s 192.168.0.0/24 --dport 111 -j accept
[root@localhost ~]# iptables -a input -i eth0 -p udp -s 192.168.0.0/24 --dport 111 -j accept
也可以使用tcp wrappers來限制
[root@localhost ~]# vim /etc/hosts.allow
mountd: 192.168.0.0/255.255.255.0
mountd: 192.168.1.0/255.255.255.0
[root@localhost ~]# vim /etc/hosts.deny
mountd: all
3,client的使用
[root@localhost ~]# showmount -e 192.168.0.2 (nfs ip)
[root@localhost ~]# mount -t nfs 192.168.0.2:/public/ /public
如果是開機就挂載了,就必須修改配置檔案
[root@localhost ~]# vim /etc/fstab
192.168.0.2:/public /public nfs nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 0 0
這裡我要說的是,還有一種更好的挂載方法,可以讓client要使用nfs共享的目錄資料時,才去挂載它,當隔了5分鐘沒有使用的時候,就主動的解除安裝它, 要注意的是,那些 /home/nfs/public 是不需要事先建立的。
[root@localhost ~]# vim /etc/auto.master
/home/nfs /etc/auto.nfs --timeout=60
[root@localhost ~]# mkdir /home/nfs
[root@localhost ~]# vim /etc/auto.nfs
public -rw,bg,soft,rsize=32768,wrise=32768 192.168.0.2:/public
testing -rw,bg,soft,rsize=32768,wrise=32768 192.168.0.2:/test
temp -rw,bg,soft,rsize=32768,wrise=32768 192.168.0.2:/tmp
[root@localhost ~]# /etc/init.d/autofs restart
[root@localhost ~]# cd /home/nfs/public
[root@localhost public]#
竟然進來了,是不是很奇怪啊呵呵
4,執行個體示範完了,下面詳細分析檔案權限
情況一:client 端與 server 端具有相同的 uid 與帳号
假設我在 192.168.0.100 登入 nfs server (ip 假設為 192.168.0.2) 主機,并且192.168.0.100 的帳号為 tom 這個身份,同時,在這部 nfs 上面也有 tom 這個帳号,并具有相同的 uid,那麼,
①. 由于 192.168.0.2 這部 nfs 主機的 /tmp 權限為 -rwxrwxrwt ,是以 192.168.0.100 上面的使用者在 nfs 的/tmp 底下具有存取的權限,并且寫入的檔案所有人為 tom ;
②. 在 /public 當中,由于我有讀寫的權限,是以如果在 /public 這個目錄的權限對于 tom 有開放寫入的話,那麼我就可以讀寫,并且我寫入的檔案所有人是 tom,但是如果 /public 對于 tom 這個使用者并沒有開放可以寫入的權限時, 那麼我還是沒有辦法寫入檔案,這點請特别注意!
③. 在 /test 當中,我的權限與 /public 相同,但是還需要 nfs 主機的 /test 對于tom 有讀寫限;
④. 在 /linux 當中,由于使用者身份一定都會被變成 uid=40 這個帳号,是以,這個目錄就必需要針對 uid = 40 的那個帳号名稱,修改他的權限才行。
情況二:client 端與 server 端的帳号不同
假如我在 192.168.0.100 的身份為 tom ,但是 192.168.0.2 這部 nfs 主機卻沒有 tom 這個帳号時,情況會變成怎樣呢?
①. 我在 /tmp 底下還是可以寫入,但是寫入的檔案所有人變成 nobody 了;
②. 我在 /public 裡面是否可以寫入,還需要視 /public 的權限而定,不過,我的身份被變成 nobody ;
③. /test 與 /public 相同;
④. /linux 底下,我的身份被變成 uid = 40 那個使用者。
情況三:client 端的身份為 root
假如我在 192.168.0.100 的身份為 root,權限變成怎樣
①. 我在 /tmp 裡面可以寫入,并且由于 no_root_squash 的參數,改變了預設的 root_squash 設定值,是以在 /tmp 寫入的檔案所有者為 root ;
②. 我在 /public 底下的身份還是被壓縮成為 nobody ,因為預設屬性裡面都具有 root_squash ,是以,如果 /public 有針對 nobody 開放寫入權限時,那麼我就可以寫入,但是檔案所有人變成 nobody ;
③. /test 與 /home/public 相同;
④. /linux 的情況中,root 的身份也被壓縮成為 uid = 40 的那個使用者。
在我講解執行個體以及權限之後,您應該了解了很多,如果這一關通過了,那麼你的 nfs 服務掌握的非常好了,在這裡還希望大家提出寶貴意見,給我留言,我的qq: 303247761
有興趣的朋友可以做這樣一個執行個體:
假設環境∶
1. 假設我的 linux 主機為 192.168.0.100 這一部;
2. 預計将 /tmp 以可讀寫,并且不限制使用者身份的方式分享給所有 192.168.0.0/24 這個網域中的所有 linux 工作站;
3. 預計開放 /home/nfs 這個目錄,使用的屬性為唯讀,可提供除了網域内的工作站外,向外亦提供資料内容;
4. 預計開放 /home/upload 做為 192.168.0.0/24 這個網域的資料上傳目錄,其中,這個 /home/upload 的使用者及所屬群組為 nfs-upload 這個名字,他的 uid 與 gid 均為 210;
5. 預計将 /home/andy 這個目錄僅分享給 192.168.0.50 這部 linux 主機,以提供該主機上面 andy 這個使用者來使用,也就是說, andy 在 192.168.0.50 及 192.168.0.100 均有帳号,且帳号均為 andy ,是以預計開放 /home/andy 給 andy 使用他的家目錄啦!