nfs服务器配置(linux配置NFS服务器)

linux下Samba服务和NFS服务配置的方法

linux下Samba服务和NFS服务配置

一、Samba服务配置过程

samba的功能很简单,就是为了使linux和windows之间能够实现共享。并且利用samba搭建文件服务器,不仅比windows功能强大,而且访问速度快、安全。首先说明,samba服务器需要两个守护进程:smbd和nmbd。smbd进程监听139TCP端口,处理到来的SMB数据包;nmbd进程监听137、138UDP端口,使其他主机能浏览linux服务器。

1、安装Samba服务

首先用命令测试rpm-qi samba看是否安装了Samba软件包,若没有可以用yum install samba在线安装(fedora 11环境下)。

2、启动Samba服务

安装完成后,使用service smb start命令启动samba服务。如果想让samba服务开机自动加载,可使用ntsysv命令(或setup命令中的system service选项)打开开机自动加载的服务,并勾选smb,确定后即可实现开机加载samba服务。

3、关闭防火墙

默认情况下防火墙关闭了139 TCP端口,也关闭了nmbd进程所需要的137、138端口。所以我们使用命令service iptables stop命令关闭防火墙。也可对防火墙进行修改,放行TCP139 UDP 137、138端口。

4、配置samba服务

samba服务的配置文件是/etc/samba/smb.conf,使用VI编辑器打开vi/etc/samba/smb.conf文件,对samba进行配置

smb.conf文件中包括4中结构,【Global】、【Homes】、【printers】、【Userdefined_shareName】,其中:

Globa用于定义全局参数和缺省值

Homes用于用户的home目录共享

Printers用于定义打印机共享

Userdefined_ShareName用于自定义共享(可有多个)

说明:文件中开头带有“#”为说明文件,不执行。开头带有“;”为举例文件,不执行(若想让其执行,去掉“;”)。

配置全局参数【Global】

◎基本全局参数

workgroup=MYGROUP设置samba要加入的工作组

server string=Samba Service指定浏览列表里的机器描述

netbios name=fedora设置samba的NetBIOS名字(需要自己添加)

client code page=936设置客户字符编码 936为简体中文(需要自己添加)

◎日志全局参数

log file指定日志文件的名称

max log size=50指定日志文件的最大尺寸(KB)

◎安全全局参数

security定义samba的安装等级,share--用户不需要用户名和密码即可登陆samba服务器;user--由提供samba服务的samba服务器负责检查帐户及口令;server--检查帐户及口令的工作指定由另一台WindowsNT/2000或samba服务器负责;domain--指定windowsNT/2000域控制器来验证用户帐户、密码

encrypt passwords= yes

smb passwd file=/etc/samba/smbpasswd

这两行用于设定是否对samba密码进行加密,并指定加密文件存放路径.

◎配置自定义共享

自定义共享,只需在文件最后加入【share】,名字随便取。其中一的参数我们来依依介绍

comment描述该共享的名称

path定义该共享的目录

browseable指定共享的目录是否可浏览

writable指定共享的目录是否有写入权限

read only指定共享的目录为只读权限

public指定是否可以允许Guest帐户访问

guest ok通public相同,yes为允许guest访问

only guest指定只有guest用户可以访问

calid users指定访问该共享的用户

如:comment=my share

path=/home/share

browseable=yes

read only=yes

public=yes

only guest=yes

◎配置完成后的工作

在配置完成后,我们只需新建path定义的共享目录mkdir/home/share,

并使用chmod命令设置了其权限为777,chmod 777/home/share。

这样在service smb restart重启smb服务后客户端就可以访问该服务器(我修改了全局参数中的security=share,所以进入服务器不需要输入用户名和密码)。在windows下运行中运行://192.168.1.6(linux的IP地址)即可。

二、NFS服务配置过程

1、NFS服务器的安装

检查linux系统中是否安装了nfs-utils和portmap两个软件包,#rpm–q nfs-utils(portmap)

2、查看NFS服务器是否启动

#service nfs status

#service portmap status

如果服务器没有启动,则开启服务(默认服务下nfs没有完全开启)

#service nfs start

#service portmap start

也可以在ntsysv命令下关闭iptable和开启nfs让其自启动。

3、指定NFS服务器的配置文件

NFS服务器的配置文件保存“/etc/”目录中,文件名称是“exports”,该文件用于被指NFS服务器提供的目录共享

#vi/etc/exports

配置“exports”文件格式如下

/tftpboot*(sync,ro)

tftp:共享目录名

*表示所有主机

(sync,ro)设置选项

exports文件中的“配置选项”字段放置在括号对(“()”)中,多个选项间用逗号分隔

sync:设置NFS服务器同步写磁盘,这样不会轻易丢失数据,建议所有的NFS共享目录都使用该选项

ro:设置输出的共享目录只读,与rw不能共同使用

rw:设置输出的共享目录可读写,与ro不能共同使用

4、重新输出共享目录

Exportfs管理工具可以对“exports”文件进行管理

#exportfs–rv可以让新设置的“exports”文件内容生效

显示当前主机中NFS服务器的输出列表

# showmount-e

显示当前主机NFS服务器中已经被NFS客户机挂载使用的共享目录

# showmount-d

5、使用mount命令挂载NFS文件系统

#mount 192.168.1.6:/tftpboot/home/share

将主机IP地址为192.168.1.6中的/tftpboot目录挂载到/home/share

卸载系统中已挂载的NFS共享目录

# umount/home/share

卸载的时候不能在/home/share目录下卸载,必须注销系统后卸载。

PS:

如果portmap进程停止了运行或异常终止,那么该系统上的所有RPC服务器必须重新启动。首先停止NFS服务器上的所有NFS服务进程,然后启动portmap进程,再启动服务器上的NFS进程。

但portmap只在第一次建立连接的时候起作用,帮助网络应用程序找到正确的通讯端口,但是一旦这个双方正确连接,端口和应用就绑定,portmap也就不起作用了。但对其他任何第一次需要找到端口建立通讯的应用仍然有用。简单的说,portmap就是应用和端口的婚姻介绍人,双方成事了以后,媒婆就没用了。

配置NFS服务器的过程。

在讲NFS SERVER的运作之前先来看一些与NFS SERVER有关的东西:

RPC(Remote Procedure Call)

NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议勇士用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

NFS需要启动的DAEMONS

pc.nfsd:主要复杂登陆权限检测等。

rpc.mountd:负责NFS的档案系统,当CLIENT端通过rpc.nfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理

NFS SERVER在REDHAT LINUX平台下一共需要两个套件:nfs-utils和PORTMAP

nfs-utils:提供rpc.nfsd及 rpc.mountd这两个NFS DAEMONS的套件

portmap:NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的。通俗的说PortMap就是用来做PORT的mapping的。

一:服务器端的设定(以LINUX为例)

服务器端的设定都是在/etc/exports这个文件中进行设定的,设定格式如下:

欲分享出去的目录主机名称1或者IP1(参数1,参数2)主机名称2或者IP2(参数3,参数4)

上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。

可以设定的参数主要有以下这些:

rw:可读写的权限;

ro:只读的权限;

no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。

root_squash:在登入 NFS主机使用分享之目录的使用者如果是 root时,那麼这个使用者的权限将被压缩成为匿名使用者,通常他的 UID与 GID都会变成 nobody那个身份;

all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。

anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。

anongid:同 anonuid,但是变成 group ID就是了!

sync:资料同步写入存储器中。

async:资料会先暂时存放在内存中,不会直接写入硬盘。

insecure允许从这台机器过来的非授权访问。

例如可以编辑/etc/exports为:

/tmp*(rw,no_root_squash)

/home/public192.168.0.*(rw)*(ro)

/home/test192.168.0.100(rw)

/home/linux*.the9.com(rw,all_squash,anonuid=40,anongid=40)

设定好后可以使用以下命令启动NFS:

/etc/rc.d/init.d/portmap start(在REDHAT中PORTMAP是默认启动的)

/etc/rc.d/init.d/nfs start

exportfs命令:

如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:

exportfs [-aruv]

-a:全部mount或者unmount/etc/exports中的内容

-r:重新mount/etc/exports中分享出来的目录

-u:umount目录

-v:在 export的时候,将详细的信息输出到屏幕上。

具体例子:

[root@test root]# exportfs-rv

2、mount nfs目录的方法:

mount-t nfs hostname(orIP):/directory/mount/point

具体例子:

Linux: mount-t nfs 192.168.0.1:/tmp/mnt/nfs

