免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1357 | 回复: 0
打印 上一主题 下一主题

NFS文档 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-15 15:34 |只看该作者 |倒序浏览
以下文章为转载转载
一、NFS服务和RPC1、NFS启动的时候会启用未被使用的小于 1024 的端口作为监听传输使用,,并主动的向 RPC 注册,因此RPC知道NFS对应使用的端口。2、RPC使用固定的port 111端口来监听用户端的需求并且回报给用户端正确的NFS端口。让用户端可以连结到正确的NFS端口上。所以:NFS服务必须启动RPC服务 二、NFS的安装 [color="#0000ff"][root@linux ~]# rpm -qa | grep portmapportmap-4.0-65.2.2.1[root@linux ~]# rpm -qa | grep nfssystem-config-nfs-1.3.23-1.el5nfs-utils-lib-1.0.8-7.2.z2nfs-utils-1.0.9-33.el5如果没有以上的文件。则通过
[color="#0000ff"]yum
install nfs-utils 安装 三、NFS的档案存取权限  当 用户dmtsai 进入去访问到NFS共享目录后,所以可能就会发现几个情况∶
  • [color="#000088"]NFS server/NFS client 刚好有相同的帐号与群组则此时使用者可以直接以 dmtsai 的身份进行伺服器所提供的档案系统之存取。
  • [color="#000088"]NFS server 的 501 这个 UID 帐号对应为 vbird若 NFS 伺服器上的 /etc/passwd 里面 UID 501 的使用者名称为 vbird 时, 则用户端的 dmtsai 可以存取伺服器端的 vbird 这个使用者的档案喔![color="#000088"]只因为两者具有相同的 UID 而已。这就造成很大的问题了!因为没有人可以保证用户端的 UID 所对应的帐号会与伺服器端相同, 那伺服器所提供的资料不就可能会被错误的使用者乱改?
  • [color="#000088"]NFS server 并没有 501 这个 UID另一个极端的情况是,在伺服器端并没有 501 这个 UID 的存在,则此时 dmtsai 的身份在该目录下会被压缩成匿名者, 一般 NFS 的匿名者会以 UID 为 65534 为其使用者,早期的 Linux distributions 这个 65534 的帐号名称通常是 nobody ,我们的 CentOS 则取名为 nfsnobody 。
  • [color="#000088"]如果使用者身份是 root 时有个比较特殊的使用者,那就是每个 Linux 主机都有的 UID 为 0 的 root 。 想一想,如果用户端可以用 root 的身份去存取伺服器端的档案系统时,那伺服器端的资料哪有什么保护性? 所以[color="#000088"]在预设的情况下, root 的身份会被主动的压缩成为匿名者。 四、NFS服务的配置文档[color="#0000ff"][root@linux ~]# vi /etc/exports[color="#0000ff"] [color="#0000ff"]/tmp          *(rw,no_root_squash,sync)/home/public  192.168.1.0/24(rw,sync)    *(ro,sync)/home/test    192.168.1.100(rw,sync)/home/linux   *.zwt.com(rw,all_squash,anonuid=502,anongid=502,sync)[color="#0000ff"]  [color="#990000"]权限参数说明∶[color="#990000"]rw∶read-write,可读写的权限;[color="#990000"]ro∶read-only,只读的权限;[color="#990000"]sync∶资料同步写入到记忆体与硬盘当中;[color="#990000"]async∶资料会先暂存于记忆体当中,而非直接写入硬盘![color="#990000"]no_root_squash∶如果登录NFS 主机使用分享目录的用户是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限! 这个项目不安全,不建议使用![color="#990000"]root_squash∶在如果登录NFS 主机使用分享目录的用户是 root 的,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody(nfsnobody) 那个系统帐号的身份;[color="#990000"]all_squash∶不论登录 NFS 的用户身份为何, 他的身份都会被压缩成为匿名使用者,通常也就是 nobody(nfsnobody)[color="#990000"]anonuid∶anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody(nfsnobody),但是您可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于您的 /etc/passwd 当中![color="#990000"]anongid∶同 anonuid ,但是变成 group ID 就是了! [color="#990000"] [color="#990000"] [color="#990000"]依照上文编辑的exports后,权限会是什么情况呢?让我们来检查一下∶
  • [color="#000088"]用户端与主机端具有相同的 UID 与帐号∶假设我在 192.168.1.100 登入这部 NFS (IP 假设为 192.168.1.2) 主机,并且我在 192.168.1.100 的帐号为 dmtsai 这个身份,同时,在这部 NFS 上面也有 dmtsai 这个帐号, 并具有相同的 UID ,果真如此的话,那么∶
  • 由于 192.168.1.2 这部 NFS 主机的 /tmp 权限为 -rwxrwxrwt ,所以我 (dmtsai 在 192.168.1.100 上面) 在 /tmp 底下具有存取的权限,并且写入的档案所有人为 dmtsai ;
  • 在 /home/public 当中,由于我有读写的权限,所以如果在 /home/public 这个目录的权限对于 dmtsai 有开放写入的话,那么我就可以读写,并且我写入的档案所有人是 dmtsai 。但是万一 /home/public 对于 dmtsai 这个使用者并没有开放可以写入的权限时, 那么我还是没有办法写入档案喔!这点请特别留意!
  • 在 /home/test 当中,我的权限与 /home/public 相同的状态!还需要 NFS 主机的 /home/test 对于 dmtsai 有开放权限;
  • 在 /home/linux 当中就比较麻烦!因为不论您是何种 user ,您的身份一定会被变成 UID=40 这个帐号!所以,这个目录就必需要针对 UID = 40 的那个帐号名称,修改他的权限才行!
  • [color="#000088"]用户端与主机端的帐号并未相同时∶假如我在 192.168.1.100 的身份为 vbird ,但是 192.168.1.2 这部 NFS 主机却没有 vbird 这个帐号时,情况会变成怎样呢?
  • 我在 /tmp 底下还是可以写入,但是写入的档案所有人变成 nobody 了;
  • 我在 /home/public 里面是否可以写入,还需要视 /home/public 的权限而定,不过,反正我的身份就被变成 nobody 了就是;
  • /home/test 的观点与 /home/public 相同!
  • /home/linux 底下,我的身份就被变成 UID = 40 那个使用者就是了!
  • [color="#000088"]当用户端的身份为 root 时∶假如我在 192.168.1.100 的身份为 root 呢? root 这个帐号每个系统都会有呀!权限变成怎样呢?
  • 我在 /tmp 里面可以写入,并且由于 no_root_squash 的参数,改变了预设的 root_squash 设定值,所以在 /tmp 写入的档案所有人为 root 喔!
  • 我在 /home/public 底下的身份还是被压缩成为 nobody 了!因为预设属性里面都具有 root_squash 呢!所以,如果 /home/public 有针对 nobody 开放写入权限时,那么我就可以写入,但是档案所有人变成 nobody 就是了!
  • /home/test 与 /home/public 相同;
  • /home/linux 的情况中,我 root 的身份也被压缩成为 UID = 40 的那个使用者了![color="#990000"][root@linux ~]# /etc/init.d/portmap start# portmap 根本就不需要设定!只要直接启动他就可以啦![color="#000000"]启动之后,会出现一个 port 111 的 sunrpc 的服务,那就是 portmap 啦!也就是RPC服务。[color="#0000ff"][root@linux ~]# /etc/init.d/nfs start[color="#0000ff"][root@linux ~]# /etc/init.d/nfslock start(增加一些 NFS 伺服器的资料一致性功能)[color="#0000ff"][root@linux nfs]# /etc/init.d/nfslock restartStopping NFS locking:                                      [  OK  ]Stopping NFS statd:                                        [  OK  ]Starting NFS statd:                                        [  OK  ] 五、NFS应用的相关命令 1、[color="#0000ff"]查看下RPC服务的注册状态[color="#0000ff"][root@linux nfs]# rpcinfo -p localhost(查看下RPC服务的注册状态)   program vers proto   port    100000    2   tcp    111  portmapper    100000    2   udp    111  portmapper    100024    1   udp    868  status    100024    1   tcp    871  status    100011    1   udp    796  rquotad    100011    2   udp    796  rquotad    100011    1   tcp    799  rquotad    100011    2   tcp    799  rquotad    100003    2   udp   2049  nfs    100003    3   udp   2049  nfs    100003    4   udp   2049  nfs    100021    1   udp  32771  nlockmgr    100021    3   udp  32771  nlockmgr    100021    4   udp  32771  nlockmgr    100003    2   tcp   2049  nfs    100003    3   tcp   2049  nfs    100003    4   tcp   2049  nfs    100021    1   tcp  33250  nlockmgr    100021    3   tcp  33250  nlockmgr    100021    4   tcp  33250  nlockmgr    100005    1   udp    823  mountd    100005    1   tcp    826  mountd    100005    2   udp    823  mountd    100005    2   tcp    826  mountd    100005    3   udp    823  mountd    100005    3   tcp    826  mountd[color="#0000ff"]可以发现
    [color="#0000ff"]
    • portmap 启动的 port 在 111;
    • [color="#990000"]NFS 启动的 port 在 2049;
    • [color="#990000"]其他 rpc.daemons 启动的 port 则是随机产生的,因此需向 port 111 注册。
    2、查看NFS服务关于目录权限设定的资料(可以看到一些默认的权限参数。比如root_squash,no_all_squash,anonuid=65534等。) [color="#0000ff"][root@linux nfs]# tail /var/lib/nfs/etab/home/public    192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)/home/test      192.168.1.100(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)/home/linux     *.zwt.com(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=502,anongid=502)/home/public    *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)/tmp    *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)3、显示设定的NFS共享(exports资料内容)
    [color="#0000ff"][root@linux nfs]# showmount -e localhostExport list for localhost:/tmp         */home/linux  *.zwt.com/home/test   192.168.1.100/home/public (everyone)
    4、重新挂载一次 /etc/exports 的设定[color="#0000ff"][root@linux ~]# exportfs -arvexporting 192.168.0.100:/home/testexporting 192.168.0.0/24:/home/publicexporting *.linux.org:/home/linuxexporting *:/home/publicexporting *:/tmp六、NFS用户端使用。
    你要如何挂载 NFS 伺服器所提供的档案系统呢?基本上,可以这样做∶
  • 确认本地端已经启动了 portmap 服务!
  • 扫瞄 NFS 伺服器分享的目录有哪些,并了解我们是否可以使用 (
    [color="#0000ff"]showmount
    );
  • 在本地端建立预计要挂载的挂载点目录 (mkdir);
  • 利用 mount 将远端主机直接挂载到相关目录。[[color="#0000ff"]root@linux ~]# /etc/init.d/portmap start[color="#0000ff"][root@linux ~]# /etc/init.d/nfslock start# 一般来说,系统预设会启动 portmap ,不过鸟哥之前关闭过,所以要启动。# 另外,如果伺服器端有启动 nfslock 的话,用户端也要启动才能生效! [color="#0000ff"][root@linux ~]# showmount -e  NFSserver的IP[color="#0000ff"] [color="#0000ff"][root@linux ~]# mkdir -p /home/nfs/public[color="#0000ff"] [color="#0000ff"][root@linux ~]# mount -t nfs 192.168.1.2:/home/public /home/nfs/public# 注意一下挂载的语法!『 -t nfs 』指定档案系统类型,# IP:/dir 则是指定某一部主机的某个提供的目录! [color="#0000ff"][root@linux ~]# dfFilesystem    1K-blocks      Used Available Use% Mounted on....中间省略....192.168.1.2:/home/public                       1984032     36800   1844800   2% /home/nfs/public[root@linux ~]# umount /home/nfs/public  此外。除了 NFS 服务器需要保护之外,我们取用人家的 NFS 档案系统也需要自我保护才行啊! 那要如何自我保护啊?可以透过 mount 的指令参数来做。 [color="#0000ff"][root@linux nfs]# umount /home/nfs/public[root@linux nfs]# dfFilesystem           1K-blocks      Used Available Use% Mounted on/dev/sda7             10371664   3385124   6451176  35% //dev/sda5              1984016     36812   1844792   2% /home/dev/sda3              4956316    204208   4496276   5% /var/dev/sda2              4956316    141220   4559264   4% /opt/dev/sda1               101086     12512     83355  14% /boottmpfs                   237656         0    237656   0% /dev/shm[root@linux nfs]# mount -t nfs -o nosuid,noexec,nodev,rw \> 192.168.1.2:/home/public /home/nfs/public[color="#0000ff"]# 通常这样你所挂载的这个档案系统就只能作为资料存取之用了[color="#0000ff"][root@linux nfs]# mount[color="#0000ff"][color="#0000ff"]省略...192.168.1.2:/home/public on /home/nfs/public type nfs (rw,noexec,nosuid,nodev,addr=192.168.1.2)更多的参数可以参考 man nfs 。[color="#000000"]* 将 NFS设置 开机即挂载[color="#0000ff"][root@linux ~]# vi /etc/fstab192.168.0.2:/home/public   /home/nfs/public   nfs   nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768   0   0[color="#0000ff"] [color="#0000ff"] [color="#000000"]七、使用将NFS自动挂载卸载功能。 [color="#000000"]当有客户端数据包需求的时候,则自动挂载NFS服务端得共享目录,超过一定时间后,客户端则主动卸载。[color="#000000"]可以使用autonfs功能。 1、首先在用户端编辑/etc/auto.master[color="#0000ff"][root@linux ~]# vi /etc/auto.master/home/nfs  /etc/auto.nfs[color="#0000ff"] [color="#0000ff"]# [color="#000000"]内容很简单,只要有用户端的用来提供挂载的主目录和 一个挂载内容的文件即可。 这个文件名可以自行设定的,通常可使用 /etc/auto.nfs 来命名 2、建立并编辑这个 提供挂载内容信息的文件。 [color="#0000ff"][root@linux ~]# vi /etc/auto.nfspublic  -rw,bg,soft,rsize=32768,wsize=32768 192.168.1.2:/home/publictest -rw,bg,soft,rsize=32768,wsize=32768 192.168.1.2:/home/testtemp    -rw,bg,soft,rsize=32768,wsize=32768 192.168.1.2:/tmp  /home/nfs/public  /home/nfs/test /home/nfs/temp可以不需要提前建立的3、启动服务并使用 [color="#0000ff"][root@linux ~]# /etc/init.d/autofs start[color="#0000ff"] [color="#0000ff"][root@linux ~]# cd /home/nfs/public[color="#0000ff"][root@linux ~]# mount; df不会有跟192.168.1.2有关的NFS挂载信息[color="#0000ff"][root@linux public]# pwd/home/nfs/public #这个目录产生了,如果mount;df一下的话,也能看到跟192.168.1.2有关挂载信息了。
                   
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76272/showart_2071013.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP