nfs(Network FileSystem)的简单配置

若是想要在window和linux之间共享文件,那么用samba。若是仅仅想在Unix like系统之间共享文件,那么能够用NFS。linux

这篇文章分为两个部分,第一部分只是简单的用:照着写的步骤一步步来就能够实现nfs共享了,时间紧迫的能够只看这一部分;第二部分是比较详细的介绍了一些配置,有点干货。centos

我用的是centos 6.6(Final) X86_64操做系统。服务器IP:192.168.128.140 ;客户端IP:192.168.128.136tomcat

先配置个最简单的server和client可以让nfs跑起来。服务器

  • server端配置(nfs依赖一个叫rpc的服务。我用的是centos 6.6,因此用rpcbind,其余版本的linux可能有其余的程序提供rpc服务)
  1. 安装rpcbind和nfs-utils :    yum install rpcbind nfs-utils 
  2. 修改/etc/exports文件。(有时这个文件不存在,那就本身建立一个),添加一条   /tmp 192.168.128.136(rw,no_root_squash) 。意思是容许把 /tmp 这个文件夹分享给 192.168.128.136这个客户端,而且客户端具备read和write权限,而且若是客户端是root登陆的话,那他在/tmp下建立的文件的全部者也是root。具体的解释这里就不说了。反正只要把 /tmp 192.168.128.136(rw,no_root_squash) 复制到/etc/exports文件里就好了。
     (注意/etc/exports是文件,不是文件夹)
  3. 启动 rpc 和nfs ,依次运行下面的三条绿色的命令    
 1 [root@www ~]# /etc/init.d/rpcbind start
 2 # 若是 rpcbind 本來就已經在執行了,那就不须要啟動啊!
 3 
 4 [root@www ~]# /etc/init.d/nfs start
 5 # 有時候某些 distributions 可能會出現以下的警告訊息:
 6 exportfs: /etc/exports [3]: No 'sync' or 'async' option specified 
 7 for export "192.168.100.10:/home/test".
 8   Assuming default behaviour ('sync').
 9 # 上面的警告訊息僅是在告知因為我們沒有指定 sync 或 async 的參數,
10 # 則 NFS 將預設會使用 sync 的資訊而已。你能够不理他,也能够加入 /etc/exports。
11 
12 [root@www ~]# /etc/init.d/nfslock start

 这样服务器就行了。还有若是不出现意外的话,服务器端防火墙必定会阻止客户端的链接。因此为了简单直接关了防火墙吧。(开放端口最后讲)async

  • client端配置
  1. 和server端第一步同样,安装rpcbind和nfs-utils:    yum install rpcbind nfs-utils
  2. 启动 rpc 和nfs ,依次运行下面的两条绿色的命令
    1 2 [root@clientlinux ~]# /etc/init.d/rpcbind start
    3 [root@clientlinux ~]# /etc/init.d/nfslock start 
  3. 把服务器的文件夹mount到本地
1 2 [root@clientlinux ~]# mkdir -p /home/nfs/public
3 [root@clientlinux ~]# mount -t nfs 192.168.128.140:/temp /home/nfs/public       #意思是把远程的/temp文件夹mount到本地的/home/nfs/public文件夹 

 另外若是不记得服务器共享了哪些文件夹,能够用命令 showmount -e 服务器端IP      来查询。ui

好了,在客户端 cd /homt/nfs/public 你就会发现你进入的实际上是服务器端的/tmp文件夹。你在里面touch一个文件在返回服务器端的/tmp文件夹看看。spa

 

 

 

上面的配置已经能够运行nfs了。下面对于有些东西详细说一下。以为内容繁杂的而且只是想下用着的能够不看。操作系统

1. /etc/exports配置文件。看下面的例子:code

1 /tmp   192.168.100.0/24(ro)   localhost(rw)   *.ev.ncku.edu.tw(ro,sync)
2 /tmp1  *(rw,no_root_squash)
3 /tmp2  192.168.100.123(rw) 

 意思是服务器有三个文件夹/tmp, /tmp1,/tmp2是共享的,不过他们共享的对象不同。猜一猜也知道共享给了谁^_^。那个谁有几种书写方式:server

  • 指定ip地址的主机:192.168.0.200
  • 指定子网中的全部主机:192.168.0.0/24 192.168.0.0/255.255.255.0
  • 指定域名的主机:david.bsmart.cn
  • 指定域中的全部主机:*.bsmart.cn
  • 全部主机:*

至于小括号里面的内容,表示要赋予权限,看下表:

参数值 内容说明
rw
ro
该目录分享的权限是可读写 (read-write) 或惟读 (read-only),但最终能不能读写,仍是与档案系统的 rwx 及身份有关。
sync
async
sync 表明资料会同步写入到记忆体与硬碟中,async 则表明资料会先暂存于记忆体当中,而非直接写入硬碟!
no_root_squash
root_squash
客户端使用 NFS 档案系统的账号若为 root 时,服务器端该如何判断这个账号的身份?预设的状况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但若是你想要开放客户端使用 root 身份来操做服务器的档案系统,那么这里就得要开 no_root_squash 才行!
all_squash 不论登入 NFS 的使用者身份为什么, 他的身份都会被压缩成为匿名使用者,一般也就是 nobody(nfsnobody) 啦!
anonuid
anongid
anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名使用者的 UID 设定值,一般为 nobody(nfsnobody),可是你能够自行设定这个 UID 的值!固然,这个 UID 必须要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 萝。

 以上是一些常见的设置,跟多的能够用 man exports 命令去查看。

2. 关于客户端链接服务器端用户的问题。(假设客户端是用tomcat用户登陆的,那他链接服务器并在共享文件夹里新建立了一个文件,那么这个文件全部者是谁呢?)

  I. 客户端链接时候,对普通用户的检查

    a. 若是明确设定了普通用户被压缩的身份,那么此时客户端用户的身份转换为指定用户;

    b. 若是NFS server上面有同名用户,那么此时客户端登陆帐户的身份转换为NFS server上面的同名用户;

    c. 若是没有明确指定,也没有同名用户,那么此时 用户身份被压缩成nfsnobody;

  II. 客户端链接的时候,对root的检查

    a. 若是设置no_root_squash,那么此时root用户的身份被压缩为NFS server上面的root;

    b. 若是设置了all_squash、anonuid、anongid,此时root 身份被压缩为指定用户;

    c. 若是没有明确指定,此时root用户被压缩为nfsnobody;

    d. 若是同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,若是设置了anonuid、anongid将被压缩到所指定的用户与组;

3.

相关文章
相关标签/搜索