Chinaunix首页 | 论坛 | 博客
  • 博客访问: 563257
  • 博文数量: 287
  • 博客积分: 27
  • 博客等级: 民兵
  • 技术积分: 547
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-01 20:20
文章分类

全部博文(287)

文章存档

2015年(1)

2014年(95)

2013年(90)

2012年(101)

分类: LINUX

2014-02-17 08:49:16

原文地址:NFS文件系统 作者:YGril

RPC 是基于TCP的端口 111

NFS:网络文件系统
主要用于类unix系统上进行文件共享服务
基于RPC才能提供网络共享服务
portmap软件包
提供了运行portmap服务所需的文件。portmap服务为NFS等服务器程序提供RPC服务的支持
nfs-utils软件包
提供了NFS服务器的启动脚本和管理维护工具

可知nfs不受wrap限制


redhat6的启动顺序
[root@localhost pam.d]#service rpcbind restart
[root@localhost pam.d]# service nfs restart
Shutting down NFS daemon:                                  [FAILED]
Shutting down NFS mountd:                                  [FAILED]
Shutting down NFS quotas:                                  [FAILED]
Starting NFS services: 

redhat5的启动顺序
[root@localhost pam.d]#service portmap restart
[root@localhost pam.d]# service nfs restart

[root@localhost pam.d]# netstat -ntpl |grep 111通过端口号查看服务是否开启
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1615/rpcbind       
tcp        0      0 :::111                      :::*        
               LISTEN      1615/rpcbind  
              
 要在客户端使用服务器端的nfs服务,客户端也要安装nfs软件,并启动相应服务
 redhat5: service  portmap restart
 redhat6:service prcbind restart
 
NFS与RPC的关系
  

 


NFS的不同功能由不同的守护进程提供。
NFS的每个功能就会由RPC固定或随机分配的端口进行监听。
portmap :主要负责端口的映射工作
rpc.nfsd:主要负责登录权限检测。
rpc.mountd:负责管理NFS的文件系统,检测权限
rpc.rquotad:负责远程磁盘限额服务
rpc.lockd:负责管理文件的锁定,防止同时写入
rpc.statd:负责检查共享目录的一致性


在NFS服务器主机中进行设置
安装NFS服务器软件包
启动NFS服务器程序
设置NFS共享目录输出

在NFS客户机中进行设置
使用mount命令挂载NFS服务器中的NFS共享目录到文件系统中
通过NFS文件系统的挂载点目录访问NFS服务器中的共享内容
正常情况“nfs-utils”和“portmap”两个软件包在RHEL5系统中是默认安装的


/etc/exports:NFS主配置文件
默认存在,但无内容
/etc/init.d/nfs:NFS脚本文件
service nfs restart
/etc/init.d/portmap:portmap脚本文件

/etc/exports文件配置NFS服务器中输出的共享目录
/home/share     *(sync,ro)

exports文件中“客户端主机地址”字段可以使用多种形式表示主机地址

 


exports文件中的“配置选项”字段放置在括号对(“( )”)中 ,多个选项间用逗号分隔
sync:设置NFS服务器同步写磁盘,这样不会轻易丢失数据,建议所有的NFS共享目录都使用该选项
ro:设置输出的共享目录只读,与rw不能共同使用
rw:设置输出的共享目录可读写,与ro不能共同使用
root_squash:root用户访问共享目录的身份会自动变成nobody的身份
no_root_squash:root用户会以自己的真实身份去访问共享目录,不安全不建议使用

rpcinfo命令
-p 显示出所有端口与进程信息
[root@emily mnt]# rpcinfo -p (ip)
   program vers proto   port  service
    100000    2   udp    111  portmapper
    100011    1   udp    875  rquotad
    100005    1   udp  41799  mountd
    100227    2   tcp   2049  nfs_acl
    100003    4   udp   2049  nfs
    100021    4   tcp  35362  nlockmgr
修改/etc/sysconfig/nfs文件,使rquotad,mountd, statd 和 lockd 可以被强制使用一个大于1024的静态端口

exportfs命令
重新共享/etc/exports更改的目录资源
-a:全部mount或者umount
-r:重新输出mount
-u:卸载umount
-v :显示详细共享目录信息

重新输出共享目录,使nfs服务器重新读取exports文件中的设置
exportfs -rv
停止输出所有目录,停止当前主机中NFS服务器的所有目录输出
exportfs -auv

 

[root@emily share]# exportfs  -av
exporting *:/share
[root@emily share]# exportfs  -v 查看详细信息
/share         (rw,wdelay,root_squash,no_subtree_check)

[root@emily share]# exportfs  -arv 不要刷新服务,重新加载/etc/exports文件
exporting *:/lianxi
exporting *:/share


showmount命令
显示服务器共享了哪些目录以及目录的权限
-e  显示NFS服务器的共享目录信息
-d  仅显示被客户端挂载的目录名

显示当前本机中NFS服务器的输出列表
showmount -e
显示指定NFS服务器中的共享目录列表
 showmount -e 192.168.152.131
客户机显示NFS服务器的输出
showmount -e 192.168.152.131

挂载NFS服务器中的共享目录
mount -t nfs 192.168.152.131:/home/share/        /mnt/

显示当前主机挂载的NFS共享目录,使用mount命令查看
192.168.152.131:/home/share/ on /mnt type nfs (rw,addr=192.168.152.131)
卸载系统中已挂载的NFS共享目录 ,使用umount命令卸载NFS文件系统
umount /mnt/

windows系统挂载nfs的步骤:

启用nfs服务
  


查看服务器共享信息

  

挂载为windows系统未使用的盘符,它地址的使用\\是与linux系统是相反的
  

查看共享磁盘t

  

软NFS挂载、硬NFS挂载、可中断NFS挂载
现在默认使用的是可中断NFS硬挂载
如果NFS服务器死机,那客户端访问共享文件夹的进程将会死等待直到服务器响应,但可以切换终端,用kill -9杀死相应进程号

使用soft选项软NFS挂载
如果NFS服务器死机,那客户端访问共享文件夹的进程将会死等待直到服务器响应,但等待一段时间后自动中断,并显示输入输出错误
[root@emily ~]# mount -o soft,timeo=2 10.0.1.63:/share /mnt 软中断,超时2秒自动退出
[root@emily ~]# cd /mnt
[root@emily mnt]# ls
 passwd  YY
[root@emily mnt]# service rpcbind stop中止服务
[root@emily mnt]# service nfs stop

[root@emily mnt]# ls
ls: cannot open directory .: Input/output error


NFS常见错误提示

nfs服务没有启动

解决方法:先启动rpcrind服务,再启动nfs服务

protmap服务没有启动


没有权限挂载共享目录

 

nfs试验总结:
ntf挂载后,客户机的挂载点inode是服务器的共享目录的inode号
普通用户一般不能挂载nfs,除非root下放权限,同时普通用户可以在在挂载点删除文件,新建文件,
为了防止别人修改你的文件,可以在共享目录加t权限,当客户机的普通用户uid和服务器uid相同,则会在
客户机新建的文件,在服务器上显示的属主和属组为服务器uid的名字

[root@emily /]# showmount -e 10.0.63.88 当出现这条错误时,应该是客户端是redhat5,没有重启服务
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

服务器间配置
[root pam.d]# vim /etc/exports  在/etc/exports 下写入共享目录及配置
/share  10.0.1.63(sync,rw)

 

配置文件的要求:

 

客户端:
[root@emily Desktop]# showmount  -e 10.0.63.4 (前提安装nfs软件)
Export list for 10.0.63.4:
/share 10.0.1.63

[root@emily Desktop]# mount 10.0.63.4:/share /mnt
[root@emily Desktop]# cd /mnt
[root@emily mnt]# ll
total 4
-rw-r--r-- 1 nobody nobody    0 Jul 31 20:33 ff
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:33 tt
[root@emily mnt]# touch gg(不能新建文件,给服务器端/share目录o+w权限)
touch: cannot touch `gg': Permission denied
[root@emily mnt]# touch gg
touch: cannot touch `gg': Permission denied
[root@emily mnt]# touch gg
[root@emily mnt]# mkdir fff
[root@emily mnt]# ll
total 8
-rw-r--r-- 1 nobody nobody    0 Jul 31 20:33 ff
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:34 fff
-rw-r--r-- 1 nobody nobody    0 Jul 31 20:34 gg
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:33 tt
[root@emily mnt]# rm -ff

[root@emily mnt]# rm -rf ffgg 当服务器共享目录加o+t权限,则不能删除别人的文件
rm: cannot remove `ffgg': Operation not permitted
[haha@emily mnt]$ ll切换用户,因为是redhat6,所以效果没出来
total 8
-rw-r--r-- 1 nobody nobody    0 Jul 31 20:36 ff
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:34 fff
-rw-r--r-- 1 nobody nobody    0 Jul 31 20:36 ffgg
-rw-r--r-- 1 nobody nobody    0 Jul 31 20:34 gg
-rw-rw-r-- 1 nobody nobody    0 Jul 31 20:38 haha
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:33 tt


redhat5做服务器
客户机的显示:
[ff@emily lianxi]$ ll   文件ff的拥有者到了服务器端却变成了hahaw用户,这是因为linux系统只认uid号,(ff用户和hahawuid相同)
total 4
-rw-rw-r-- 1 ff        ff           0 Aug  1 09:47 ff
-rw-r--r-- 1 root      root      1593 Aug  1 08:13 passwd
-rw-r--r-- 1 nfsnobody nfsnobody    0 Aug  1 09:33 tt

服务器端的显示:

=======================================================================

自动挂载器
当需要访问某个分区或者共享目录中的文件时,可以自动挂载这个分区或共享目录
当不再需要这个文件时,可以自动卸载这个分区或共享目录
会自动监控某个神奇的目录,一旦你访问这个目录下某个挂载点里的对象时,就会自动挂载

自动挂载器配置
软件包:autofs
/etc/auto.master主配置文件,设置神奇目录

TCP Wrappers实现访问控制
主要配置文件
/etc/hosts.allow
/etc/hosts.deny

 

保护机制的实现方式
方式1:通过tcpd主程序对其他服务程序进行包装
方式2:由其他服务程序调用libwrap.so.*链接库

TCP Wrappers的访问控制原则
首先检查 hosts.allow 文件,若找到相匹配的策略,则允许访问
否则继续检查 hosts.deny 文件,若找到相匹配的策略,则拒绝访问
如果两个文件中都没有相匹配的策略,则允许访问

应用示例:
仅允许地址为 61.63.65.67 以及 192.168.2.0/24 网段的客户机访问sshd服务

[root@localhost ~]# vi /etc/hosts.allow
sshd:61.63.65.67,192.168.2.*
[root@localhost ~]# vi /etc/hosts.deny
sshd:ALL

阅读(661) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~