• NFS server和NFS client tomcat OS用户必须具有相同的UID和账号


    NFS服务器端配置
    
    服务器端配置
    1 创建共享目录
    # mkdir /home/share
    # chown nobody.nogroup /home/share
    2 创建或修改/etc/exports 配置文件
    这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:
    [共享的目录] [主机名或IP(参数,参数)] 
    其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。
    当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
    当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
    [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
    下面是一些NFS共享的常用参数:
    ro 只读访问 
    rw 读写访问 
    sync 所有数据在请求时写入共享 
    async NFS在写入数据前可以相应请求 
    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_squas root用户具有根目录的完全管理访问权限 
    anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID 
    anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID 
    配置文件/etc/exports内容如下:
    $ cat /etc/exports
    /home/share 192.168.102.15(rw,sync) *(ro)
    配置说明: 对192.168.102.15赋予读写权限,其他机器仅有只读权限。
    
    3 Iptables 防火墙
    如果我们的NFS服务器在防火墙后边,则需要在防火强策略中加入如下策略:
    -A INPUT -p tcp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
    -A INPUT -p udp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
    
    =======================================
    
    NFS:Network File System,linux中共享文件的服务。
    
    使用NFS需要启用RPC(remoteprocedure call),RPC可以指定每个NFS功能所对应的端口号,重启RPC后,RPC所管理的所有NFS功能服务都需重新向RPC注册。
    
    设置NFS需要安装nfs-utils和portmap程序,使用rpm –q可以查看是否安装
    
    Nfs-utils:提供rpc.nfsd和rpc.mountd两个daemon与其他document说明文件。
    
    rpc.nfsd:管理client是否能够登入主机,及对登入者ID的辨别。
    
    rpc.mountd:管理NFS文件系统,读取/etc/exports对比client取得相应的权限。
    
    Portmap:端口映射;在启动rpc之前做好端口映射工作。
    
    NFS的配置文件有两个:
    
    /etc/exports:NFS配置文件
    
    /var/lib/nfs/*tab:NFS服务器日志放置路径;etab记录共享出来的目录完整权限设置值;xtab记录曾经连接到此NFS主机的相关客户端数据
    
    两个命令:
    
    /usr/sbin/exportfs:维护NFS共享资源;重新共享/etc/exports变更目录或将NFSserver共享目录卸载或重新共享
    
    /usr/sbin/showmount:在客户端查看NFS服务器共享出来的目录资源
    
    /etc/exports配置文件
    
    首先需要手动编辑/etc/exports配置文件
    
    共享目录必须使用绝对路径,权限部分依照不同的权限共享给不同的主机,括号内是设置权限参数的位置,权限不止一个时,使用,隔开,主机名和括号连在一起。
    
    主机名设置可以使用网段:192.168.1.0/24或完整IP:192.168.1.23也可以使用主机名称,但此主机名称需要存在于/etc/hosts中或使用DNS可以找到,找到IP即可,主机名支持通配符,如*?
    
    /mnt/sda4/share/a      192.168.23.129(rw)
    
    设置共享目录/mnt/sda4/share/a,仅192.168.23.129主机允许访问此共享目录,具有读写权限
    
    /mnt/sda4/share/b      192.168.23.129(rw) *(ro)
    
    设置共享目录/mnt/sda4/share/b,192.168.23.129可以读写该共享目录,其他主机只可以读取该共享目录
    
    /mnt/sda4/share/c       192.168.23.129(no_root_squash)
    
    设置共享目录/mnt/sda4/share/c,仅192.168.23.129可以访问和读写,root登录时拥有root权限
    
    /mnt/sda4/share/d      192.168.23.0/24(rw)
    
    设置共享目录/mnt/sda4/share/d,仅有192.168.23.0/24网段的主机才可访问和读写此目录文件
    
    /mnt/sda4/share/e      *(rw,all_squash,anonuid=500,anongid=500)
    
    设置共享目录/mnt/sda4/share/e,所有主机都允许访问此共享目录,具有读写权限,但他们访问该共享目录时,已将其UID、GID设置成500。NFSserver主机中UID、GID=500的权限已经设置好
    
    权限参数说明如下:
    
    Rw:read-write可读写的权限
    
    Ro:read-only只读权限
    
    no_root_squash:登入NFS主机使用共享目录的用户,如果是用户root,对于此共享目录具有root权限,不建议使用。
    
    root_squash:登入NFS主机使用共享目录的用户,如果是用户root,此用户权限将被压缩为匿名用户,其UID和GID都会被压缩为nobody(nfsnobody)系统账号的身份。
    
    all_squash:不论登入NFS的用户身份为何,其身份都被转换成为匿名用户,即nobody。
    
    Anonuid:anonymous;即nobody,可以自行设定此UID值,但此UID必须存在于/etc/passwd中。
    
    Anongid:同anonuid,变成group ID即可。
    
    Sync:数据同步写入到内存与硬盘中
    
    Async:数据先暂存于内存中,而非直接写入硬盘
    
    权限说明:
    
    1.NFS server和NFS client具有相同的UID和账号
    
    如果NFSserver和NFSclient具有相同共享文件账号和相同UID,客户端登入NFSserver时,就会拥有/etc/exports设置的权限
    
    2.NFS server和NFS client具有不同的账号
    
    如果NFSclient不拥有NFSserver共享文件账号,或NFSclient的账号在NFSserver不存在,是否可以读写共享目录,需要查看NFSserver的权限而定,其身份会变为匿名用户nobody
    
    3.NFS client的身份为root
    
    默认情况下,客户端的root身份会被压缩成匿名用户nobody
    
    启动NFS
    
    启动NFS只需启动portmap和NFS服务即可。如果需要启动数据一致性检查,则需启动nfslock服务。
    
    使用netstat–tnlu可以查看nfs开放了哪些端口。Portmap的端口为111,nfs的端口为2049
    
    [root@localhost share]# rpcinfo -p
    
    程序       版本 协议   端口               服务名称
    
    100000    2   tcp   111        portmapper
    
    100000    2   udp  111        portmapper
    
    100024    1   udp  695        status
    
    100003    2   udp  2049     nfs
    
    100021    1   udp   46017  nlockmgr
    
    ………………………………………………
    
    如果rpcinfo–p的数据无法输出,表示注册的数据有问题,重新启动portmap和nfs即可。
    
    client查看Server有提供哪些NFS服务,可以使用showmount
    
    # showmount -e  显示某台主机的/etc/exports所共享的目录数据
    
    # showmount -a  显示当前主机与客户端NFS联机共享状态
    
    # showmount -e
    
    Export list for localhost.localdomain:
    
    /mnt/sda4/share/e *
    
    /mnt/sda4/share/d 192.168.23.0/24
    
    /mnt/sda4/share/c 192.168.23.129
    
    /mnt/sda4/share/b (everyone)
    
    /mnt/sda4/share/a 192.168.23.129
    
    需要扫描某台主机提供的NFS共享目录,使用showmount–e ip(hostname)即可
    
    查看/var/lib/nfs/etab可以查看NFSserver目录权限设置情况
    
    # cat /var/lib/nfs/etab
    
    /mnt/sda4/share/a      192.168.23.129(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
    
    …………………………………………………………
    
    如果修改/etc/exports文件之后无需重启nfs,只需重新扫瞄一次文件/etc/exports,并且重新将设定加载即可;
    
    Exportfs:
    
    -a:全部挂载(或卸载)/etc/exports 文件内的设置。
    
    -r:重新挂载/etc/exports里的设置,同时同步更新/etc/exports及/var/lib/nfs/xtab的内容。
    
    -u:卸载某一目录。
    
    -v:在export时,将共享的目录显示在屏幕上。
    
    重新挂载/etc/exports的设置:#exportfs–arv
    
    全部卸载/etc/exports的设置:#exportfs–auv
    
    客户端配置:
    
    # mkdir -p /mnt/share/client/b
    
    # mount -t nfs192.168.23.128:/mnt/sda4/share/b /mnt/share/client/b
    
    # df
    
    文件系统                                                             1K-块      已用    可用        已用%   挂载点
    
    /dev/sda2                                                            5952284    3158868  2486176 56%               /
    
    /dev/sda1                                                            101086     11481   84386                    12%      /boot
    
    tmpfs                                                    127720     0          127720    0%        /dev/shm
    
    192.168.23.128:/mnt/sda4/share/b   3905632   73408          3633824   2%       /mnt/share/client/b
    
    设置成开机启动挂载
    
    修改/etc/fstab文件
    
    192.168.23.128:/mnt/sda4/share/e  /mnt/share/client/e  nfs  defaults,rw   0 0
    
    此外可以使用autofs设置客户端需要时自动挂载,不需要时若干分钟后自动卸载,还可在/etc/fstab或客户端手动挂载时设置一些参数,方便客户端使用。

  • 相关阅读:
    leetcode 122. Best Time to Buy and Sell Stock II
    leetcode 121. Best Time to Buy and Sell Stock
    python 集合(set)和字典(dictionary)的用法解析
    leetcode 53. Maximum Subarray
    leetcode 202. Happy Number
    leetcode 136.Single Number
    leetcode 703. Kth Largest Element in a Stream & c++ priority_queue & minHeap/maxHeap
    [leetcode]1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree
    正则表达式
    十种排序算法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351495.html
Copyright © 2020-2023  润新知