linux NFS安装配置及广大难题、/etc/exports配置文件、showmount命令

包含的软件包:
NFS需要5个RPM,分别是: setup-*:共享NFS目录在/etc/exports中定义
initscripts-*: 包括引导过程中装…

7,NFS性能测试:

 Unfsd doesn’t support NLM locking, and it’s causing the lockd daemon
to
be started (which again requires the portmapper to be installed etc.)

NFS服务器简单配置3.Client设置
启动portmap服务
#service portmap start
在client上挂载NFS 共享目录
#mount -t nfs 172.17.196.10:/home/test /mnt/share
//把nfs上的共享目录/home/test挂载到本机的/mnt/share下(/mnt/share目录必须首先创建)
连接成功后nfs的test目录就mount到本机share上了.

•yum install nfs-utils portmap
•chkconfig rpcbind on #chkconfig:更新和查询各运行级别的系统服务
•chkconfig nfs on
•service rpcbind start
•service nfs start

Linux NFS服务详解

NFS服务器简单配置5.会发生的问题
//使用者权限不符:
# mount -t nfs 172.17.196.10:/home/test /mnt/share
mount: 172.17.196.10:/home/test failed, reason given by server:
Permission denied
//portmap服务未启动
# mount -t nfs localhost:/home/test /home/nfs
mount: RPC: Port mapper failure – RPC: Unable to receive
或mount: RPC: Program not registered
//防火墙问题

NF服务器端命令:

2.RPC

NFS服务器简单配置4.调试监控
察看NFS 运行状态:
#nfsstat
察看RPC运行信息:
#rpcinfo -p IP
#rpcinfo -u hostname
exportfs [-aruv]
-a:全部挂载(或卸载) /etc/exports文件设定
-r:重新挂载 /etc/exports设定,也可以同步更新/etc/exports设定
-u:卸载某一目录
-v:在export时,将共享目录显示在屏幕上
在NFS
Server上重新挂载exports内容(一般用在及时更改过exports但又不想重新启动机器的时候)
#exportfs -rv
卸载全部mount 目录 exportfs -au,这样在NFS
Client上将看不到原来mount的目录
# exportfs -au
在NFS Server上显示已经mount上本机NFS目录的Client机器。
# showmount -a
All mount points on test:
172.17.196.11:/share
显示被mount出来的目录
# showmount -e 172.17.196.10
Export list for 172.17.196.10:
/share 172.17.196.11

  • pc.nfsd:主要复杂登陆权限检测等 必须
  • portmap:处理RPC程序客户端和服务器端的端口对应 必须
  • rpc.mountd:负责NFS的档案系统,当CLIENT端通过rpc.nfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理
    必须
  • lockd:处理通过RPC包的锁定请求
  • statd:为nfs锁定服务提供crash恢复功能
  • rquotad:处理当用户通过nfsmount到远程服务器时的配额
  • 守护进程启动顺序:rpc.portmap,
    rpc.mountd, rpc.nfsd, rpc.statd, rpc.lockd
    (新版本会自动跟着nfsd启动起来), rpc.rquotad

 iptables -A INPUT -p UDP –dport 111 -j ACCEPT

  1. Linux实战之NFS服务器客户端配置
  2. Linux实战攻略之NFS服务器安装配置
  3. Linux实战之NFS服务器图形化配置

•根据命令time dd if=/dev/zero of=/mnt/home bs=16k count=16384
来设置合理的WSIZE,RSIZE值
•根据nfs客户端数,在/etc/sysconfig/nfs配置文件中设置合适的nfs服务器端进程数RPCNFSDCOUNT,默认为8

 
a).在/tmp里面可以写入,但是由于no_root_squash的参数,改变了预设的root_squash
的设定值,所以在/tmp写入档案的所有人为root了.

