您的位置:首页 > 理论基础 > 计算机网络

内网快速共享之---网络文件系统NFS

2012-03-30 16:48 337 查看
简介:

NFS:network file systerm,即网络文件系统

网络文件系统是FreeBSD支持的文件系统的一种,NFS允许一个系统在网络上与他人共享目录和文件。

NFS 有属于自己的协议与使用的端口号,但是在数据传送或者其它相关讯息传递的时候, NFS 使用的则是一个称为远程过程调用( Remote Procedure Call, RPC )的协议来协助 NFS 本身的运作!

NFS于RPC之间的关系可以简单的理解为:NFS主要在管理分享出来的目录,而至于资料的传递,就直接将其交送给RPC协议去运作了。

RPC服务:监听在TCP/UDP协议的111号端口

NFS协议具有很多版本:

在NFSv3中添加了kerberos协议(kerberos:加密帐号信息,使认证过程安全)

V4相对V3的改进:

1:改进了INTERNET上的存取和执行效能

2:在协议中增强了安全方面的特性

3:增强的跨平台特性

NFS运行机制:

NFS运行时需要调用五个后台进程:

nfsd

rpc.quotad对nfs文件系统启动配额功能

rpc.nfsd管理clinet是否有权限登录,以及判别登录者的uid等;

rpc.mountd读取/etc/exports的权限,对文件访问权限进行控制;

rpc.lockd文件的互斥锁,保证文件在同一时间只有一个人访问,需要nfslockd服务;

rpc.statd检查文件的一致性,需要nfslockd服务。

由于NFS的功能日益完善,逐渐被引进了Linux的内核,也就是说,NFS其实是内核中的一个功能,只要我们内核启用了该项,那么我们就可以使用NFS,但是要配置该功能,就需要一个应用接口,也就是需要安装一个用户空间一个工具,而这个工具就是nfs-utils,需要安装这样一个

NFS控制权限机制:

在Linux的文件都有各自的权限,以及属主和属组,当NFS服务器上某个用户共享了一个文件,当客户端挂载了该文件,放客户端上的用户来访问该文件时其权限应该参考其UID号,这是由于NFS并不认证用户,指认证UID,当客户端访问共享文件时,如果其UID恰好等于服务器端共享该文件的用户的UID,那么其权限就是属主的权限

但是其最终权限取决于文件系统权限和共享权限交集

即:当用户共享权限是:ro

文件系统权限是:rw

即使客户端的用户被识别为属主,但是由于最终权限的规则,其权限并不是rw,而是ro


另外一种特殊情况:当服务器端root共享了文件系统,当客户端上的root挂载了该文件系统,由于NFS只映射UID,所以其被识别为本机的root,那样客户端上的root被识别在服务器上的root,那样就在服务器端没有任何限制,那样是十分危险的,所以共享文件时一定不能使用root用户的身份去共享文件

而正是由于这种特殊情况,NFS引入了一种共享属性:no_root_squash,即当客户端的root来进行共享使用服务器端root共享的文件时,则会被认为是nobody用户,其权限十分的少。


NFS配置:

NFS监听在TCP/UDP的2049端口

无论在服务器端还是客户端都需要安装:nfs-utils这个rpm包

启动服务:

#service nfs start

配置文件:

/etc/exports

格式:FILESYSTEM Clientlist(共享属性) Clientlist(共享属性)

共享属性:

ro:只读

rw:读写

async:异步写入

sync:同步写入

root_squash:将root用户映射为nobody

no_root_squash:不将root用户映射为nobody

all_squash:所有的用户都映射为nobody



客户端列表格式:


1.单个主机:FQDN或者IP

2.通配符,如:*.example.com

3.IP的网络地址

例如:

/vhosts  172.16.4.10/16(rw)      对172.16.4.10以读写权限共享/vhosts
'/a b' 172.16.4.10/255.255.0.0(rw)        对172.16.4.10以读写权限共享/a b
/vhosts  *.coolinuz.com(ro)        对coolinuz.com域内以只读方式共享/vhosts


注:如果共享的文件系统名中有空格,则需要将其用''引起来。

重读配置文件:

exportfs

-a:所有

-r:重新导出所有的

-u:关闭某个共享的文件系统

-v:显示详细信息

#exportfs -rv

#exportfs -arv

#exportfs -u 172.16.0.0/16:/mydata


showmount:用于查看主机上的共享

-e:查看共享的内容

-a:查看服务器已经被挂载的文件系统

-d:显示主机上被共享的曾经被挂载的文件系统

#showmount -e 172.16.4.1

#showmount -a 172.16.4.1

#showmount -d 172.16.4.1


客户端挂载:

#mount -t nfs 172.16.4.1:/vhosts /mnt/nfs
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 RPC 休闲 NFS