nfs的配置

来源:互联网 发布:php通过ip获取地区 编辑:程序博客网 时间:2024/04/29 08:24

NFS

 

windows中经常使用网上邻居的功能来实现在局域网中共享文件,方便了使用。那么在linux中是否有同样的功能呢?结果是肯定的。

linux系统上我们可以使用nfs服务来实现局域网中的共享。nfs服务工作方法如下:

首先服务器启动服务,servicenfs start

nfs服务(监听2049端口)的主进程是nfsd同时要启动四个进程portmaprpc.mountdlockdrpc.quotadrpc.statd这几个进程。

nfs服务启动的进程都是同时监听tcp/udp协议。其几个进程的作用分别如下:

1.                portmap监听端口111,提供的服务是给予其他三个进程提供随机端口。rpc.mountd确定客户端是否能够挂载分区。

2.                rpc.mountd,提供让服务器挂载的接口

3.                locked提供文件锁,在有多个用户挂载同个文件时,保证数据的同步性。其方法为:对问价进行加锁,不允许多个用户同时修改一个文件。

4.                rpc.quotad是在挂载时检查是否有磁盘配额,同时并启用之。

5.                rpc.statdlocked联合使用,共同保证数据的完整性和一致性

其工作过程如下:

client à 服务器的portmapà得到mountd端口à连接服务器的mountd端口à   mountd查找exports文件同时根据rpc.quotad的限制给予client权限(句柄)à访问servernfsd进程,挂载分区

在实现共享时分以下几步:

1.         首先在服务器上配置所要共享的文件夹

2.         启动服务,如果服务已经启动使用命令export -arv重新读取一下共享的文件夹。

3.         在客户端中创建目录,并挂载服务器中共享的文件夹

 

以下为配置使用的命令:

服务器上的配置

是用命令rpcinfo -p 可以查看nfs对应进程启动的端口号

编辑配置文件/etc/exports:格式如下:

/path/of/share        client_list(选项)

用户列表可以是单个用户,也可以是一个网段的用户,或者是所有用户。

常见的选项如:rwasyncroot_squashno_root_squashall_squash含义如下

rw,允许挂载的文件及可读可写,但最终的权限是与文件本身权限的交集。

async,允许异步写入

root_squash,当以root用户的登录时将其切换至nobody用户的权限。

no_root_squash,直接以root用户登录对方主机。

all_squash,任何用户登录上之后都切换到nobody用户。

当配置好上述文件后重启nfs服务,或者执行命令exortfs -arv让服务器重新读取共享的目录。

客户端配置

查看共享的文件夹:showmount-e SERVER-IP

如果看到服务器共享的文件夹,使用命令 mount -t nfs SERVER/share/dir /local/dir将其挂载。然后切换至目录查看,是否挂载成功。

当你切换至挂载的目录时并创建目录时,文件的属主,属组又是谁呢?这就是nfs服务的一个缺陷:nfs服务是以UID号来区分用户的身份的,只要客户机上当前用户与服务器上的的一个用户UID相同时,就以服务区上的那个用户的身份运行。这样就存在一种情况:本地的root用户拥有了服务上root用户的权限,所以在/etc/exports中最好加上root_squash,以保证其文件的安全性。

nfs的缺点:

1.         产生的端口是随即的

2.         基于IP地址的验证

3.         完全的相信客户端

结局端口的问题可以通过更改配置文件的方法:

修改/etc/sysconfig/nfs

LOCKD_TCPPORT=””

LOCKD_UDPPORT=””

MOUNTD_PORT=””

STATD_PORT=””

RQUOTAD_PORT=””

STATD_QUTGOING_PORT=””

通过修改以上的几行内容来规定端口,在选取端口时尽量使用不常用的端口避免冲突。

解决对身份的验证,可以通过NISKERBOROS这将在后面的文章中介绍

 

原创粉丝点击