<一>NFS服务器端的配置

1 安装服务器端:

$ sudo apt-get install nfs-kernel-server 

内含客户端所需的套件:nfs-common和portmap


2 服务器端的配置:

配置portmap

$ sudo dpkg-reconfigure portmap , 对Should portmap be bound to the loopback address? 选N.

配置/etc/hosts.deny  

$ sudo gedit /etc/hosts.deny

(禁止任何host(主机)能和你的NFS服务器进行NFS连接),加入:


### NFS DAEMONS 

portmap:ALL 

lockd:ALL 

mountd:ALL 

rquotad:ALL 

statd:ALL 

配置/etc/hosts.allow

$ sudo gedit /etc/hosts.allow

允许那些你想要的主机和你的NFS服务器建立连接。下列步骤将允许任何IP地址以192.168.13开头的主机(连接到NFS服务器上),也可以指定特定的IP地址。参看man页 hosts_access(5), hosts_options(5)。 

### NFS DAEMONS 

portmap: 192.168.13. 

lockd: 192.168.13. 

rquotad: 192.168.13. 

mountd: 192.168.13. 

statd: 192.168.13. 

就是先禁止所有IP访问你的共享目录,然后指定某些IP可以访问。


3 运行 $ sudo /etc/init.d/portmap restart 重启portmap daemon.


4 配置/etc/exports:

$ sudo gedit /etc/exports

NFS挂载目录及权限由/etc/exports文件定义,/etc/exports实际上就是nfs服务器的核心配置文件了. 

比如我要将我的home目录中的/home/warmbupt/arm/nfs目录让局域网内的所有的IP共享, 则在该文件末尾添加下列语句: 

/home/test/arm/nfs * (rw,sync,root_squash) 

以上 配置的说明: 

所有的NFS客户端能够共享NFS服务器 /home/test/arm/nfs 目录内容.且有读,写权限, 并且该用户进入 /home/test/arm/nfs目录后的身份假如是root,会被squash为匿名用户。最好加上sync, 否则 $ sudo exportfs -r 时会给出警告, sync是NFS的默认选项. 

/*参数介绍:

分享的目录 主机名称1或IP1(参数1,参数2) 主机名称2或IP2(参数3,参数4) 


/media/sda6/share *(rw,sync) 

/media/sda6/share是要共享的目录,*代表允许所有的网络段访问,rw是可读写权限 

保存。 

sudo exportfs -ra 

3.重启服务 

sudo /etc/init.d/portmap restart 

sudo /etc/init.d/nfs-kernel-server restart


参数 


  rw: 可擦写的权限 


  ro: 只读的权限 


  no_root_squash: 登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用! 


  root_squash: 在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个身份; 


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


  anonuid: 前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody,但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! 


  anongid: 同 anonuid ,但是变成 group ID 就是了 


  sync: 资料同步写入到内存与硬盘当中 


  async: 资料会先暂存于内存当中,而非直接写入硬盘 

*/

设置的实例: 


  a). /tmp *(rw,no_root_squash) //*号表示所有的IP都可以访问 


  b). /tmp *(rw) 


  /home/public 192.168.0.*(rw) *(ro) //下面两行作用一样 


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


  c). /home/test 192.168.0.100(rw) //只对某部机器设置权限 


  d). /home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40) //当*.linux.org登陆此NFS主机,并且在/home/linux下面写入档案时,该档案的所有人与所有组,就会变成/etc/passwd里面对应的UID为40的那个身份的使用者了. 


5 修改目录权限 :chmod 777 -R /home/test/arm/nfs 

运行 $ showmount -e 查看NFS server的export list.若更改了/etc/exports, 运行 $ sudo exportfs -r 更新 


运行 $ sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务) 

$ sudo iptables -F 


测试NFS: 

运行 $ df 看看结果 


(二)NFS客户端的配置 

在开发系统上,同样地,目标系统作为NFS的客户端,需要安装NFS客户端程序。如果是Debian/Ubuntu系统,则需要安装nfs-common。 

$ sudo apt-get install nfs-commmon 

注:nfs-common和nfs-kernel-server都依赖于portmap! 


(三)NFS使用 

在客户机上面执行 

#sudo /etc/init.d/portmap start 

将portmap服务开启。 

然后执行(192.168.13.212这是我的服务器IP地址): 

# showmount -e 192.168.13.212 

如果显示了刚才设置的共享文件夹,证明成功了。 

最后执行: 

# mount  192.168.13.212:/home/test/arm/nfs /home/nfs/public 

这样进入/home/nfs/public 目录就可以看到里面的内容了。 



***************

4.在客户机端创建用于挂载的目录。 

sudo mkdir /mnt/share 

sudo chmod 777 /mnt/share/ 

6.客户就可以加载了 

sudo mount 172.16.5.140:/media/sda6/share /mnt/share

权限的说明:

http://wangxinpier.javaeye.com/blog/156805