【服务器端】
rpm -qa|grep nfs ,列出如下两项
  nfs-utils-1.0.9-16.e15
  nfs-utils-lib-1.0.8-7.2
rpm -qa|grep portmap 
  portmap-4.0-65.2.2.1
ls -l /sbin/portmap

ps -eaf|grep portmap
netstat -anp|grep :111
//portmap 是端口映射器,默认需要监听111端口,真正提供NFS服务器的,是另外两个进程,nfs和mount
/etc/rc.d/init.d/nfs start
ps -eaf|grep nfs (默认是使用2049端口)  netstat -anp|grep :2049
ps -eaf|grep mountd (使用端口号是不定的,每次使用都会变)  netstat -anp|grep rpc.mountd

rpcinfo -p //可以看到nfs的进程和使用的端口的联系,这个要注意,iptables 是否开放相应的端口,否则客户端可能访问不正常

共享方式有两种,一种是通过配置文件去共享,第二种是通过exportfs命令去共享
vim /etc/exports
/projects *(ro) *.wzct.edu(rw,sync)
/home/abc 10.23.12.1(rw,all_squash,anonuid=150,anongid=100) //all_squash:所有用户匿名
/pub  *(ro,insecure,all_squash)  //insecure:允许使用1024以上的端口去连接

:wq

exportfs -r -v //导出,生效,如果修改过配置文件,需要重新执行这条命令。

exportfs -u *:/pub  //现在取消该目录的共享
exportfs *:/pub  //重新又共享该目录,去掉-u

exportfs //列出导出的信息  ,如果加-v 则会更详细的列出来


以上是在文件中配置过的,如果没有在配置文件中写过的,也希望共享,可以,需加-i选项 -o 指出权限

exportfs -i *:/usr -o ro -v //即第二种方式,命令方式去共享

相关文件,列出信息,比exportfs -v列出的信息更加详细
more /var/lib/nfs/etab


【客户端】
showmount -o 服务器的ip地址    //显示服务器的共享出的目录

mkdir /nfs                          //创建待会挂载的本地目录
mount  服务器的ip地址:/home/abc /nfs             //将远程服务器的共享目录挂载到本地的目录当中
cd /nfs
ls -l
仔细观察可以发现文件的用户和用户组是不一样的,这是因为是通过UID去联系的,如果服务器端uid在客户机不存在
则会直接显示uid。权限部分是设置,需阅读其他文章

/etc/fstab 去挂载也可以

 

共享目录主机(参数) 

任何共享目录都要指定sync或async,默认是sync模式。也就是指定文件写入磁盘之前共享NFS目录是否响应命令。

下面是一些NFS共享的常用参数:

ro       只读访问

rw    读写访问

sync    所有数据在请求时写入共享

async     NFS在写入数据前可以相应请求

secure     NFS通过1024以下的安全TCP/IP端口发送

insecure    NFS通过1024以上的端口发送

wdelay    如果多个用户要写入NFS目录,则归组写入(默认)

no_wdelay   如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

hide    在NFS共享目录中不共享其子目录 no_hide共享NFS目录的子目录

subtree_check   如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

no_subtree_check  和上面相对,不检查父目录权限

all_squash   共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

no_all_squash   保留共享文件的UID和GID(默认)

root_squash root  用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squas root  用户具有根目录的完全管理访问权限

anonuid=xxx   指定NFS服务器/etc/passwd文件中匿名用户的UID

anongid=xxx   指定NFS服务器/etc/passwd文件中匿名用户的GID

 

注:

使用exportfs命令当/etc/exports内容发生改变时,挂载、卸载或更新共享目录列表。

使用showmount命令可以查看本机或远程共享目录列表。