NFS服务器简单配置2.Server 端配置 NFS 启动需要的服务:
rpc.nfsd: 管理Client是否能够登陆主机的权限,还包括登陆者的ID判别
rpc.mountd:管理NFS的文件系统,当client端通过rpc.nfsd登陆主机后
rpc.rquotad:磁盘配额管理
# vi /etc/exports
//编辑此文件增加NFS的共享内容,如果没有该文件则增加.
exports主要参数:
rw:可读写权限
ro:只读权限
no_root_squash:对于登陆NFS主机的共享目录用户如果是root的话则对该目录具有root权限。这样做极
不安全,建议不用为好!
root_squash:对于登陆NFS主机的共享目录用户使用者如果是root则它的权限将被压缩成匿名使用者,同
时它的UID和GID都会变成nobody那个系统账号的身份。
all_squash:不管登陆NFS主机用户身份如何,它的身份都会被压缩成匿名使用者,通常就是nobody
anonuid:anonuid=xxx,制定NFS服务器/etc/passwd中匿名用户的UID
anongid:anonuid=xxx,制定NFS服务器/etc/passwd中匿名用户的GID
sync:数据在请求时写入共享
async:NFS在写入数据前可响应请求
secure:NFS通过1024以下的安全端口发送
insecure:NFS通过1024以上端口发送
hide:不共享NFS目录的子目录
no_hide:共享NFS目录的子目录
设置实例:
/home/public 192.168.0.*(rw) *(ro) 
//允许192.168.0网段用户对/home/public有读写权限,其他用户只读权限
/home/test192.168.0.100(rw)
//允许IP为192.168.0.100的用户访问/home/test,并且有读写权限
/home/linux  *.linux.org(rw,all_squash,anonuid=40,anongid=40)
//只要是linux.org域用户都可以访问,而且是读写权限,不管你是哪个用户你的身份都被改成:UID=40这
个账号名称
/tmp *(rw,no_root_squash)
//允许所有用户对tmp有可读写权限,如果是root则对该目录有root权限
启动服务:
#service portmap start
#service nfs start

•1,通过命令rpcinfo
-p来查看portmap服务时候正常启动以及相应的端口(默认111)
•2,检查/etc/sysconfig/iptables防火墙设置,允许tcp,udp的111端口访问,然后service
iptables restart
•3,检查/etc/hosts.deny,/etc/hosts.allow看客户端连接是否被阻止了

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

NFS服务器简单配置1.安装软件 包含的软件包:
NFS需要5个RPM,分别是:
setup-*:共享NFS目录在/etc/exports中定义
initscripts-*: 包括引导过程中装载网络目录的基本脚本
nfs-utils-*:包括基本的NFS命令与监控程序
portmap-*: 支持安全NFS RPC服务的连接
quota-*:网络上共享的目录配额,包括rpc.rquotad 这个包不是必须的)
//检查系统是否安装好所需的套件
#rpm -qa | nfs
#rpm -qa | portmap
//启动nfs服务前必须启动portmap服务
nfs-utils包括rpc.nfsd和rpc.mountd
如果以上软件都安装了,下面就可以开始配置了.

NFS客户端用户映射:客户端登陆用户为root或者其他用户,然后根据服务器端nfs
server配置,相应客户端连接映射到nfs服务器端的用户为root或者指定用户(通过anonuid或者anongid来设定)、nfsnobody等。最后这个映射用户和共享目录的权限共同影响该客户端连接是否有读写权限。
手动设定客户端、服务器端用户映射,参数:map_static=/etc/nfs.map
/etc/nfs.map文件映射内容如下:
# remote local
gid 500 1000
uid 500 2003

  d)./home/linux中,root的身份也被压缩成UID=40的那个使用者了.

复制代码 代码如下:

 
b).在/home/public底下的身份被压缩成了nobody,因为预设的属性都具有root_squash,
所以档案所有人就变成了nobody.

  • RPC: Unable to receive。

 rw: 可擦写的权限