Solaris:mount-F nfs 192.168.0.1:/tmp/mnt/nfs

BSD: mount 192.168.0.1:/tmp/mnt/nfs

3、mount nfs的其它可选参数:

HARD mount和SOFT MOUNT:

HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。

SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。

例如:mount-F nfs-o hard 192.168.0.10:/nfs/nfs

对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。

rsize和wsize:

文件传输尺寸设定:V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and-wsize来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响

bg:在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度)

fg:和bg正好相反,是默认的参数

nfsvers=n:设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER 3

mountport:设定mount的端口

port:根据server端export出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定

timeo=n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。

intr允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。

udp:使用udp作为nfs的传输协议(NFS V2只支持UDP)

tcp:使用tcp作为nfs的传输协议

namlen=n:设定远程服务器所允许的最长文件名。这个值的默认是255

acregmin=n:设定最小的在文件更新之前cache时间,默认是3

acregmax=n:设定最大的在文件更新之前cache时间,默认是60

acdirmin=n:设定最小的在目录更新之前cache时间,默认是30

acdirmax=n:设定最大的在目录更新之前cache时间,默认是60

actimeo=n:将acregmin、acregmax、acdirmin、acdirmax设定为同一个数值,默认是没有启用。

retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutes

noac:关闭cache机制。

同时使用多个参数的方法:mount-t nfs-o timeo=3,udp,hard 192.168.0.30:/tmp/nfs

请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。

4、/etc/fstab的设定方法

/etc/fstab的格式如下:

fs_specfs_filefs_typefs_optionsfs_dumpfs_pass

fs_spec:该字段定义希望加载的文件系统所在的设备或远程文件系统,对于nfs这个参数一般设置为这样:192.168.0.1:/NFS

fs_file:本地的挂载点

fs_type:对于NFS来说这个字段只要设置成nfs就可以了

fs_options:挂载的参数,可以使用的参数可以参考上面的mount参数。

fs_dump-该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0

fs_pass-该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0。

5、与NFS有关的一些命令介绍

nfsstat:

查看NFS的运行状态,对于调整NFS的运行有很大帮助

rpcinfo:

查看rpc执行信息,可以用于检测rpc运行情况的工具。

四、NFS调优

调优的步骤:

1、测量当前网络、服务器和每个客户端的执行效率。

2、分析收集来的数据并画出图表。查找出特殊情况,例如很高的磁盘和CPU占用、已经高的磁盘使用时间

3、调整服务器

4、重复第一到第三步直到达到你渴望的性能

与NFS性能有关的问题有很多,通常可以要考虑的有以下这些选择:

WSIZE,RSIZE参数来优化NFS的执行效能

WSIZE、RSIZE对于NFS的效能有很大的影响。

wsize和rsize设定了SERVER和CLIENT之间往来数据块的大小,这两个参数的合理设定与很多方面有关,不仅是软件方面也有硬件方面的因素会影响这两个参数的设定(例如LINUX KERNEL、网卡,交换机等等)。

下面这个命令可以测试NFS的执行效能,读和写的效能可以分别测试,分别找到合适的参数。对于要测试分散的大量的数据的读写可以通过编写脚本来进行测试。在每次测试的时候最好能重复的执行一次MOUNT和unmount。

time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384

用于测试的WSIZE,RSIZE最好是1024的倍数,对于NFS V2来说8192是RSIZE和WSIZE的最大数值,如果使用的是NFS V3则可以尝试的最大数值是32768。

如果设置的值比较大的时候,应该最好在CLIENT上进入mount上的目录中,进行一些常规操作(LS,VI等等),看看有没有错误信息出现。有可能出现的典型问题有LS的时候文件不能完整的列出或者是出现错误信息,不同的操作系统有不同的最佳数值,所以对于不同的操作系统都要进行测试。

设定最佳的NFSD的COPY数目。

linux中的NFSD的COPY数目是在/etc/rc.d/init.d/nfs这个启动文件中设置的,默认是8个NFSD,对于这个参数的设置一般是要根据可能的CLIENT数目来进行设定的,和WSIZE、RSIZE一样也是要通过测试来找到最近的数值。

UDP and TCP

可以手动进行设置,也可以自动进行选择。

mount-t nfs-o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR/DIR

