Tim's Web Home

Gentoo NFS server on the T website

Gentoo NFS server:

安装配置 NFS 服务.

  • 权限说明, 摘自 鸟站
      #用户与群组的权限说明
      当客户端 1000 用户 tim 进入到该目录后,会参照 NFS client 的使用者与群组名称。但是由于该目录的档案主要来自 NFS server ,所以可能就会发现几个情况:
      1. NFS server/NFS client 刚好有相同的帐号与群组
         则此时使用者可以直接以 tim 的身份进行服务器所提供的档案系统的存取
      2. NFS server 的 1000 这个 UID 帐号对应为 tom
         若 NFS 服务器上的 /etc/passwd 里面 UID 1000 的使用者名称为 tom 时, 则用户端的 tim 可以存取伺服器端的 tom 这个使用者的档案,只因为两者具有相同的 UID 而已
      3. NFS server 并没有 1000 这个 UID
         另一个极端的情况是,在服务器端并没有 1000 这个 UID 的存在,则此时 tim 的身份在该目录下会被压缩成匿名者, 一般 NFS 的匿名者会以 UID 为 65534 为其使用者,早期的 Linux distributions 这个 65534 的帐号名称通常是 nobody ,CentOS 则取名为 nfsnobody 。但有时也会有特殊的情况,例如在服务器端分享 /tmp 的情况下, tim 的身份还是会保持 1000 但建立的各项资料,在服务器端来看,就会属于无拥有者的资料
      4. 如果使用者身份是 root 时
         有个比较特殊的使用者,那就是每个 Linux 主机都有的 UID 为 0 的 root 。想一想,如果用户端可以用 root 的身份去存取服务器端的档案系统时,那服务器端的资料哪有什么保护性?所以在预设的情况下, root 的身份会被主动的压缩成为匿名者
      总之,用户端使用者能做的事情是与 UID 及其 GID 有关的,那当用户端与服务器端的 UID 及帐号的对应不一致时, 可能就会造成档案系统使用上的困扰,这个就是 NFS 档案系统在使用上面的一个很重要的地方!而在了解使用者帐号与 UID 及档案系统的关系之后,要实际在用户端以 NFS 取用服务器端的档案系统时, 你还得需要具有:
         NFS 服务器有开放可写入的权限 (与 /etc/exports 设定有关); 实际的档案权限具有可写入 (w) 的权限
      当你满足了 (1)使用者帐号,亦即 UID 的相关身份; (2)NFS 服务器允许有写入的权限; (3)档案系统确实具有 w 的权限时,你才具有该档案的可写入权限。尤其是身份 (UID) 确认的环节部分,最容易搞错啦。也因为如此, 所以 NFS 通常需要与 NIS 这一个可以确认用户端与服务器端身份一致的服务搭配使用,以避免身份的错乱。
    
  • 服务器端安装与配置
      #安装相关程序
      root # emerge -av net-nds/rpcbind net-fs/nfs-utils
      # 设置配置档, 以目录为单位,然后目录可以依照不同的权限分享给不同的主机
      root # vim /etc/exports
      # 修改配置文件 /etc/conf.d/nfs,  "OPTS_RPC_NFSD"设置版本 "OPTS_RPC_MOUNTD"设置端口,如要配置lockd 端口,可修改/etc/sysctl.conf文件的"fs.nfs.nlm_tcpport" 和 "fs.nfs.nlm_udpport"
      root # vim /etc/conf.d/nfs
      # 较新的版本使用的配置文件是/etc/nfs.conf
      root # vim /etc/nfs.conf
      # 启动服务,NFS4 不需要rpcbind.service
      root # systemctl enable --now rpcbind.service
      root # systemctl enable --now nfs-server.service
      # NFS4 可以禁用以下服务
      root # systemctl mask rpc-statd.service rpcbind.service rpcbind.socket
      # 查看 RPC 服务的注册状况
      root # rpcinfo -p localhost
      # 查看 mount 的预设参数
      root # cat /var/lib/nfs/etab
      # 重新设置/etc/exports 后使其生效可用重新mount
      root # exportfs -arv
      # 将已经分享的 NFS 目录资源,全部卸载
      root # exportfs -auv
    
     file     /etc/exports
      # 以目录为单位,然后目录可以依照不同的权限分享给不同的主机,像例子说明是: 要将 /tmp 分别分享给三个不同的主机或网域的意思。记得主机后面以小括号 () 设计权限参数, 若权限参数不止一个时,则以逗号 (,) 分开。且主机名与小括号是连在一起的,在这个档案内也可以利用 # 来注解
      #/tmp                    192.168.0.0/24(ro)   localhost(rw)   *.tiimmm.com(ro,sync)
      /srv/exports             192.168.0.100(insecure,rw,async,no_subtree_check,crossmnt,fsid=0)   192.168.122.0/24(insecure,ro,async,no_subtree_check,crossmnt,fsid=0)   192.168.0.0/24(insecure,ro,async,no_subtree_check,crossmnt,fsid=0)
      /srv/exports/Music       192.168.0.100(insecure,rw,async,no_subtree_check)                   192.168.122.0/24(insecure,ro,async,no_subtree_check)                   192.168.0.0/24(insecure,ro,async,no_subtree_check)
      /srv/exports/PXEimages   192.168.0.100(insecure,rw,async,no_subtree_check)                   192.168.122.0/24(insecure,ro,async,no_subtree_check)                   192.168.0.0/24(insecure,ro,async,no_subtree_check)
    
     file     /etc/nfs.conf
      #设置版本
      [nfsd]
        vers2=n
        vers3=n
        vers4=y
        vers4.0=y
        vers4.1=y
        vers4.2=y
    
  • 用户端的安装与配置
      # 安装相关程序
      # gentoo:
      root # emerge -av net-nds/rpcbind net-fs/nfs-utils
      # debian:
      root # apt install nfs-common
      # 部分版本可能要先启动 rpcbind.service
      root # systemctl start rpcbind.service
      # 查看服务端开放的资源, xxx是服务端地址
      root # showmount -e xxx.xxx.xxx.xxx
      # 挂载相关文件夹
      root # mount -t nfs4 xxx.xxx.xxx.xxx:/xxx/xxx /xxx/xxx
      # 如果服务端的 /etc/exports, 假设主目录为/srv/exports,并设置了fsid=0的参数,nfs4挂载时只需使用子目录,如果加上主目录会出错:mount.nfs4: mounting server:/Music failed, reason given by server: No such file or directory
      # nfs3 的挂载:
      root # mount -t nfs xxx.xxx.xxx.xxx:/srv/exports/Music /xxx/xxx
      # nfs4 的挂载:
      root # mount -t nfs4 xxx.xxx.xxx.xxx:/Music /xxx/xxx
      # 自动挂裁
      root # vim /etc/fstab
    
     file     /etc/fstab
      #添加这一行
      xxx.xxx.xxx.xxx:/xxx/xxx  /xxx  nfs4  defaults,_netdev,rw,rsize=1048576,wsize=1048576,vers=4  0  0
    

版权声明

本文作者是一位开源理念的坚定支持者,所以本文内容遵照开源的精神发布。
无担保:本文作者不保证此文内容准确无误,亦不承担任何由于使用此文档所导致的损失。
自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。
名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处。
其他作品
本文作者十分愿意与他人分享劳动成果,如果你对我的其他作品有兴趣,可以在如下位置查看现有的作品集:
Tim 作品集 [ https://tiimmm.com/ ]
联系方式
由于作者水平有限,因此不能保证此文内容准确无误。如果你发现了此文中的错误(哪怕是错别字也好),请来信指出,任何提高此文质量的建议我都将虚心接纳。
Email: tiimmm dot chen at gmail dot com



网站制作者:Author:tiimmm dot chen at gmail dot com, Welcome to email for discussion!



T站勉强运行341天3时19分59秒
多伦多时间:2024-05-20 Monday 01:53:14 AM