参考:NFS
学习笔记中关于nfs客户连接用户身份的描述,没有验证过下述的描述:

 -v:在export的时候,将分享的目录显示到荧屏上.

4,/etc/hosts.allow配置修改 /etc/hosts.allow,/etc/hosts.deny
描述哪些主机允许使用本地的INET服务。
默认这里好像可以不需要修改,不过最好设置成只允许需要的客户端机器连接,然后其他机器的连接都deny
#服务进程名:主机列表:当规则匹配时可选的命令操作
server_name:hosts-list[:command]
在/etc/hosts.allow中添加允许客户端访问的规则
ALL:127.0.0.1         #允许本机访问本机所有服务进程
ALL:192.168.0.135    
#允许192.168.0.135客户端机器访问本机所有服务进程
smbd:192.168.0.0/255.255.255.0    #允许网段的IP访问smbd服务
sshd:192.168.100.0/255.255.255.0       
#允许192.168.100.网段的IP访问服务器上的sshd进程
sshd:60.28.160.244                                 
#允许外网的60.28.160.244访问这个服务器上的sshd进程
在/etc/hosts.deny中 被禁制登陆的尝试连接信息也可以设置成记录下来并发到用户邮箱
sshd:ALL    #禁止所有

 #vi /.etc/hosts.allow

•服务器端共享目录权限查看ll -d /home
•修改服务器端共享目录权限chown 760
/home(文件所有者root有全权限、文件所有组用户有读写权限、其他用户无权限,然后把目录的组设置为nfsnobody)
•修改服务器端共享目录权限组拥有者为nfsnobody(cat /etc/passwd | grep
nob)
•chgrp nfsnobody /home
•成功在客户端创建新的文件!

 #exportfs -au //全部卸载

#www.hj8828.com,Port rpc.mountd should listen on. 
#MOUNTD_PORT=892 
 
#Port rpc.statd should listen on. 
#STATD_PORT=662 
 
#/usr/sbin/rpc.rquotad Port rquotad should listen on. 
#RQUOTAD_PORT=875 
 
#TCP port rpc.lockd should listen on. 
#LOCKD_TCPPORT=32803 
 
#UDP port rpc.lockd should listen on. 
#LOCKD_UDPPORT=32769  

 mount: RPC: Port mapper failure – RPC: Unable to receive 或者

3,防火墙设置修改

  /home/public 192.168.0.0/24(rw) *(ro)

修改iptables配置文件/etc/sysconfig/iptables,放开111(portmap服务端口),2049(nfs服务端口)

5.NFS server端的设定:

1, 通过yum或者rpm安装完portmap后,发现执行命令service portmap
start时报如下错误:portmap: unrecognized service。
CentOS6(Linux Kernel
2.6.32)中,portmap已经被rpcbind代替了,仔细查看安装信息就会发现,执行命令yum
install portmap时安装的就是rpcbind。安装完成后也可以通过命令:yum
whatprovides portmap来查看详细信息。

 #exportfs -rv //重新export一次

6,客户端挂载:执行下面的指令就可以把NFS服务器(IP地址为192.168.1.45)共享出来的/home挂装到本地的/mnt/nfs/home目录下。
showmount -e nfs-serverip: 查看nfs服务器共享出来的资源
mount -t nfs 192.168.1.45:/home /mnt/nfs/home

  portmap: ALL: allow

过程中出现的问题解决:

 NFS 本身的服务并没有提供资料传递的协议,但是 NFS
却能让我们进行档案的分享,
这其中的原因,就是 NFS
使用到一些其它相关的传输协议!而这些传输的协议,就是
使用到这个所谓的 RPC 的功能啰!这也就是说, NFS 本身就是使用 RPC
的一个
program 就是了!说的更白话一点, NFS 也可以视作是一个 RPC server
啦!同时要
注意到的是,在某些状况中,不但跑 NFS 的 Server 需要激活 RPC
的服务,连带的,
要挂载 NFS partition 的 Client 机器,也需要同步激活 RPC 才行!这样
Server 端与
Client 端才能藉由 RPC 的协议来进行 program port 的对应喔!NFS
主要在管理分享
出来的目录,而至于资料的传递,就直接将他丢给 RPC 的协议来运作就是了!