UDP有着传输速度快,非连接传输的便捷特性,但是UDP在传输上没有TCP来的稳定,当网络不稳定或者黑客入侵的时候很容易使NFS的 Performance大幅降低甚至使网络瘫痪。所以对于不同情况的网络要有针对的选择传输协议。nfs over tcp比较稳定, nfs over udp速度较快。在机器较少网络状况较好的情况下使用UDP协议能带来较好的性能,当机器较多,网络情况复杂时推荐使用TCP协议(V2只支持UDP协议)。在局域网中使用UDP协议较好,因为局域网有比较稳定的网络保证,使用UDP可以带来更好的性能,在广域网中推荐使用TCP协议,TCP协议能让NFS在复杂的网络环境中保持最好的传输稳定性。可以参考这篇文章:

版本的选择

V3作为默认的选择(RED HAT 8默认使用V2,SOLARIS 8以上默认使用V3),可以通过vers= mount option来进行选择。

LINUX通过mount option的nfsvers=n进行选择。

五、NFS故障解决

1、NFSD没有启动起来

首先要确认 NFS输出列表存在,否则 nfsd不会启动。可用 exportfs命令来检查,如果 exportfs命令没有结果返回或返回不正确,则需要检查/etc/exports文件。

2、mountd进程没有启动

mountd进程是一个远程过程调用(RPC),其作用是对客户端要求安装(mount)文件系统的申请作出响应。mountd进程通过查找/etc/xtab文件来获知哪些文件系统可以被远程客户端使用。另外,通过mountd进程,用户可以知道目前有哪些文件系统已被远程文件系统装配,并得知远程客户端的列表。查看mountd是否正常启动起来可以使用命令rpcinfo进行查看,在正常情况下在输出的列表中应该象这样的行:

100005 1 udp 1039 mountd

100005 1 tcp 1113 mountd

100005 2 udp 1039 mountd

100005 2 tcp 1113 mountd

100005 3 udp 1039 mountd

100005 3 tcp 1113 mountd

如果没有起来的话可以检查是否安装了PORTMAP组件。

rpm-qa|grep portmap

3、fs type nfs no supported by kernel

kernel不支持nfs文件系统,重新编译一下KERNEL就可以解决。

4、can't contact portmapper: RPC: Remote system error- Connection refused

出现这个错误信息是由于SEVER端的PORTMAP没有启动。

5、mount clntudp_create: RPC: Program not registered

NFS没有启动起来,可以用showmout-e host命令来检查NFS SERVER是否正常启动起来。

6、mount: localhost:/home/test failed, reason given by server: Permission denied

这个提示是当client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录。解决方法当然是去修改NFS SERVER咯。

7、被防火墙阻挡

这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开。而NFS默认是使用111端口,所以我们先要检测是否打开了这个端口,另外也要检查TCP_Wrappers的设定。

六、NFS安全

NFS的不安全性主要体现于以下4个方面:

1、新手对NFS的访问控制机制难于做到得心应手,控制目标的精确性难以实现

2、NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制

3、较早的NFS可以使未授权用户获得有效的文件句柄

4、在RPC远程调用中,一个SUID的程序就具有超级用户权限

加强NFS安全的方法:

1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要使用root_squash。

2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围

iptables-A INPUT-i eth0-p TCP-s 192.168.0.0/24--dport 111-j ACCEPT

iptables-A INPUT-i eth0-p UDP-s 192.168.0.0/24--dport 111-j ACCEPT

iptables-A INPUT-i eth0-p TCP-s 140.0.0.0/8--dport 111-j ACCEPT

iptables-A INPUT-i eth0-p UDP-s 140.0.0.0/8--dport 111-j ACCEPT

3、为了防止可能的Dos攻击,需要合理设定NFSD的COPY数目。

4、修改/etc/hosts.allow和/etc/hosts.deny达到限制CLIENT的目的

/etc/hosts.allow

portmap: 192.168.0.0/255.255.255.0: allow

portmap: 140.116.44.125: allow

/etc/hosts.deny

portmap: ALL: deny

5、改变默认的NFS端口

NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性。

6、使用Kerberos V5作为登陆验证系统

NFS笔记(二)NFS服务器配置实例

一、NFS服务器配置实例

实验拓扑

二、实验要求及环境

2.1实验环境

NFS服务器 IP:192.168.8.5

环境:

