注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

谷搜互联网应用www.iguso.com

谷搜专注企业邮箱十二年

 
 
 

日志

 
 

/etc/exports 设定档的语法与参数  

2014-12-22 09:14:22|  分类: Linux技术文章 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在开始 NFS 服务器的设定之前,你必须要了解的是,NFS 会直接使用到核心功能,所以你的核心必须要有支援 NFS 才行。万一如果你的核心版本小于 2.2 版,或者重新自行编译过核心的话,那么就得要很注意啦!因为你可能会忘记选择 NFS 的核心支援啊!

  还好,我们 CentOS 或者是其他版本的 Linux ,预设核心通常是支援 NFS 功能的,所以你只要确认你的核心版本是目前新的 2.6.x 版,并且使用你的 distribution 所提供的核心,那应该就不会有问题啦!

  Tips:

  上面会提醒您这个问题的原因是,以前我都很喜欢自行编译一个特别的核心,但是某次编译核心时,却忘记加上了 NFS 的核心功能,结果 NFS server 无论如何也搞不起来~最后才想到原来俺的核心是非正规的...

  至于 NFS 服务器的架设实在很简单,你只要编辑好主要设定档 /etc/exports 之后,先启动 rpcbind (若已经启动了,就不要重新启动),然后再启动 nfs ,你的 NFS 就成功了! 不过这样的设定能否对用户端生效?那就得要考虑你权限方面的设定能力了。企业邮箱废话少说,我们就直接来看看那个 /etc/exports 应该如何设定吧!某些 distributions 并不会主动提供 /etc/exports 档案,所以请你自行手动建立它吧。

  [root@www ~]# vim /etc/exports

  /tmp 192.168.100.0/24(ro) localhost(rw) *.ev.ncku.edu.tw(ro,sync)

  [分享目录] [第一部主机(权限)] [可用主机名] [可用万用字元]

  你看看,这个设定档有够简单吧!每一行最前面是要分享出来的目录,注意哦!是以目录为单位啊! 然后这个目录可以依照不同的权限分享给不同的主机,像我上面的例子说明是: 要将 /tmp 分别分享给三个不同的主机或网域的意思。记得主机后面以小括号 () 设计权限参数, 若权限参数不止一个时,则以逗号 (,) 分开。且主机名与小括号是连在一起的哦!在这个档案内也可以利用 # 来注解呢。

  至于主机名称的设定主要有几个方式:

  可以使用完整的 IP 或者是网域,例如 192.168.100.10 或 192.168.100.0/24 ,或 192.168.100.0/255.255.255.0 都可以接受!

  也可以使用主机名称,但这个主机名称必须要在 /etc/hosts 内,或可使用 DNS 找到该名称才行啊!反正重点是可找到 IP 就是了。如果是主机名称的话,那么他可以支援万用字元,例如 * 或 ? 均可接受。

  至于权限方面 (就是小括号内的参数) 常见的参数则有:

  参数值内容说明

  rw

  ro该目录分享的权限是可读写 (read-write) 或唯读 (read-only),但最终能不能读写,还是与档案系统的 rwx 及身份有关。

  sync

  asyncsync 代表资料会同步写入到记忆体与硬碟中,async 则代表资料会先暂存于记忆体当中,而非直接写入硬碟!

  no_root_squash

  root_squash用户端使用 NFS 档案系统的帐号若为 root 时,系统该如何判断这个帐号的身份?预设的情况下,用户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放用户端使用 root 身份来操作服务器的档案系统,那么这里就得要开 no_root_squash 才行!

  all_squash不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名使用者,通常也就是 nobody(nfsnobody) 啦!

  anonuid

  anongidanon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 了。

  这是几个比较常见的权限参数,如果你有兴趣玩其他的参数时,请自行 man exports 可以发现很多有趣的资料。 接下来我们利用上述的几个参数来实际思考一下几个有趣的小习题:

  例题一:让 root 保有 root 的权限

  我想将 /tmp 分享出去给大家使用,由于这个目录本来就是大家都可以读写的,因此想让所有的人都可以存取。此外,我要让 root 写入的档案还是具有 root 的权限,那如何设计设定档?

  答:

  [root@www ~]# vim /etc/exports

  # 任何人都可以用我的 /tmp ,用万用字元来处理主机名称,重点在 no_root_squash

  /tmp *(rw,no_root_squash)

  主机名称可以使用万用字元,上头表示无论来自哪里都可以使用我的 /tmp 这个目录。 再次提醒,『 *(rw,no_root_squash) 』这一串设定值中间是没有空白字元的哦!而 /tmp 与 *(rw,no_root_squash) 则是有空白字元来隔开的!特别注意到那个 no_root_squash 的功能!在这个例子中,如果你是用户端,而且你是以 root 的身份登入你的 Linux 主机,那么当你 mount 上我这部主机的 /tmp 之后,你在该 mount 的目录当中,将具有『root 的权限!』

  例题二:同一目录针对不同范围开放不同权限

  我要将一个公共的目录 /home/public 公开出去,但是只有限定我的区域网络 192.168.100.0/24 这个网域且加入 vbirdgroup (第一章的例题建立的群组) 的用户才能够读写,其他来源则只能读取。

  答:

  [root@www ~]# mkdir /home/public

  [root@www ~]# setfacl -m g:vbirdgroup:rwx /home/public

  [root@www ~]# vim /etc/exports

  /tmp *(rw,no_root_squash)

  /home/public 192.168.100.0/24(rw) *(ro)

  # 继续累加在后面,注意,我有将主机与网域分为两段 (用空白隔开) 哦!

  上面的例子说的是,当我的 IP 是在 192.168.100.0/24 这个网段的时候,那么当我在 Client 端挂载了 Server 端的 /home/public 后,针对这个被我挂载的目录我就具有可以读写的权限~ 至于如果我不是在这个网段之内,外贸企业邮箱那么这个目录的资料我就仅能读取而已,亦即为唯读的属性啦!

  需要注意的是,万用字元仅能用在主机名称的分辨上面,IP 或网段就只能用 192.168.100.0/24 的状况, 不可以使用 192.168.100.* 哦!

  例题三:仅给某个单一主机使用的目录设定

  我要将一个私人的目录 /home/test 开放给 192.168.100.10 这个 Client 端的机器来使用时,该如何设定? 假设使用者的身份是 dmtsai 才具有完整的权限时。

  答:

  [root@www ~]# mkdir /home/test

  [root@www ~]# setfacl -m u:dmtsai:rwx /home/test

  [root@www ~]# vim /etc/exports

  /tmp *(rw,no_root_squash)

  /home/public 192.168.100.0/24(rw) *(ro)

  /home/test 192.168.100.10(rw)

  # 只要设定 IP 正确即可!

  这样就设定完成了!而且,只有 192.168.100.10 这部机器才能对 /home/test 这个目录进行存取哦!

  例题四:开放匿名登入的情况

  我要让 *.centos.vbird 网域的主机,登入我的 NFS 主机时,可以存取 /home/linux ,但是他们存资料的时候,我希望他们的 UID 与 GID 都变成 45 这个身份的使用者,假设我 NFS 服务器上的 UID 45 与 GID 45 的用户/群组名称为 nfsanon。

  答:

  [root@www ~]# groupadd -g 45 nfsanon

  [root@www ~]# useradd -u 45 -g nfsanon nfsanon

  [root@www ~]# mkdir /home/linux

  [root@www ~]# setfacl -m u:nfsanon:rwx /home/linux

  [root@www ~]# vim /etc/exports

  /tmp *(rw,no_root_squash)

  /home/public 192.168.100.0/24(rw) *(ro)

  /home/test 192.168.100.10(rw)

  /home/linux *.centos.vbird(rw,all_squash,anonuid=45,anongid=45)

  # 如果要开放匿名,那么重点是 all_squash,并且要配合 anonuid 哦!

  特别注意到那个 all_squash 与 anonuid, anongid 的功能!如此一来,当 clientlinux.centos.vbird 登入这部 NFS 主机,并且在 /home/linux 写入档案时,该档案的所有人与所有群组,就会变成 /etc/passwd 里面对应的 UID 为 45 的那个身份的使用者了!

  上面四个案例的权限如果依照13.1.4 存取设定权限来思考的话, 那么权限会是什么情况呢?让我们来检查一下:

  用户端与服务器端具有相同的 UID 与帐号:

  假设我在 192.168.100.10 登入这部 NFS (IP 假设为 192.168.100.254) 服务器,并且我在 192.168.100.10 的帐号为 dmtsai 这个身份,同时,在这部 NFS 上面也有 dmtsai 这个帐号, 并具有相同的 UID ,果真如此的话,那么:

  由于 192.168.100.254 这部 NFS 服务器的 /tmp 权限为 -rwxrwxrwt ,所以我 (dmtsai 在 192.168.100.10 上面) 在 /tmp 底下具有存取的权限,并且写入的档案所有人为 dmtsai ;

  在 /home/public 当中,由于我有读写的权限,所以如果在 /home/public 这个目录的权限对于 dmtsai 有开放写入的话,那么我就可以读写,并且我写入的档案所有人是 dmtsai 。但是万一 /home/public 对于 dmtsai 这个使用者并没有开放可以写入的权限时, 那么我还是没有办法写入档案哦!这点请特别留意!

  在 /home/test 当中,我的权限与 /home/public 相同的状态!还需要 NFS 服务器的 /home/test 对于 dmtsai 有开放权限;

  在 /home/linux 当中就比较麻烦!因为不论你是何种 user ,你的身份一定会被变成 UID=45 这个帐号!所以,这个目录就必需要针对 UID = 45 的那个帐号名称,修改他的权限才行!

  用户端与服务器端的帐号并未相同时:

  假如我在 192.168.100.10 的身份为 vbird (uid 为 600),但是 192.168.100.254 这部 NFS 主机却没有 uid=600 的帐号时,情况会变成怎样呢?

  我在 /tmp 底下还是可以写入,只是该档案的权限会保持为 UID=600 ,因此服务器端看起来就会怪怪的, 因为找不到 UID=600 这个帐号的显示,故档案拥有者会填上 600 呦!

  我在 /home/public 里面是否可以写入,还需要视 /home/public 的权限而定,美国空间不过,由于没有加上 all_squash 的参数, 因此在该目录下会保留用户端的使用者 UID,同上一点所示。

  /home/test 的观点与 /home/public 相同!

  /home/linux 底下,我的身份就被变成 UID = 45 那个使用者就是了!

  当用户端的身份为 root 时:

  假如我在 192.168.100.10 的身份为 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 = 45 的那个使用者了!

  这样的权限讲解之后,你可以了解了吗?这里是最重要的地方,如果这一关通过了,底下的咚咚就没有问题啦! ! 在你将本文读完后,最好还是回到13.1.4 NFS 的档案存取权限好好的看一看, 才能解决 NFS 的问题哦!

  评论这张
 
阅读(24)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017