复制代码 代码如下:

 

您可能感兴趣的文章:

  • 详解Linux下的sudo及其配置文件/etc/sudoers的详细配置
  • 详解/etc/postfix下 main.cf
    配置文件

 就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其它相关
documents
与说明文件、执行档等的套件!这个就是 NFS 的主要套件

6, showmount -e nfs-server成功,正式挂载时报错:mount: mount to NFS
server ‘192.168.1.5’ failed: timed out (retrying).
编辑/etc/sysconfig/iptables时,相关端口的tcp端口允许通过,而udp不允许。其他可能的原因参考:mount
command fails with NFS server failed
error.
Disable name lookup requests from NFS server to a DNS server. 
or  NFS version used by the NFS client is other than version 3.

 c). /home/test 192.168.0.100(rw) //只对某部机器设置权限

2,服务器端配置文件/etc/exports:指定要共享的目录及权限 man exports

可能出问题的地方:

4, 客户端执行命令showmount -e nfs-server时,报错误:rpc mount export:
RPC: Unable to receive; errno = No route to host
配置文件:/etc/sysconfig/nfs
找到nfs服务相关端口设置的地方,并移除注释后,在iptables防火墙设置中指定允许相应端口的Udp,tcp流通过。
#MOUNTD_PORT=892
#STATD_PORT=662
#LOCKD_TCPPORT=32803
#LOCKD_UDPPORT=32769
iptables -A INPUT -p TCP –dport 662 -m state –state NEW -j ACCEPT
iptables -A INPUT -p UDP –dport 661 -m state –state NEW -j ACCEPT

  d).在/home/linux当中,不论是何种的user,身份都会被变成UID=40的这个帐号

5, showmount -e nfs-server成功,正式挂载时报错:mount: mount to NFS
server ‘192.168.1.5’ failed: System Error: No route to
host.这是由于nfs服务的默认端口2049被防火墙阻塞了,和上面类似修改iptables允许2049端口通过

/tmp  
 node3(ro,sync,wdelay,hide,secure,root_squash,no_all_squash,subtree_check,
secure_locks,mapping=identity,anonuid=-2,anongid=-2)

exportfs命令:如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:
exportfs [-aruv] -a :全部mount或者unmount /etc/exports中的内容 -r
:重新mount /etc/exports中分享出来的目录 -u :umount 目录 -v :在 export
的時候,将详细的信息输出到屏幕上。
showmount命令:显示NFS服务器的挂载信息。
showmount -e [nfs-server]:显示指定的NFS
SERVER上export出来的目录,不指定后面IP时查看的是本机作为NFS
Server时,对外共享的目录。。
rpcinfo -p命令:显示RPC信息 
-p参数:用rpc协议来探测主机host上使用的rpcbind,并显示所有已注册的RPC程序。
nfsstat命令:查看NFS的运行状态,对于调整NFS的运行有很大帮助

 

3, 客户端执行命令showmount -e nfs-server时,报错误:mount
clntudp_create: RPC: Program not registered。
nfs、rpcbind服务没有启动,使用chkconfig把nfs、rpcbind加到系统服务中并用service来启动
或者在/etc/hosts.allow中添加允许客户端访问的规则 ALL:192.168.0.135

 #vi /etc/exports