[root@server7~]# uname-a

Linux server7.ctos.zu 3.10.0-514.el7.centos.plus.i686#1 SMP Wed Jan 25 12:55:04 UTC 2017 i686 i686 i386 GNU/Linux

[root@server7~]# cat/etc/redhat-release

CentOS release 7.3.1611(AltArch)

客户端IP:192.168.8.7

环境:

[root@client-A~]# uname-a

Linux client-A.ctos.zu 2.6.32-696.el6.i686#1 SMP Tue Mar 21 18:53:30 UTC 2017 i686 i686 i386 GNU/Linux

[root@client-A~]# cat/etc/redhat-release

CentOS release 6.9(Final)

2.2、实验要求

NFS服务器

1、/home/share目录可读写,并且不限制用户身份,共享给192.168.8.0/24网段不的所有主机;

2、/home/zhidata这个目录仅共享给192.168.8.7这台主机,以供该主机上面的zhi这个用户来使用,

也就是说zhi在192.168.8.5和192.168.8.7上均有账号,且账号均为zhi;

3、/home/upload这个目录做为192.168.8.0/24网段的数据上传目录,其中/home/upload

的用户和所属组为nfs-upload这个名字,它的UID和GID均为222;

4、/home/nfs 这个目录的属性为只读,可提供除了网段内的工作站外,向Internet也提供数据内容。

三、服务器端设置

1、编辑/etc/exports内容

[root@server7 etc]# cat/etc/exports

/home/share  192.168.8.0/24(rw,no_root_squash)

/home/zhidata  192.168.8.7(rw)

/home/upload   192.168.8.0/24(rw,all_squash,anonuid=222,anongid=222)

/home/nfs     192.168.8.0/24(ro) *(ro,all_squash)

2、按要求建立每个对应目录

   2.1、创建/home/share目录任何人都可以在/home/share内新增、修改文件,但

   仅有该文件/目录的建立者与root能够删除自己的目录或文件。

   [root@server7 etc]# mkdir-p /home/share

   [root@server7 etc]# ll-d/home/share/

   drwxr-xr-x. 2 root root 6 9月   5 15:50/home/share/

   [root@server7 etc]# chmod 1777 /home/share/

   [root@server7 etc]# ll-d/home/share/

   drwxrwxrwt. 2 root root 6 9月   5 15:50/home/share/

   2.2、创建/home/nfs

   [root@server7 etc]# ll-d/home/nfs/

    drwxr-xr-x. 2 root root 6 9月   5 16:52/home/nfs/

   2.3、创建/home/zhidata目录

   [root@server7 etc]# mkdir-v/home/zhidata

   mkdir:已创建目录"/home/zhidata"

   [root@server7 etc]# ll-d/home/zhidata/

   drwxr-xr-x. 2 root root 6 9月   5 16:57/home/zhidata/

   [root@server7 etc]# useradd zhi

   root@server7 etc]# passwd zhi

   更改用户 zhi的密码。

   新的密码:

   无效的密码:密码少于 8个字符

   重新输入新的密码:

   passwd:所有的身份验证令牌已经成功更新。

    [root@server7 etc]# cat/etc/passwd| grep zhi

   zhi:x:1000:1000:zhi:/home/zhi:/bin/bash

   [root@server7 etc]# chmod 700/home/zhidata/

   [root@server7 etc]# chown-R zhi:zhi/home/zhidata/

   [root@server7 etc]# ll-d/home/zhidata/

   drwx------. 2 zhi zhi 6 9月   5 16:57/home/zhidata/

   2.4、创建/home/upload目录

#先建立对应账号与组名及UID

[root@server7 etc]# groupadd -g 222 nfs-upload

[root@server7 etc]# useradd-g 222-u 222-M nfs-upload

[root@server7 etc]# cat/etc/passwd|grep nfs

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

nfs-upload:x:222:222::/home/nfs-upload:/bin/bash

#创建目录,修改属主

[root@server7 etc]# mkdir/home/upload

[root@server7 etc]# chown-R nfs-upload:nfs-upload /home/upload/

[root@server7 etc]# ll-d/home/upload/

drwxr-xr-x. 2 nfs-upload nfs-upload 6 9月   6 08:38/home/upload/

2.5、重启NFS服务

[root@server7 etc]# systemctl restart  nfs

