NFS服务器为了使得其他系统能使用FreeBSD上的硬盘空间,就需要运行NFS服务进程。NFS服务器使用了几个守护进程用于提供NFS服务。最基本的提供NFS服务的系统至少要运行nfsd和mountd守护进程,nfsd用于处理NFS协议,而mountd用于处理客户的mount请求。此外,由于NFS使用RPC远程调用,因此portmap、rpc_lockd、rpc_statd等RPC守护进程都可以用来帮助提供更高效的服务。
这些守护进程一般应该在系统启动时载入,因此需要在rc.conf中更改相关的参数:nfs_server_enable, rpc_statd_enable, rpc_lockd.enable和portmap_enable参数将对应相应的守护进程。
那么系统重起之后,就有了能共享文件出去的能力,余下的工作只是用来配置需要共享那些目录,以及进行何种限制以保证安全性,这些设置工作需要更改/etc/exports文件:
# cat /etc/exports/usr/src/sys -maproot=daemon ns host2/usr/ports -ro -network 192.168.1.0
从这个例子中可以看出exports文件的格式,首先是定义要共享出去的文件目录,必须使用绝对路径,而不能使用是符号连接。后面就是对这个目录进行访问限制的参数,用于保证安全性。第一行设置中,将/usr/sys/src目录共享出去,但限制客户机上的root用户等价于本机上的daemon用户,以避免客户机上的root用户拥有这个服务器上的root权力,进行非法操作,此后的ns和host2参数是主机名,这就限制只有ns和host2才能共享这个/usr/sys/src目录。第二行设置共享了/usr/ports目录,但限制为只允许读取,并且也只有192.168.1.0网络上的计算机才能访问这个共享目录。
目录的访问限制中具有多种选项,这些选项对于保证NFS的安全性相当重要。
-ro---以只读形式输出文件系统,远程客户只能读不能写这个目录
-maproot---将客户机上的root用户映射为服务器中的某个用户和族,也可以使用UID和GID的形式,如maproot=root,maproot=10,或maproot=10:1。这个设置选项可以用来保护服务器上的文件系统不被客户中的使用者非法访问。
-mapall---将客户上的所有用户都映射为本机的某个用户,使用形式与maproot相同。它同样也是用于保护服务器文件系统的安全性的。
-alldirs---允许安装该目录下的所有子目录。
-network---允许一定网络上的计算机可以装载这个文件系统。
-mask---用于修订 network中的网络号使用的缺省掩码,可定义对网络的一部分开放文件系统。
当更改了exports文件之后,需要向mountd发送SIGHUP信号,使其重读exports文件的内容。
未完,待续。。。