域名注册的网站有哪些,建设厅官方网站北京,公司宣传页设计印刷,广告网站设计怎么样From: http://www.goooogle.com.cn/Article/NFS-configuration-and-management.aspx 1. NFS概述 NFS即网络文件系统#xff0c;是主机间通过网络进行文件共享的网络协议#xff0c;最早由Sun公司提出的#xff0c;多用于Unix操作系统(Windows中也有相应版本的实现) 。 NFS…From: http://www.goooogle.com.cn/Article/NFS-configuration-and-management.aspx 1. NFS概述 NFS即网络文件系统是主机间通过网络进行文件共享的网络协议最早由Sun公司提出的多用于Unix操作系统(Windows中也有相应版本的实现) 。 NFS通常情况下在局域网中使用用于多台主机共享同一主机上的文件将源。由于NFS具有共享文件访问快、稳定性高等优越性能在工程系统中得到了广泛应用。 以下应用环境 OS: LINUX AS4/Cent OS 5.2 NFS Server: 192.168.146.53 hostname 53 NFS Client: 192.168.146.51 hostname 51 192.168.146.52 hostname 52 192.168.138.250 hostname 250
2. NFS安装 [root53 ~]# rpm -q nfs-utils portmap nfs-utils-1.0.9-33.el5 portmap-4.0-65.2.2.1 //系统中已安装两个软件包
2.1 NFS的安装包文件
2.2 portmap软件包 protmap软件包中的portmap服务为NFS和NIS等提供RPC服务的支持因此在安装时应先安装portmap软件包。 [root53 ~]# rpm -ql portmap /etc/rc.d/init.d/portmap /sbin/portmap /usr/sbin/pmap_dump /usr/sbin/pmap_set /usr/share/doc/portmap-4.0 /usr/share/doc/portmap-4.0/BLURB /usr/share/doc/portmap-4.0/CHANGES /usr/share/doc/portmap-4.0/README /usr/share/man/man8/pmap_dump.8.gz /usr/share/man/man8/pmap_set.8.gz /usr/share/man/man8/portmap.8.gz
2.3 nfs-utils软件包 nfs-utils软件包中提供了NFS服务器程序和相应的维护工具。 [root53 ~]# rpm -ql portmap /etc/rc.d/init.d/portmap /sbin/portmap /usr/sbin/pmap_dump /usr/sbin/pmap_set /usr/share/doc/portmap-4.0 /usr/share/doc/portmap-4.0/BLURB /usr/share/doc/portmap-4.0/CHANGES /usr/share/doc/portmap-4.0/README /usr/share/man/man8/pmap_dump.8.gz /usr/share/man/man8/pmap_set.8.gz /usr/share/man/man8/portmap.8.gz [root53 ~]# rpm -ql nfs-utils|head /etc/idmapd.conf /etc/rc.d/init.d/nfs /etc/rc.d/init.d/nfslock /etc/rc.d/init.d/rpcgssd /etc/rc.d/init.d/rpcidmapd /etc/rc.d/init.d/rpcsvcgssd /etc/sysconfig/nfs /sbin/mount.nfs /sbin/mount.nfs4 /sbin/rpc.lockd [root53 ~]# rpm -ql nfs-utils /etc/idmapd.conf /etc/rc.d/init.d/nfs /etc/rc.d/init.d/nfslock /etc/rc.d/init.d/rpcgssd /etc/rc.d/init.d/rpcidmapd /etc/rc.d/init.d/rpcsvcgssd /etc/sysconfig/nfs /sbin/mount.nfs /sbin/mount.nfs4 /sbin/rpc.lockd /sbin/rpc.statd /sbin/umount.nfs /sbin/umount.nfs4 /usr/sbin/exportfs /usr/sbin/gss_clnt_send_err /usr/sbin/gss_destroy_creds /usr/sbin/nfsstat /usr/sbin/nhfsgraph /usr/sbin/nhfsnums /usr/sbin/nhfsrun /usr/sbin/nhfsstone /usr/sbin/rpc.gssd /usr/sbin/rpc.idmapd /usr/sbin/rpc.mountd /usr/sbin/rpc.nfsd /usr/sbin/rpc.svcgssd /usr/sbin/rpcdebug /usr/sbin/showmount /usr/share/doc/nfs-utils-1.0.9 /usr/share/doc/nfs-utils-1.0.9/ChangeLog /usr/share/doc/nfs-utils-1.0.9/INSTALL /usr/share/doc/nfs-utils-1.0.9/KNOWNBUGS /usr/share/doc/nfs-utils-1.0.9/Makefile /usr/share/doc/nfs-utils-1.0.9/Makefile.am /usr/share/doc/nfs-utils-1.0.9/Makefile.in /usr/share/doc/nfs-utils-1.0.9/NEW /usr/share/doc/nfs-utils-1.0.9/README /usr/share/doc/nfs-utils-1.0.9/THANKS /usr/share/doc/nfs-utils-1.0.9/TODO /usr/share/man/man5/exports.5.gz /usr/share/man/man5/idmapd.conf.5.gz /usr/share/man/man5/nfs.5.gz /usr/share/man/man7/nfsd.7.gz /usr/share/man/man8/exportfs.8.gz /usr/share/man/man8/gssd.8.gz /usr/share/man/man8/idmapd.8.gz /usr/share/man/man8/lockd.8.gz /usr/share/man/man8/mount.nfs.8.gz /usr/share/man/man8/mountd.8.gz /usr/share/man/man8/nfsd.8.gz /usr/share/man/man8/nfsstat.8.gz /usr/share/man/man8/nhfsgraph.8.gz /usr/share/man/man8/nhfsnums.8.gz /usr/share/man/man8/nhfsrun.8.gz /usr/share/man/man8/nhfsstone.8.gz /usr/share/man/man8/rpc.gssd.8.gz /usr/share/man/man8/rpc.idmapd.8.gz /usr/share/man/man8/rpc.lockd.8.gz /usr/share/man/man8/rpc.mountd.8.gz /usr/share/man/man8/rpc.nfsd.8.gz /usr/share/man/man8/rpc.statd.8.gz /usr/share/man/man8/rpc.svcgssd.8.gz /usr/share/man/man8/rpcdebug.8.gz /usr/share/man/man8/showmount.8.gz /usr/share/man/man8/statd.8.gz /usr/share/man/man8/svcgssd.8.gz /usr/share/man/man8/umount.nfs.8.gz /var/lib/nfs /var/lib/nfs/etab /var/lib/nfs/rmtab /var/lib/nfs/rpc_pipefs /var/lib/nfs/statd /var/lib/nfs/state /var/lib/nfs/v4recovery /var/lib/nfs/xtab
3. NFS服务器的配置 3.1 NFS服务器的配置文件--exports exports文件在目录“/etc”下用于配置NFS服务器所提供的目录共享。此文件默认设置为空没有配置的输出的任何的目录共享这也是出于安全性的考虑这样即使系统启动NFS服务也不会提供任何的共享。 如果需要在NFS服务器中输出某个目录的共享需要先在exports文件中进行相应的设置。
3.2 exports文件的格式 exports文件中每行提供一个共享目录的设置设置行的格式如下所示 #要输出的共享目录名 客户端主机地址(设置选择) /home/share *(sync,ro) 在exports文件的设置行中共享目录和主机地址间用空格分隔主机地址之后紧随设置选项设置选项放置在括号中多个设置选项间用逗号分隔。 1) 共享目录 共享目录设置系统中需要输出作为共享的目录路径该目录用于存放网络中其它主机共享的文件。
2) 客户端主机地址 在exports文件中客户端主机地址的指定非常灵活可以是单个主机的IP地址或域名也只可以是指定网段中的主机或指定域中的主机如下 主机地址格式 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 客户端主机地址 说明 ──────────────────────────── 192.168.1.19 指定IP地址的主机 nfsclient.test.com 指定域名的主机 192.168.1.0/24 指定网段中的所有主机 *.test.com 指定域中的所有主机 * 所有主机 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3) 设置选项 exports文件中的设置选项较多经常使用的不多如下 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 设置选项 说明 ─────────────────────────────────────────── sync 设置NFS服务器同步写磁盘这样不会轻易丢失数据NFS服务器建议使用该选项 ro 设置输出的共享目录只读与rw不能同时使用 rw 设置输入的共享目录可读写与ro不能同时使用 secure NFS通过1024以下的安全TCP/IP端口发送 insecure NFS通过1024以上的端口发送 wdelay 如果多个用户要写入NFS目录则归组写入(默认) no_wdelay 如果多个用户要写入NFS目录则立即写入当使用async时无需此设置。 hide 在NFS共享目录中不共享其子目录 no_hide 共享NFS目录的子目录 subtree_check 如果共享/usr/bin之类的子目录时强制NFS检查父目录的权限(默认) no_subtree_check和上面相对不检查父目录权限 all_squash 共享文件的UID和GID映射匿名用户anonymous适合公用目录。 no_all_squash 保留共享文件的UID和GID(默认) root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认) no_root_squash root用户具有根目录的完全管理访问权限 anonuidxxx 指定NFS服务器/etc/passwd文件中匿名用户的UID anongidxxx 指定NFS服务器/etc/passwd文件中匿名用户的GID ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4) exports文件配置实例 在exports文件中同一输出共享目录对于不同的主机可以有不同的设置选项各主机间用空格分隔。 # more /etc/exports /home/share *(sync,ro) 192.168.1.19(sync,rw) /home/ftp 192.168.1.0/24(sync,ro) /home/public 192.168.1.19(sync,rw)
[root53 ~]# cat /etc/exports /nfs/mail 192.168.146.51(sync,rw) 192.168.146.52(sync,rw) /nfs/netdisk 192.168.146.51(sync,rw) 192.168.146.52(sync,rw) 192.168.138.250(sync,rw)
3.3 NFS服务器的启动与停止 1) 启动NFS服务器 [root53 ~]# service portmap start Starting portmap: [ OK ] [root53 ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ]
2) 查询NFS服务器状态 [rootlocalhost ~]# service portmap status portmap (pid 2910) is running... [rootlocalhost ~]# service nfs status rpc.mountd (pid 9740) is running... nfsd (pid 9737 9736 9735 9734 9733 9732 9731 9730) is running...
3) 停止NFS服务器 在需要停止NFS服务器运行时需要先停止nfs服务再停止portmap服务对于系统中有其他服务(如NIS服务) 需要使用portmap服务时不需要停止portmap服务 [root53 ~]# service nfs stop 关闭 NFS mountd [ 确定 ] 关闭 NFS 守护进程 [ 确定 ] 关闭 NFS quotas [ 确定 ] 关闭 NFS 服务 [ 确定 ] [root53 ~]# service portmap stop 停止 portmap [ 确定 ]
4) 设置NFS服务器的自动启动状态 // 查看 [root53 ~]# chkconfig --list portmap portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off [rootlocalhost ~]# chkconfig --list nfs nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off // 设置 [root53 ~]# chkconfig --level 345 portmap on [root53 ~]# chkconfig --level 345 nfs on // 查看设置结果 [root53 ~]# chkconfig --list portmap portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off [root53 ~]# chkconfig --list nfs nfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
3.4 showmount命令 在设置了NFS共享目录并正确启动了NFS服务器后可以使用showmount命令查询NFS服务器的共享目录状态。 1) 显示showmount命令帮助 [rootdatacenter ~]# showmount -h Usage: showmount [-adehv] [--all] [--directories] [--exports] [--no-headers] [--help] [--version] [host]
2) 显示主机的NFS服务器信息 showmount [NFS服务器主机地址] [root53 ~]# showmount Hosts on localhost.localdomain: [root53 ~]# showmount 192.168.146.53 Hosts on 192.168.146.53:
3) 显示NFS服务器的输出列表 showmount -e [NFS服务器主机地址] [root53 ~]# showmount -e Export list for localhost.localdomain: /nfs/mail 192.168.146.52,192.168.146.51 /nfs/netdisk 192.168.146.52,192.168.146.51
4) 显示NFS服务器中被挂载的目录 showmount -d [NFS服务器主机地址] [root53 ~]# showmount -d Directories on localhost.localdomain: /nfs/netdisk [root53 ~]# showmount -d 192.168.146.53 Directories on 192.168.146.53: /nfs/netdisk 5) 显示NFS服务器的客户机与被挂载的目录 showmount -a [NFS服务器主机地址] [root53 ~]# showmount -a All mount points on localhost.localdomain: 192.168.138.250:/nfs/netdisk
3.5 exportfs命令 usage: exportfs [-aruv] [host:/path] exportfs命令用于维护当前主机中NFS服务器的输出目录列表。 1) 重新输出共享目录(exportfs -rv) exportfs -rv使用NFS服务器重新读取exports文件中的设置使用该命令可以在改变exports文件设置后使设置在当前NFS服务器中生效而不需要重新启动NFS服务器。 [root53 ~]# exportfs -rv exporting 192.168.146.51:/nfs/netdisk exporting 192.168.146.52:/nfs/netdisk exporting 192.168.146.51:/nfs/mail exporting 192.168.146.52:/nfs/mail
2) 停止输出所有目录 # exportfs -auv
3) 输出所有目录 # exportfs -av
4. NFS客户端设置 可以便用mount命令把网络中NFS服务器的共享目录挂载到本机的文件系统中。 4.1 显示NFS服务器的输出共享目录 在便用mount命令挂载NFS服务器的共享目录之前先查询NFS服务器中是否允许本机连接相应的共享目录。 [root192.168.146.52 ~]# showmount -e 192.168.146.53 Export list for 192.168.146.53: /nfs/mail 192.168.146.52,192.168.146.51 /nfs/netdisk 192.168.146.52,192.168.146.51
4.2 挂载NFS服务器中的共享目录 mount NFS服务器地址:共享目录 本地挂载点目录 [root51 ~]# mount -h Usage: mount -V : print version mount -h : print this help mount : list mounted filesystems mount -l : idem, including volume labels So far the informational part. Next the mounting. The command is mount [-t fstype] something somewhere. Details found in /etc/fstab may be omitted. mount -a [-t|-O] ... : mount all stuff from /etc/fstab mount device : mount device at the known place mount directory : mount known device here mount -t type dev dir : ordinary mount command Note that one does not really mount a device, one mounts a filesystem (of the given type) found on the device. One can also mount an already visible directory tree elsewhere: mount --bind olddir newdir or move a subtree: mount --move olddir newdir One can change the type of mount containing the directory dir: mount --make-shared dir mount --make-slave dir mount --make-private dir mount --make-unbindable dir One can change the type of all the mounts in a mount subtree containing the directory dir: mount --make-rshared dir mount --make-rslave dir mount --make-rprivate dir mount --make-runbindable dir A device can be given by name, say /dev/hda1 or /dev/cdrom, or by label, using -L label or by uuid, using -U uuid . Other options: [-nfFrsvw] [-o options] [-p passwdfd]. For many more details, say man 8 mount .
# mount 192.168.146.53:/nfs/netdisk /netdisk/ // 挂载点“/netdisk/”是已经建立的空目录可以便用其它的空目录 [root250 ~]# mount 192.168.146.53:/nfs/netdisk /mnt/ 4.3 显示当前主机挂载的NFS目录 [root250 ~]# mount | grep net
4.4 卸载已挂载的NFS共享目录 [root250 ~]# umount /mnt/ // 目录“/mnt/”为NFS共享目录挂载点
5. NFS服务器配置程序 1) 安装NFS工具 // 查询有无安装相关软件包 # rpm -q redhat-config-nfs // 如没有可以下载安装或者通过光盘安装 # mount /mnt/cdrom/ # rpm -ivh /mnt/cdrom/RedHat/RPMS/redhat-config-nfs-x.x.x-x.rpm
2) 启动NFS服务器配置程序 X-Windows图形环境中: “主菜单”“系统设置”“服务器设置”“NFS服务器” 命令行 # redhat-config-nfs
6. NFS安全 NFS的不安全性主要体现于以下4个方面: 1、新手对NFS的访问控制机制难于做到得心应手,控制目标的精确性难以实现 2、NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制 3、较早的NFS可以使未授权用户获得有效的文件句柄 4、在RPC远程调用中,一个SUID的程序就具有超级用户权限.
加强NFS安全的方法 1、合理的设定/etc/exports中共享出去的目录最好能使用anonuidanongid以使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作为登陆验证系统
7NFS故障解决 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、cant 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的设定。