简单罗列基础命令,只分享我的想法!
NFS网络文件系统,和FTP文件传输协议不一样,NFS主要依靠rpcbind进程,通过rpcbind把命令传递到NFS服务器(这一点就与FTP不一样,FTP的client是发送对具体资源的请求,而NFS是要把某个函数的调用作为请求发送到服务器端,你可以挂载共享目录、vim共享文件等,就好像你在NFS服务器实机操作一样),再由NFS服务器的nfsd进程向NFS服务器的kernel发起系统调用,在把调用之后的结果通过rpcbind发到client。
client和server端都要启用rpcbind进程,因为NFS需要临时开启某些端口,所有的这些端口都要向portmapper(111端口)服务进行注册,告知portmapper那些nfs的服务和端口的对应表(如图1),client也通过rpcbind去获得server端的那些已经注册了端口,进而可以通信。
图1
就好像你去发送一个快递(顺丰),你就相当于那个client而快递哥就是rpcbind,你要邮寄到的目标就是server区下的那个已经在rpcbind登记过的某个端口,你只要告诉快递哥我要找server区下的mountd就ok了,肯定也是server所在区域的顺丰快递哥(负责server区的那个快递哥rpcbind)找到mountd这个端口。意思差不多,向server端的rpcbind进程注册的服务同样也只有client端的rpcbind进程才能知道。
client访问server共享的文档与两个权限有关,分别是NFS服务器有开放可写入的权限,和实际档案的权限是否可读写。
client是向server端发起的rpc所以,client的那个用户的id必须在server端有,否则将会以匿名的形式显示,因为文件本身就是server的。所以,权限的更改需要仔细斟酌。
配置较为简单,如下:
1)server端
需要安装nfs-utils,用来提供rpc.nfsd及rpc.mountd等nfs监控程序与基本命令,可以自己rpm -ql nfs-utils看一下是否提供。
vim /etc/exports
//格式directory(or file system) client1(option1,option2) client2(option1, option2)
/mnt 172.16.49.5(rw)
通知nfsd重新读取/etc/exports中的共享目录或文件系统
exportfs �Carv
2)client端
ps aux |grep rpc| grep �Cv grep
确定是否rpcbind和rpc.statd这两个进程开启
查看NFS server服务器共享的目录
showmount �Ce 172.16.49.1
挂载到本地
mount �Ct nfs 172.16.49.1:/mnt /mnt
3)client可以对共享目录有写权限
nfs已经放行rw
在server端
因为在server端client的root用户被压缩为nfsnobody(uid为6534)
chmod o+x /mnt
你也可以使用setfacl这个命令,因为会更加安全一些,本文就直接对其它用户开放写权限了。
客户端复制passwd文件到共享目录下,server的视图为图2
图2
Client的视图如下图3
图3
注意:在nfs服务器端可以看到nfs服务器有的系统账户的账户名,否则全部都是nfsnobody,而在client则全部都是nobody用户。
注意:常用在/etc/exports中共享目录的选项说明
secure:这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。指定 insecure 可以禁用这个选项。
rw:这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的。
async:这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务器,这也可能会造成数据丢失。
no_wdelay:这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。
nohide:如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用 hide 选项。
no_subtree_check:这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查。
no_auth_nlm:这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是 auth_nlm 或 secure_locks。
mp (mountpoint=path):通过显式地声明这个选项,NFS 要求挂载所导出的目录。
fsid=num:这个选项通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档。