在启动NFS SERVER之前,首先要启动rpcbind服务(即老版本portmap服务,)否则NFS SERVER 就无法向RPC服务注册,另外,如果RPC服务重新启动,原来已注册好的NFS端口数据就会丢失,因此,此时RPC服务管理的NFS程序也需要重新启动以向PRC端口注册,特别提示:一般修改NFS配置文件后,是不需要重启NFS的。直接在命令行实行/etc/init.d/nfs reload 或exportfs -rv 即可使修改的/etc/exports生效。
2、NFS系统守护进程
・ nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;
・ mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。
・ Rpcbind:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时rpcbind会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。
3、NFS服务器的配置
NFS服务器的配置相对比较简单,只需要在相应的配置文件中进行设置,然后启动NFS服务器即可。
NFS的常用目录
/etc/exports NFS服务的主要配置文件
/usr/sbin/exportfs NFS服务的管理命令
/usr/sbin/showmount 客户端的查看命令
/var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值
/var/lib/nfs/xtab 记录曾经登录过的客户端信息
a. 输出目录:
输出目录是指NFS系统中需要共享给客户机使用的目录;
b. 客户端:
客户端是指网络中可以访问这个NFS输出目录的计算机
客户端常用的指定方式
・ 指定ip地址的主机:192.168.21.111
・ 指定子网中的所有主机:192.168.21.0/24 192.168.21.0/255.255.255.0
・ 指定域名的主机:www.nfsst.cn
・ 指定域中的所有主机:*.nsfst.cn
・ 所有主机:*
c. 选项:
选项用来设置输出目录的访问权限、用户映射等。
NFS主要有3类选项:
访问权限选项
・ 设置输出目录只读:ro
・ 设置输出目录读写:rw
用户映射选项
・ all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
・ no_all_squash:与all_squash取反(默认设置);
・ root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
・ no_root_squash:与rootsquash取反;
・ anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
・ anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
・ secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
・ insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
・ sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
・ async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
・ wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
・ no_wdelay:若有写操作则立即执行,应与sync配合使用;
・ subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
・ no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
4.服务端配置
a.先查看是否安装nfs和rpcbind软件包
没有就直接yum安安装包(centos 6.0 版本rpcbind 5版本protmap);
#yum install -y nfs-utils rpcbind
查看是否安装完所需安装包;
b.设置nfs启动方式
Chkconfig nfs on
Chkconfig rpcbind on
c.配置文件路径
/etc/exports
/etc/exports文件配置格式为:
Nfs 共享目录 客户端ip地址或者ip端(权限)
实例:
格式 |
共享目录 客户ip或ip段(参考1,参考2...*代表所有主机)(权限) |
配置一 |
/xp 192.168.21.0/24(rw,sync) |
配置二 |
/xp *(rw,sync,all_squash,anonuid=2000,anongid=2000)适合多客户共享一个目录 |
注释#
配置例一(rw,sync)表示允许共享目录读写,sync表示数据同步写入内存和硬盘中
配置例二(rw,sync,all_squash,anonuid=2000,anonguid=2000)所有用户访问都把uid和gid变为2000
d.关于权限的分析
1. 客户端连接时候,对普通用户的检查
a. 如果明确设定了普通用户被压缩的身份,那么此时客户端用户的身份转换为指定用户;
b. 如果NFS server上面有同名用户,那么此时客户端登录账户的身份转换为NFS server上面的同名用户;
c. 如果没有明确指定,也没有同名用户,那么此时 用户身份被压缩成nfsnobody;
2. 客户端连接的时候,对root的检查
a. 如果设置no_root_squash,那么此时root用户的身份被压缩为NFS server上面的root;
b. 如果设置了all_squash、anonuid、anongid,此时root 身份被压缩为指定用户;
c. 如果没有明确指定,此时root用户被压缩为nfsnobody;
d. 如果同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组
配置如下:
Service rpcbind start
Service nfs start
五.客户端配置
#yum -y install rpcbind nfs-utils(客户端也需要这个安装包,但是不需要开启,开启rpcbind)
相关命令
Showmount -e ip 查看共享的服务目录
Rpcinfo -p 查看nfs想rpc注册那些端口
mount |grep nfs 查看挂载nfs信息
Chkconfig nfs on 自动开启nfs
Chkconfig rpcbind on 自动开启rpc
注意:一般修改配置过后直接使用/etc/init.d/nfs reload
客户端提示错误1:
(大概意思就是丢失代码或者辅助程序,其他错误,很可能需要辅助程序。。。)
重装#yum -y install rpcbind nfs-utils