NFS

作者: 其实我很dou | 来源:发表于2018-01-21 22:38 被阅读0次

    NFS

    一. 概述

    • NFS(Network File System): 可以让客户端把服务器的共享目录挂载到本机使用, 就像使用本机分区一样, 非常方便
    • NFS是被RPC服务管理的, NFS需要到RPC服务去注册自己主进程端口号以及子进程端口号, 所以必须安装RPC的主程序rpcbind
    • NFS端口: 2049
    • RPC端口: 111
    • NFS daemon端口, 随机

    二. 权限说明

    linux系统目录权限会生效
    NFS服务共享权限也会生效

    NFS没有用户登录认证机制, 所以客户端登录到服务器之后, 会把客户端的身份映射到服务器端, 就会出现以下四种情况:

    • client和server上刚好有相同的账户和用户组, 用户名和UID都要相同, 则client上用户可以在server上按照用户权限使用文件
    • 当client和server上拥有相同的UID, 但是用户名不同, 假设client有用户aa(UID:500), server上有用户bb(UID:500), 在client上使用server共享目录时, 身份识别为bb, 但是以client看, 是aa在操作, 因为Linux权限绑定在UID上, 此种情况尽量避免, 容易出现逻辑混乱
    • server上没有client的UID, 则client用户访问server时, 会将此用户自动转变为nfsnobody(UID:65534)用户
    • client上是root使用共享, 默认吧root也转变为nfsnobody, 服务器端可以修改配置文件, 允许root访问nfs服务器

    三. NFS服务端设置

    • 服务端: web01(192.168.5.131)
    • 客户端: web02(192.168.5.132)

    NFS主程序: nfs-utils
    RPC主程序: rpcbind(旧版本是portmap)

    配置文件: /etc/exports

    • 将nfs和rpcbind设置开机自启动
    [root@web01 ~]# chkconfig --level 2345 nfs on
    [root@web01 ~]# chkconfig --list | grep nfs
    nfs             0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    nfslock         0:关闭    1:关闭    2:关闭    3:启用    4:启用    5:启用    6:关闭
    [root@web01 ~]# chkconfig --level 2345 rpcbind on
    [root@web01 ~]# chkconfig --list | grep rpcbind
    rpcbind         0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    
    • 启动rpcbind和nfs, 需要先启动rpcbind
    [root@web01 ~]# service rpcbind start
    正在启动 rpcbind:                                         [确定]
    [root@web01 ~]# service nfs start
    启动 NFS 服务:                                            [确定]
    启动 NFS mountd:                                          [确定]
    启动 NFS 守护进程:                                        [确定]
    正在启动 RPC idmapd:                                      [确定]
    
    • 查看进程
      • rpc.rquotad: nfs配额
      • rpc.mountd: 处理客户端挂载
      • nfsd: nfs守护进程
      • rpcbind: rpcc守护进程
    • RPC服务注册情况
      rpcinfo -p IP或主机名

    四. NFS配置文件

    /etc/exports
    共享目录 客户端 (权限)

    • 共享目录

    • 客户端:

      • 指定IP: 192.168.5.132
      • 指定网段: 192.168.44.0/24(表示整个网段可以访问)
      • 指定主机名:
      • 所有主机: *
    • 常用权限

      • rw: 读写
      • ro: 只读
      • all_squash: 不论登陆是谁, 都压缩为匿名用户nfsnobody
      • no_all_squash: bu压缩
      • root_squash: 如果登陆的是root, 压缩为nfsnobody
      • no_root_squash: 允许root身份登陆(不推荐)
      • anonuid: 把所有登陆用户, 不再压缩为匿名用户, 而是压缩为指定uid用户
      • sync: 同步写入
      • async: 异步写入, 现将数据先保存在内存缓冲区中, 必要时才写入磁盘

    示例如下
    修改配置文件vi /etc/exports

    /home/share 192.168.5.132(rw,no_root_squash) *(ro)
    

    常用命令

    • exportfs 选项
      选项:

      • -a: 按照配置文件挂载/卸载所有目录
      • -r: 重新挂载
      • -u: 卸载
      • -v: 显示详细信息
        exportfs -arv 重新挂载所有目录, 不重启NFS服务
        exportfs -auv 全部卸载所有目录
    • showmount命令

      • 查看共享目录
      • showmount -e IP或主机名 查看某个主机的共享目录
    • 新增/home/share目录, 将所有者改为nfsnobody

    [root@web01 home]# mkdir /home/share
    [root@web01 home]# chown nfsnobody share
    [root@web01 home]# ll -d share/
    drwxr-xr-x 2 nfsnobody root 4096 1月  23 06:07 share/
    
    

    五. 客户端使用

    • 首先需要开启rpcbind服务
    • 使用showmount -e 192.168.5.131查看服务器共享的目录
    Export list for 192.168.5.131:
    /home/share  (everyone)
    [root@web02 ~]# 
    
    • 把服务器共享目录挂载到客户端
      • mkdir /home/uar/share
      • 建立挂载点 mount -t nfs web01:/home/share /home/uar/share
      • 查看挂载 mount
    web01:/home/share on /home/uar/share type nfs (rw,vers=4,addr=192.168.5.131,clientaddr=192.168.5.132)
    
    • web02中进入到share, 创建文件phpinfo.php, 文件所有者和所有组都市nfsnobody
    -rw-r--r-- 1 nfsnobody nfsnobody 18 1月  23 06:07 phpinfo.php
    

    相关文章

      网友评论

          本文标题:NFS

          本文链接:https://www.haomeiwen.com/subject/quxcaxtx.html