首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Linux NFS典型范例及权限详解

2012-08-02 
Linux NFS典型实例及权限详解1,首先对NFS服务作简单的配置,修改主配置文件,[root@localhost ~]# vim /etc/

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 底下具有存取的权限,并且写入的档案所有人为?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 使用他的家目录啦!

热点排行