NFS Server端的设定
NFS Server端的设定,首先需要确认Linux主机是否可以支持NFS这项服务,然后再设定使用者的来源IP或主机名称以及共享出去的目录权限。
那么,在Client PC怎么使用这个共享出来的目录呢?首先以showmount检查Linux Server是否有可以使用的 NFS目录。如果有就将它mount在本机上面,这样就可以使用NFS Server主机提供的资源了。
1.系统要求
除了前面已经提到的两个系统守护进程portmap与nfs-utils之外,内核(Kernel)版本最好高于2.2.18。此外,如果重新编译过内核,一定要选择支持NFS。
2.etc/exports
编辑 /etc/exports文件:
# vi /etc/exports
/usr/src/sys -maproot=daemon host2
/usr/ports -ro -network 192.168.1.0
从上面这个例子中可以看出exports文件的格式,首先是定义要共享的文件目录,必须使用绝对路径,而不能使用符号连接。后面就是对这个目录进行访问限 制的参数,用于保证安全性。第一行设置中,将/usr/sys/src目录共享出去,但限制客户机上的root用户等价于本机上的daemon用户,以避 免客户机上的root用户拥有这个服务器上的root权力进行非法操作;此后的host2参数是主机名,这就限制只有host2才能共享这个 /usr/sys/src目录;第三行设置共享了/usr/ports目录,但限制为只允许读取,并且也只有192.168.1.0网络上的计算机才能访 问这个共享目录。
◆ rw 可擦写的权限。
◆ ro 只读的权限。
◆ no_root_squash 当登入NFS主机使用共享之目录的使用者如果是root时,那么这个使用者的权限将被转换成为匿名使用者,通常它的UID与GID都会变成nobody身份。
◆ root_squash 登入NFS主机使用共享目录的使用者,如果是root,那么对于这个共享的目录来说,它就具有 root的权限。
◆ all_squash 不论登入NFS使用者的身份为何,它的身份都会被转换成为匿名使用者,通常也就是nobody。
◆ anonuid 通常为nobody,当然也可以自行设定这个UID的值,UID必须存在于/etc/passwd当中。
◆ anongid 同anonuid,但是变成group ID就是了。
◆ sync 资料同步写入到内存与硬盘当中。
◆ async 资料会先暂存于内存当中,而非直接写入硬盘。
3.激活服务portmap和nfsd
#/etc/rc.d/init.d/portmap start (or:#service portmap start)
#/etc/rc.d/init.d/nfs start (or:#service nfs start)
portmap激活之后,就会出现一个端口号为111的sunrpc的服务。至于nfs则会激活至少两个以上的系统守护进程,然后就开始监听Client PC的需求,用cat/var/log/messages可以看到操作是否成功:
#cat /var/log/messages
Nov 16 15:04:45 cao portmap: portmap startup succeeded
Nov 16 15:04:53 cao nfs: Starting NFS services: succeeded
Nov 16 15:04:54 cao nfs: rpc.rquotad startup succeeded
Nov 16 15:04:54 cao nfs: rpc.mountd startup succeeded
Nov 16 15:04:54 cao nfs: rpc.nfsd startup succeeded
4.exportfs
如果修改了/etc/exports这个文件后,不需要重新激活nfs,只要重新扫瞄一次/etc/exports的文件,并且重新将设定加载即可:
# exportfs [-aruv]
参数说明:
-a 全部挂载(或卸载) /etc/exports 文件内的设定 。
-r 重新挂载/etc/exports里的设定,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab的内容。
-u 卸载某一目录。
-v 在export的时候,将共享的目录显示到屏幕上。
5.检验目录/var/lib/nfs/xtab
检验所共享的目录内容,查看/var/lib/nfs/xtab这个文件:
# vi /var/lib/nfs/xtab
/home/cao 192.168.0.1(rw,sync,wdelay,hide,secure,root_squash,
no_all_squash,subtree_check,secure_locks, mapping=identity,anonuid=-2,
anongid=-2)
这就是/home/cao这个共享出去的目录预设NFS里面的属性。
6.showmount
# showmount [-ae] hostname
参数说明:
-a 在屏幕上显示目前主机与Client所连上来的使用目录状态 。
-e 显示hostname这部机器的/etc/exports里面的共享目录。
当要扫瞄某一主机所提供的NFS共享的目录时,就使用showmount -e IP(或主机名称hostname)即可。
7.观察激活的端口号
# netstat -utln
Active Internet connections (only SERVERs)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 《== portmap
tcp 0 0 0.0.0.0:817 0.0.0.0:* LISTEN 《== rpc.xxxx
tcp 0 0 0.0.0.0:1266 0.0.0.0:* LISTEN 《== rpc.xxxx
udp 0 0 0.0.0.0:2049 0.0.0.0:* 《== nfs 的 port
udp 0 0 0.0.0.0:814 0.0.0.0:* 《== rpc.xxxx
udp 0 0 0.0.0.0:1327 0.0.0.0:* 《== rpc.xxxx
udp 0 0 0.0.0.0:111 0.0.0.0:* 《== portmap