日期:2014-05-16  浏览次数:20549 次

Linux 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 底下具有存取的权限,并且写入的档