[root@server7 etc]# systemctl status  nfs

● nfs-server.service- NFS server and services

   Loaded: loaded(/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)

   Active: active(exited) since三 2017-09-06 08:41:40 CST; 8s ago

  Process: 9171 ExecStopPost=/usr/sbin/exportfs-f(code=exited, status=0/SUCCESS)

  Process: 9169 ExecStopPost=/usr/sbin/exportfs-au(code=exited, status=0/SUCCESS)

  Process: 9168 ExecStop=/usr/sbin/rpc.nfsd 0(code=exited, status=0/SUCCESS)

  Process: 9181 ExecStart=/usr/sbin/rpc.nfsd$RPCNFSDARGS(code=exited, status=0/SUCCESS)

  Process: 9180 ExecStartPre=/usr/sbin/exportfs-r(code=exited, status=0/SUCCESS)

 Main PID: 9181(code=exited, status=0/SUCCESS)

   CGroup:/system.slice/nfs-server.service

9月 06 08:41:40 server7.ctos.zu systemd[1]: Starting NFS server and services...

9月 06 08:41:40 server7.ctos.zu systemd[1]: Started NFS server and services.

[root@server7 etc]# tail/var/log/messages

Sep  6 08:41:40 server7 systemd: Started NFS Mount Daemon.

Sep  6 08:41:40 server7 rpc.mountd[9178]: Version 1.3.0 starting

Sep  6 08:41:40 server7 systemd: Started NFSv4 ID-name mapping service.

Sep  6 08:41:40 server7 systemd: Starting NFS server and services...

Sep  6 08:41:40 server7 kernel: NFSD: starting 90-second grace period(net c0c932c0)

Sep  6 08:41:40 server7 systemd: Started NFS server and services.

Sep  6 08:41:40 server7 systemd: Starting Notify NFS peers of a restart...

Sep  6 08:41:40 server7 sm-notify[9198]: Version 1.3.0 starting

Sep  6 08:41:40 server7 sm-notify[9198]: Already notifying clients; Exiting!

Sep  6 08:41:40 server7 systemd: Started Notify NFS peers of a restart.

2.6、查看NFS服务器共享出来目录

2.7、关闭防火墙、selinux

2.8查看配置

[root@server7~]# exportfs-v

