NFS服务器端安装
1、安装nfs服务端程序
[root@nfs ~]# yum install rpcbind nfs-utils
[root@nfs ~]# rpm -qa | grep -E "nfs-utils|rpcbind"
rpcbind-0.2.0-11.el6.x86_64
nfs-utils-1.2.3-39.el6.x86_64
nfs-utils-lib-1.1.5-6.el6.x86_64
[root@nfs ~]# mkdir /home/data
[root@nfs ~]# chmod -R 755 /home/data
2、编辑配置文件/etc/exports,设置客户端访问权限。
[root@nfs ~]# vi /etc/exports
#mount share source
/home/data 192.168.3.0/24(rw) #只允许192.168.3.0网段读写
3、启动rpcbind和nfs服务
[root@nfs ~]# chkconfig rpcbind on
[root@nfs ~]#chkconfig nfs on
[root@nfs ~]#service rpcbind start
Starting rpcbind:[ OK ]
[root@nfs ~]#service nfs start
Starting NFSservices: [ OK ]
Starting NFSmountd: [ OK ]
Starting NFSdaemon: [ OK ]
Starting RPCidmapd: [ OK ]
4、创建一些测试资源
[root@nfs data]# touch text
[root@nfs data]# touch text.tar.gz
NFSclient安装
1、客户端安装rpcbind
[root@nfsclient ~]# yum install rpcbind nfs-utils
[root@nfsclient ~]# service rpcbind start
Starting rpcbind: [ OK ]
[root@nfsclient ~]# showmount -e 192.168.3.103 #查询服务器端提供的资源
Export list for 192.168.3.103:
/home/data 192.168.3.0/24
2、创建本地挂载点,并挂载。
[root@nfsclient ~]# mkdir /mnt/data
[root@nfsclient ~]# mount 192.168.3.103:/home/data /mnt/data #挂载服务器/home/data资源到本地/mnt/data
3、实现开机挂载/etc/fstab
[root@nfsclient data]# umount -lf /mnt/data #为了实验开机挂载,先取消挂载
[root@nfsclient data]# vi /etc/fstab # 进入/etc/fstab添加以下配置
192.168.3.103:/home/data /mnt/data nfs defaults 0 0
[root@nfsclient data]# reboot #从启看下是否开机后自动挂载
[root@nfsclient ~]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4 6926264 1294084 5280336 20%
192.168.3.103:/home/data nfs 6926272 1402528 5171872 22% /mnt/data
4、测试挂载后的权限
[root@nfsclient ~]# cd /mnt/data #进入挂载后的目录,新建文件试下权限
[root@nfsclient data]# mkdir test
mkdir: cannot create directory `test': Permission denied
试下在服务器端设置文件权限为777
[root@nfs ~]# chmod -R 777 /home/data/
[root@nfsclient data]# mkdir test
[root@nfsclient data]# ll
total 8
drwxr-xr-x 2 nfsnobody nfsnobody 4096 Apr 26 20:55 test
可以创建文件,但通过root访问nfs服务器,默认root会由root_squash的设定压缩成nfsnobody,成为匿名使用名。
5、测试创建用户去挂载,以及使用root用户不压缩挂载。
先在服务器端新建一个www用户,uid和gid都为800
[root@nfs ~]# useradd -u 800 www
[root@nfs ~]# id www
uid=800(www) gid=800(www) groups=800(www)
[root@nfs ~]# setfacl -R -m u:800:rwx /home/data/ #只有使用者身份是www才可读写
[root@nfs ~]# getfacl /home/data #查看一下权限
getfacl: Removing leading '/' from absolute path names
# file: home/data
# owner: root
# group: root
user::rwx
user:www:rwx
group::rwx
mask::rwx
other::rwx
在客户端机器上创建一个与服务器端一样的用户,并且uid和gid要与服务器相同。
[root@nfsclient ~]# useradd -u 800 www
[root@nfsclient ~]# su – www #切换到用户www测试。
[www@nfsclient ~]$ cd /mnt/data
[www@nfsclient data]$ mkdir 123
[www@nfsclient data]$ ll
total 12
drwxrwxr-x 2 www www 4096 Apr 26 21:24 123 #用户和组都为www
6、测试root用户不压缩时挂载
先在服务器端修改nfs配置文件/etc/exports
[root@nfshome]# vi /etc/exports
#mount share source
/home/data192.168.3.0/24(rw,no_root_squash) #增加no_root_squash不压缩root
[root@nfs home]# service rpcbind restart
Stoppingrpcbind: [ OK ]
Startingrpcbind: [ OK ]
[root@nfshome]# service nfs restart
Shuttingdown NFS daemon: [ OK ]
Shuttingdown NFS mountd: [ OK ]
Shuttingdown NFS services: [ OK ]
Shuttingdown RPC idmapd: [ OK ]
StartingNFS services: [ OK ]
StartingNFS mountd: [ OK ]
StartingNFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
在客户端机器上测试验证
[root@nfsclientdata]# mkdir 123
[root@nfsclientdata]# ll
total 12
drwxr-xr-x 2 root root 4096 Apr 26 21:47 123 #用户和组为root
7、如果服务器使用防火墙,客户端就无法访问,但除了固定的port 111、2049外,其它不固定的端口是由rpc.mountd,rpc,rquotad等服务所开启,所以iptables很难设定规则, rpc 服务主要有 mountd, rquotad, nlockmgr 三个,Centos 6.X提供一个固定特定NFS服务端口的配置文件,如下:
在服务器端设置
[root@nfs ~]# vi /etc/sysconfig/nfs
RQUOTAD_PORT=1001
LOCKD_TCPPORT=30001
LOCKD_UDPPORT=30001
MOUNTD_PORT=1002
添加十个端口到防火墙规则里,并保存
[root@nfs ~]#iptables -I INPUT -p tcp --dport 111 -j ACCEPT
[root@nfs ~]#iptables -I INPUT -p tcp --dport 2049 -j ACCEPT
[root@nfs ~]#iptables -I INPUT -p tcp --dport 1001 -j ACCEPT
[root@nfs ~]#iptables -I INPUT -p tcp --dport 1002 -j ACCEPT
[root@nfs ~]#iptables -I INPUT -p tcp --dport 30001 -j ACCEPT
[root@nfs ~]#iptables -I INPUT -p udp --dport 111 -j ACCEPT
[root@nfs ~]#iptables -I INPUT -p udp --dport 2049 -j ACCEPT
[root@nfs ~]#iptables -I INPUT -p udp --dport 1001 -j ACCEPT
[root@nfs ~]#iptables -I INPUT -p udp --dport 1002 -j ACCEPT
[root@nfs ~]#iptables -I INPUT -p udp --dport 30001 -j ACCEPT
[root@nfs ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
8、客户端测试是否挂载成功
[root@nfsclient ~]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
192.168.3.103:/home/data nfs 6926272 1406016 5168416 22% /mnt/data
参考: