一、安装:
[barlow@web01 ~]# yum -y install nfs-utils rpcbind
二、权限说明: NFS文件系统的权限主要由两部分控制:用户UID和文件/etc/exports 即当客户端用户的UID在客户端的存在的时候,直接使用服务器端该UID对NFS系统所拥有的权限(root在一些特别的情况下例外,后面会说到)。 /etc/exports文件可以对NFS系统权限进行集中的管控:
[barlow@web01 ~]#vim /etc/exports
/home/public 192.168.8.0/24(ro) localhost(rw) *.ev.ncku.edu.tw(ro,sync)
[分享目录] [第一部主机(权限)] [可用主机名] [可用通配符]
至于主机名称的设定主要有几个方式:
- 可以使用完整的IP 或者是网段,例如192.168.8.10 或192.168.8.0/24 ,或192.168.8.0/255.255.255.0 都可以
- 也可以使用主机名称,但这个主机名称必须要在/etc/hosts 内,或可使用DNS 找到该名称才行啊!反正重点是可找到IP 就是了。如果是主机名称的话,那么他可以支持通配符,例如* 或? 均可接受。
至于权限方面(就是小括号内的参数) 常见的参数则有:
参数值 | 内容说明 |
rw ro | 该目录分享的权限是可读写(read-write) 或只读(read-only),但最终能不能读写,还是与文件系统的rwx 及身份有关。 |
sync async | sync 代表资料会同步写入到内存与硬盘中,async 则代表资料会先暂存于内存当中,而非直接写入硬盘! |
no_root_squash root_squash | 用户端使用NFS 档案系统的帐号若为root 时,系统该如何判断这个帐号的身份?预设的情况下,用户端root 的身份会由root_squash 的设定压缩成nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放用户端使用root 身份来操作服务器的档案系统,那么这里就得要开no_root_squash 才行! |
all_squash | 不论登入NFS 的使用者身份为何, 他的身份都会被压缩成为匿名使用者,通常也就是nobody(nfsnobody) 啦! |
anonuid anongid | anon 意指anonymous (匿名者) 前面关于*_squash 提到的匿名使用者的UID 设定值,通常为nobody(nfsnobody),但是你可以自行设定这个UID 的值!当然,这个UID 必需要存在于你的/etc/passwd 当中!anonuid 指的是UID 而anongid 则是群组的GID 啰。 |
三、配置: 1、准备工作:
[barlow@web01 ~]# mkdir /home/public ##建立一个用于共享的目录 [barlow@web01 ~]#chown barlow /home/public ##将目录所有者改为barlow用户 [barlow@web01 ~]#service nfs start ##启动nfs服务
2、案例一:让root保持原有的root权限
[barlow@web01 ~]# vim /etc/exports
/home/public *(rw,no_root_squash)# 任何人都可以用我的 /home/public ,用通配符来处理主机名,重点在 no_root_squash
3、案例二:同一目录,不同主机权限不一样
[barlow@web01 ~]# vim /etc/exports
/home/public 192.168.8.0/24(rw) *(ro)
#继续累加在后面,注意,我将主机与网域分为两段(用空格隔开)
4、案例三:给单一主机使用
[barlow@web01 ~]# vim /etc/exports
/home/public 192.168.100.10(rw)
#只有192.168.8.10这个主机可以访问
我这里是关闭了SELinux和防火墙iptables的,否则也会有问题
NFS的防火墙配置特别难搞,因为其连接端口处了111和2049是固定的外,其他还会产生很多非固定的端口,因此没有很好的办法通过iptables配置来实现。
不过还好在RHEL/CentOS 6.x下,增加了一个可以配置固定端口的办法,其定义在/etc/sysconfig/nfs中,这个文件配置很多,但一般均不需调整,之需要调整端口相关的即可,具体如下:
[barlow@web01 ~]# vim /etc/sysconfig/nfs
RQUOTAD_PORT=1001
LOCKD_TCPPORT=30001
LOCKD_UDPPORT=30001
MOUNTD_PORT=1002