/home/zhidata   192.168.8.7(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

/home/share     192.168.8.0/24(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

/home/upload    192.168.8.0/24(rw,wdelay,root_squash,all_squash,no_subtree_check,anonuid=222,anongid=222,sec=sys,rw,secure,root_squash,all_squash)

/home/nfs       192.168.8.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

/home/nfs       <world>(ro,wdelay,root_squash,all_squash,no_subtree_check,sec=sys,ro,secure,root_squash,all_squash)

四、客户端配置

4.1、客户端也要安装nfs-utils和rcpbind软件包

[root@client-A~]# yum install nfs-utils rpcbind-y

4.2、启动RPC

[root@client-A~]# service rpcbind start /systemctl start rpcbind

Starting rpcbind:                                          [  OK  ]

[root@client-A~]# service rpcbind status

rpcbind(pid  1926) is running...

[root@client-A~]# chkconfig--list|grep rpcbind

4.3、客户端关闭防火墙、selinux

[root@client-A~]# service iptables stop/systemctl stop firewalld

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Unloading modules:                               [  OK  ]

4.4测试网络

[root@client-A~]# ping 192.168.8.5

PING 192.168.8.5(192.168.8.5) 56(84) bytes of data.

64 bytes from 192.168.8.5: icmp_seq=1 ttl=64 time=2.16 ms

64 bytes from 192.168.8.5: icmp_seq=2 ttl=64 time=0.697 ms

64 bytes from 192.168.8.5: icmp_seq=3 ttl=64 time=0.346 ms

64 bytes from 192.168.8.5: icmp_seq=4 ttl=64 time=0.336 ms

64 bytes from 192.168.8.5: icmp_seq=5 ttl=64 time=0.335 ms

64 bytes from 192.168.8.5: icmp_seq=6 ttl=64 time=0.317 ms

64 bytes from 192.168.8.5: icmp_seq=7 ttl=64 time=0.512 ms

64 bytes from 192.168.8.5: icmp_seq=8 ttl=64 time=0.320 ms

^C

--- 192.168.8.5 ping statistics---

8 packets transmitted, 8 received, 0% packet loss, time 7555ms

rtt min/avg/max/mdev= 0.317/0.629/2.169/0.595 ms

4.5在客户端查看NFS服务器共享出来目录

[root@client-A~]# showmount-e 192.168.8.5

Export list for 192.168.8.5:

/home/nfs    (everyone)

/home/upload  192.168.8.0/24

/home/share   192.168.8.0/24

/home/zhidata 192.168.8.7

4.6、挂载NFS服务器上/home/nfs目录到本地/opt/data目录下

#临时挂载

#永久挂载

编辑、/etc/fstab文件,新增如下条目:

192.168.8.5:/home/nfs /opt/data/ nfs4 defaults 0 0

更多信息参考 nfs参数详解

#查看信息

[root@client-A data]# df-h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                      6.5G  644M  5.6G  11%/

tmpfs                 250M     0  250M   0%/dev/shm

/dev/sda1             477M   26M  426M   6%/boot

192.168.8.5:/home/nfs

                      8.0G  1.6G  6.5G  20%/opt/data

[root@client-A data]# mount

/dev/mapper/VolGroup-lv_root on/ type ext4(rw)

proc on/proc type proc(rw)

sysfs on/sys type sysfs(rw)

devpts on/dev/pts type devpts(rw,gid=5,mode=620)

tmpfs on/dev/shm type tmpfs(rw)

/dev/sda1 on/boot type ext4(rw)

none on/proc/sys/fs/binfmt_misc type binfmt_misc(rw)

sunrpc on/var/lib/nfs/rpc_pipefs type rpc_pipefs(rw)

nfsd on/proc/fs/nfsd type nfsd(rw)

192.168.8.5:/home/nfs on/opt/data type nfs(rw,vers=4,addr=192.168.8.5,clientaddr=192.168.8.7)

#创建文件测试

[root@client-A data]# touch testabc

touch: cannot touch `testabc': Read-only file system

4.7挂载/home/upload目录到客户端/opt/upload目录下

#挂载

[root@client-A data]# mkdir/opt/upload

[root@client-A data]# mount-t nfs  192.168.8.5:/home/upload  /opt/upload/

#查看挂载是否成功

[root@client-A data]# df-h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                      6.5G  644M  5.6G  11%/

tmpfs                 250M     0  250M   0%/dev/shm

/dev/sda1             477M   26M  426M   6%/boot

192.168.8.5:/home/nfs

                      8.0G  1.6G  6.5G  20%/opt/data

192.168.8.5:/home/upload

                      8.0G  1.6G  6.5G  20%/opt/upload

#客户端创建nfs-upload用户

[root@client-A~]# groupadd -g 222 nfs-upload

[root@client-A~]# useradd-g 222-u 222-m nfs-upload

#测试,可以看到创建的文件及目录默认属主为nfs-upload属组为nfs-upload

[zhi@client-A upload]$ pwd

/opt/upload

[zhi@client-A upload]$ ll

total 0

#测试创建文件

[zhi@client-A upload]$ touch test123

测试创建目录

[zhi@client-A upload]$ mkdir  testdir

[zhi@client-A upload]$ ll-a

total 4

drwxr-xr-x  3 nfs-upload nfs-upload   36 Sep  6 10:28.

drwxr-xr-x. 4 root       root       4096 Sep  6 18:22..

-rw-rw-r--  1 nfs-upload nfs-upload    0 Sep  6 10:28 test123

drwxrwxr-x  2 nfs-upload nfs-upload    6 Sep  6 10:28 testdir

#在客户端用root用户创建文件测试

root@client-A upload]# touch testabc

[root@client-A upload]# ll

total 0

-rw-r--r-- 1 root       root       0 Sep  6 10:31 nfstest123

-rw-r--r-- 1 nfs-upload nfs-upload 0 Sep  6 10:32 testabc

drwxrwxr-x 2 nfs-upload nfs-upload 6 Sep  6 10:28 testdir

可以看到用root用户创建的文件属主仍是nfs-upload

#测试删除文件

[zhi@client-A upload]$ rm test123

[zhi@client-A upload]$ ll

total 0

drwxrwxr-x 2 nfs-upload nfs-upload 6 Sep  6 10:28 testdir

阅读剩余
THE END