7,exports配置文件中目录权限属性设置为rw(默认为root_squash),但是在客户端mount目录执行touch命令时报错误:touch:
cannot touch `a’: Permission denied。解决:

 

2, 客户端挂载时,报错误mount clntudp_create: RPC: Port mapper failure

NFS服务详解 1.什么是NFS(Network FileSystem)
NFS 就是 Network FileSystem 的缩写,最早之前是由 Sun
所发展出来的。他最大的 功能就是可以透过网…

•客户端连接时候,对普通用户的检查,NO.1如果明确设定了普通用户被压缩的身份,那么此时客户端用户的身份转换为指定用户,NO.2如果NFS
server上面有同名用户,那么此时客户端登录账户的身份转换为NFS
server上面的同名用户,NO.3如果没有明确指定,也没有同名用户,那么此时
用户身份被压缩成nfsnobody
•客户端连接的时候,对root的检查,NO.1如果设置no_root_squash,那么此时root用户的身份被压缩为NFS
server上面的root,NO.2如果设置了all_squash、anonuid、anongid,此时root
身份被压缩为指定用户,NO.3如果没有明确指定,此时root用户被压缩为nfsnobody,NO.4如果同时指定no_root_squash与all_squash
用户将被压缩为
nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组

 -a: 全部挂载(或卸载) /etc/exports档案内的设定

配置文件每行分为两段:第一段为共享的目录,使用绝对路径,第二段为客户端地址及权限。
地址可以使用完整IP或网段,例如10.0.0.8或10.0.0.0/24,10.0.0.0/255.255.255.0当然也可以地址可以使用主机名,DNS解析的和本地/etc/hosts解析的都行,支持通配符,例如:*.chengyongxu.com

9.exportfs的用法

1,服务器端软件:安装nfs-utils和portmap(rpcbind) nfs-utils: 提供rpc.nfsd 及 rpc.mountd这两个NFS DAEMONS的套件
portmap: NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC
SERVER
PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的。通俗的说PortMap就是用来做PORT的mapping的。
NFS需要启动的DAEMONS:参考NFS
daemons

 #rpcinfo -p hostname(orIP)

5,修改共享出去的目录权限为760,并修改目录所有组为nfsnobody 参考:问题7

 o rpc.mountd:这个 daemon 主要的功能,则是在管理 NFS 的档案系统!当
Client
端顺利的通过 rpc.nfsd 而登入主机之后,在他可以使用 NFS server
提供的档案之前,
还会经过档案使用权限 ( 就是那个 -rwxrwxrwx 与 owner, group 那几个权限啦
) 的认证
程序!他会去读 NFS 的设定档 /etc/exports 来比对 Client
的权限,当通过这一关之后,
Client 就可以取得使用 NFS 档案的权限啦!(注:这个也是我们用来管理 NFS
分享之
目录的使用权限与安全设定的地方哩)

权限有:
rw:read-write,可读写;   
注意,仅仅这里设置成读写客户端还是不能正常写入,还要正确地设置共享目录的权限,参考问题7
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。

 all_squash: 不论登入 NFS
的使用者身份为何,他的身份都会被压缩成为匿名使用者,
通常也就是 nobody 啦!

默认情况下,CentOS6服务器版安装完成后,防火墙iptables配置中只放开了22端口。
在nfs配置文件/etc/sysconfig/nfs中指定nfs服务相关端口,并修改防火墙放开相应端口

 /home/test 192.168.0.100(rw)

#:允许ip地址范围在192.168.0.*的计算机以读写的权限来访问/home/work
目录。
/home/work 192.168.0.*(rw,sync,root_squash)
/home  192.168.1.105 (rw,sync)
/public  * (rw,sync)

***********************************************

 即增加-o nolock参数,原因:

 ro: 只读的权限

  portmap: server localhost not responding, timed out 

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

 portmap: .sdu.edu.cn    :allow

 为了担心会不小心将 NFS 端挂进来的具有 SUID 权限档案的程序执行,root可
以将NFS 所分享的目录以较为安全的情况挂载进来,可以

3.NFS 激活的 RPC daemons

 o rpc.nfsd:这个 daemon 主要的功能就是在管理 Client
是否能够登入主机的权限啦,
其中还包含这个登入者的 ID 的判别

7.权限问题