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、启动rpcbindnfs服务

[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用户,uidgid都为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

在客户端机器上创建一个与服务器端一样的用户,并且uidgid要与服务器相同。

[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 1112049外,其它不固定的端口是由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

参考: