NFS

 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 使用他的家目錄啦!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章