【人在运维囧途_11】GNU/Linux NFS服务器部署时权限设置的注意事项


【人在运维囧途_11】GNU/Linux NFS服务器部署时权限设置的注意事项

【人在运维囧途_09】秒删海量数据文件的方法
http://www.2cto.com/os/201304/203155.html

NFS、简言之、便是文件服务器
 在部署过程中、文件的读写权限是比教容易出错
 本博文按以下 6 个方面展开、但重点放在文件权限上、
 
 ● 原理
 ● /etc/exports
 ● 文件权限
 ● Server/Client 配置
 ● 2 个常用命令
 ● Troubleshoting
 ● 经验建议
 
 ㈠ 原理
 
  所谓一图胜千言、有图有真相
  Rocky 便随大流啦、放 2 张图片
 



  值得注意的是、启动 NFS 之前、portmap 要先启动
 
 ㈡ /etc/exports
 
  NFS 的部署其实很简单、分 3 步走战略:配置/etc/exports → 启动 portmap → 启动 NFS
  那么、万里长征第一步:配置 /etc/exports
  这个配置文件很简单、每一行最前面是要共享出来的目录
  然后、是这个目录可以依照不同的权限共享给不同的主机
  比如:
  /tmp/rokcy   192.168.1.0/24(ro)  *.fjnu.edu.com(rw,sync)
  格式说明:小括号()是设置权限参数的位置、主机名与小括号是连在一起
  主机名的设置主要有几个方式:
  ● 可以使用完整的 IP 或者 网段、例如:192.168.1.110 或 192.168.1.0/24
  ● 可以使用主机名称、不过这个名称要在/etc/hosts 或 DNS 里能找到、对于主机名支持通配符的使用、如* 或 ?
  权限方面的常见参数有:
  rw :读写;
  ro :只读;
  sync :同步模式,内存中数据时时写入磁盘;
  async :不同步,把内存中数据定期写入磁盘中;
  no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;
  root_squash :和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;
  all_squash :不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
  anonuid/anongid :要和root_squash 以及 all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid
 
 ㈢ 文件权限
 
  对于一个文件的写入权限、需要满足:
  (1)使用者账号,亦即 UID 的相关身份
  (2)NFS 服务器允许有写入的权限
  (3)文件系统确实具有 w 的权限
 
 ㈣ 2 个命令
 
  ① 在Client端使用:
 showmount -e IP或主机名
 查看可挂载的目录
 
  ② 在Server端使用:
 重新配置/etc/exports后可用:
 exportfs -avr
 
 ㈤ Troubleshoting 
 
  ① 用户或客户端身份权限不符
[plain] 

[root@linux ~]# mount -t nfs localhost:/home/test /home/nfs 
mount: localhost:/home/test failed, reason given by server: Permission denied 

 解决方案:
 如果确定您的 IP 没有错误,那么请通知服务器端, 请管理员将你的 IP 加入 /etc/exports 
 
  ② 服务器或客户端某些服务未启动:
[plain] 

[root@linux ~]# mount -t nfs localhost:/home/test /home/nfs 
mount: RPC: Port mapper failure - RPC: Unable to receive 
 
[root@linux ~]# mount -t nfs localhost:/home/test /home/nfs 
mount: RPC: Program not registered  

 解决方案:
 要嘛就是 portmap 忘记开,要嘛就是服务器端的 nfs 忘记开!解决的方法就是去启动这两个咚咚啦!
 
  ③ 被防火墙档掉了:
 
 这个也很容易忘记了!那就是重新设定一下您的防火墙,这包含了两部份,包括 iptables 与 TCP_Wrappers !
 因为我们启动了 portmap ,这个东西有两个数据需要分享出来,一个是 port 111 需要提供出去,
 因此您的 iptables 规则当中,需要开放这个 port 喔
 
 ㈥ 经验建议
 
  如果 NFS 在高速环境下运行的话、建议加上:
 mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 

相关内容

    暂无相关文章