NFS(Network FileSystem)
主要功能是可以透过网络,让不同的机器的;linux操作系统、可以彼此分享文件档案。
当我们启动完毕NFS服务后,所被共享的目录可以被客户机所挂载到自己系统上面的挂载点(自定义),挂载完毕后就可以像访问自己的目录一样任意访问,但必须得给予其足够的权限,否则无法正常访问。
NFS的服务端口为2049号端口,因为文件系统的复杂和支持的功能较多,因此每启动一个功能就会启用一些端口来传输数据,这些被端口是随机抽取一些未被使用的小于1024的端口来传输之用。
为了使客户机能正常连上服务器,就需要使用RPC(Remote Procedure Call)远程过程呼叫服务,RPC服务的主要功能就是指定每个NFS功能所对应的端口号,并且反馈给客户端,让客户端能正确的端口上。NFS服务启用后会随机取用数个端口,并主动的向RPC注册,因此RPC可以知道每个端口所对应的NFS功能,然后RPC会固定使用111端口来监听客户端的需求并向客户端提供正确的端口。
启动NFS之前必须先开启RPC服务,否则NFS无法向RPC注册;若RPC重启时,原本注册的数据会不见,因此RPC重新启动后,NFS管理的所有服务都需要重新向RPC注册。
NFS的启动的RPC守护进程有:
rpc.nfsd:管理客户端是否能够使用服务器文件系统挂载信息和登陆者ID的判别
rpc.mountd:管理NFS的文件系统,会读取NFS的配置文件/etc/exports来对比客户端的权限。
rpc.lockd:锁定管理档案
rpc.statd:检查档案的一致性,常与rpc.lockd同时启动,这两个服务必须服务器和客户端同时开启才会有效。
只有满足了使用者账号的相关身份,NFS服务器允许有写入的权限,文件系统必须有写入的权限,这样才能具有该档案的可写入权限。
关于NFS访问的用户问题(以xia为例)
客户端账号访问服务端的时候,服务端会自动检测/etc/passwd 、/etc/group来查询对应的使用者、组名,就会有如下情况:
1、如NFS服务端和客户端刚好有相同的账号和组对应,那么xia访问服务端的时候自动以xia的身份进行服务器所提供的文件系统存取。
2、NFS客户端的xia的UID和服务端账户xia1的UID相同,则客户端的xia会存取服务端的xia1,因为两端的UID相同。
3、NFS服务端并没有xia的UID,则会匿名访问,账号nobody(UID为65534)
4、如果以root账户相同,由于root的uid为0,所以会自动匿名访问。
实验准备:
1、实验前需安装nfs服务包和rpc服务包(默认安装)
2、服务安装完毕后配置服务
NFS的主要配置文件为/etc/exports
NFS服务的分享资源登录文件:/vat/lib/nfs/etab 主要记录NFS所分享出来的目录完整权限设定值。/vat/lib/nfs/xtab 记录曾经连接到此NFS服务器的相关登录数据。
/etc/exports配置文件的配置方法
所共享的目录 IP地址(登陆者的权限)
例: /xia 192.168.2.0/24(rw)
表明所共享的目录为/xia 192.168.2.0网段的客户机可以进行访问,拥有读写权限。
IP地址可以设置网段、单个IP地址 或IP地址/子网掩码
权限方面的设置常见的参数如下:
rw:能读能写
ro:只读
sync:数据同步写入到内存和硬盘中
async:暂存内存中不会直接写入硬盘
no_root_squash:当客户端以root访问时,会自动匿名为nobody,如想以root身份登录,则加入此参数
all_squash:不论任何用户登录自动匿名为nobody
anonuid:anon指anonymous匿名者,自行设定登录用户的UID,但此UID必须在/etc/passwd当中存在
anongid:同理,指群组。
3、配置完毕后启动NFS
/etc/init.d/rpcbind start 启动rpc(默认开启)
service nfs restart 重启nfs
/etc/init.d/nfs start 开启nfs
如启动失败可去/vat/log/messages下查看日志信息
4、检测是否启动成功
启动成功后可netstat -tulnp |grep -E(rpc|nfs)查看所开的端口
rpc的默认端口为111
nfs的默认端口为2049
其他的rpc.*服务启动的端口随机产生,须向rpc 111端口注册。
rpcinfo 接IP地址
查看此IP地址的RPC服务的注册状况
-p:针对IP显示所有的端口和程序(program)信息
-t:针对IP的某只程序查看其TCP封包所在的软件版本
-u:同上 UDP封包
如 rpcinfo -t 192.168.2.10 nfs
showmount 检查是否可以连接共享
-a:查看目前主机与客户端的NFS联机分享的状态。
-e:查看某部主机的/e
tc/exports所分享的目录数据。
exportfs 重新注册/etc/exports(不用重启服务)
-a(all):全部挂载/etc/exports
-r(renew):重新挂载
-u(uninstal):卸载某一目录
-v(version):显示分享的目录信息
5、NFS客户端访问
注意如防火墙开启,将无法访问,需关闭防火墙或更改防火墙配置。
客户端访问时首先开启rpc服务,服务启动后才可进行挂载
shoumount -e 服务端IP 查看共享资源
进行挂载
mount -t nfs 192.169.2.10:/共享目录 /所挂载的目录
-t nfs指指定文件系统类型
由于安全问题,所以可以禁用suid指以免出现状况
mount -t nfs -o nosuid 192.169.2.10:/共享目录 /所挂载的目录
6、如何进行开机自动挂载
不能在/etc/fstab下编辑,因为系统尚未启动网络,会无法挂载成功,应当编辑/etc/rc.d/rc.local
autofs的设定
此设定会持续的侦查某个指定的目录,并预先设定档使用该目录下的某个子目录时,将会取得服务端的NFS,并进行自动挂载。
例当我们要是有/nfs/file/pubilc的数据时,此时autofs才会去挂载/nfs/file,且当隔了五分钟没有使用该目录下的数据时,会自动卸除/nfs/file/pubilc
autofs的主要配置文件为/etc/auto.master
在此文件下编辑被持续侦测的目录及数据文件就可以
如 /nfs/file /etc/auto.nfs
/nfs/file不需要事先创建,autofs会主动建立,如事先创建,可能出问题。
建立数据对应文件/etc/auto.nfs的挂载信息及服务器对应资源
刚在/etc/auto.master下指定的/etc/auto.nfs是不存在的,需自行创建编辑。
此档案的格式如下:
本地端次目录 挂载参数 服务器所提供的目录
如: public -rw 192.168.2.10:/1
/etc/init.d/autofs restart 启动autofs