(三)、配置NFS服务器
鸟哥在讲解NFS时讲得非常仔细,以下是我在他的原文中截取的几句话,觉得对理解NFS及配置NFS有特别大的帮助。“NFS本身就是使用 RPC 的一个 program”,“不但跑 NFS 的 Server 需要启动RPC 的服务,连带的,要挂载 NFS partition 的Client 机器,也需要同步启动 RPC 才行!”这几句话可以好好的理解一下,至于RPC,就是远程过程调用(Remote Procedure Call)了。
想让主机跑起NFS服务,那就得准备所需要的套件:包括两部份,一个是NFS相关套件,另一个是portmap的套件。废话少说:看下边图就知道怎样来搭建一个NFS服务器了。
总体说来NFS服务器的配置可以用“简单”两字来概括,最重要的是对/etc/exports文件的编辑,里面关于权限的问题就该好好的理解一下,以下是摘自鸟哥前辈的,一定得好好消化:
Ø 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:数据会先暂存于内存当中,而非直接写入硬盘!
看着上边的东东是不是觉得有点眼花呢?在NFS中关于权限的问题不仅仅只是在/etc/exports设定的,还和你要分享目录的权限有关系,这里举一个例子说,在NFS服务器上,mkdir /home/test目录,那么这个目录的权限就是“drwxr-xr-x 2 root root 4096 10-06 07:02 test”,这个就不用我解释是什么意思了吧。当我们要把此目录分享出去,在/etc/explorts里写入的是“/home/test *(rw)”时,那么当客户端用root身份登陆主机“mount –t nfs 192.168.233.128:/home/test/home/test”上这个目录后,客户端对/home/test目录的权限是“只能读取”的权限,因为在客户端登陆NFS服务器时已经把用户从root更改成了nobody用户,当然对NFS的/home/test目录只有读取的权限,那怎么才能获取这个目录的“写入”的权限呢?那有两种方式,第一种就是更改nfs服务器的/home/test目录的属性,即:chmod –R 777 /home/test,这样对所有用户来说对此目录都具写读取、写入、可执行的权利,当然包括nobody这个用户了;另一种方法就是不改变/home/test的权限,仔细观察,这个目录对root用户来说是肯定有写入权限的,所以当客户端登入NFS时用户不用被改变成nobody就好了,那么vi /etc/explorts,更改“/home/test *(rw)”为“/home/test *(rw,no_root_squash)”,然后“explortfs -rv”重新加载“/etc/explorts”文件,这样客户端也能对目录“/home/test”也有写入的权限了。得好好理解了!若还有不懂的,还请参照鸟哥的教程,写得很详细!