【服务器端】
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命令可以查看本机或远程共享目录列表。