一、NFS服务器简介
什么是NFS呢?它是Network File system的缩写,即网络文件系统。
NFS是由Sun公司开发,并于1984年推出的一个RPC服务系统,它使我们能够达到文件的共享,在不同的系统间使用,所以它的通信协议设计与主机及操作系统无关。当用户想使用远程文件时只要用“mount”命令就可把远程文件系统挂接在自己的文件系统之下,使远程的文件与使用本地计算机上的文件一样。
例如在计算机A上,要把计算机B上的/usr/man挂接到A的/usr/man只需执行如下命令即可:
mount B:/usr/man /usr/man
用户不但可以mount(挂接)目录,而且可以挂接一个文件。在挂接之后用户只能对文件做读取(或者写入)的操作,而不能在远程计算机上把此文件或目录移动或删除,但是如果挂接 /usr/man后,则不能再挂接 /usr/man底下的目录,否则会发生错误。
NFS就是一种促使servers(服务器)上的文件能被其他的计算机挂接而达到资源共享的网络文件系统,使用这些文件的计算机就可称为Client(客户机),一个客户机可以从服务器上挂接一个文件或者一个层次的目录。然而,事实上任何一台计算机都可以是NFS服务器或NFS客户机,甚至同时为NFS 服务器和NFS客户机。
NFS服务器所共享出来的文件或目录都记录在/etc/exports文件中,当启动NFS服务器时,脚本/etc/rc.d/rc会自动启动exportfs程序,搜索/etc/exports这一个文件是否存在,并且赋予正确的权限给所有共享出去的文件或目录。
但需要注意的是,只有服务器所共享出去的文件或目录,NFS客户机才能够挂接。同样,当启动客户机时,系统会自动去挂接所有服务器共享的目录或文件,而挂接到的所有路径都会记录在/etc/fstab下。
当客户机挂接一个目录或文件时,并不是说复制服务器上的这一个目录或文件到本地的计算机上,而是在使用时从服务器上读取文件到本地的内存中,因此,可以用cd进入这一个挂接到的目录,就如同进入本地的目录一样
二、配置NFS服务器时的几个重点
配置NFS服务器的一般步骤:
(1)确定计算机为NFS文件系统的服务器。
(2)对服务器上的硬盘进行分区,确定哪一些分区是要用来作为客户机所共享的文件系统。
(3)确定每一台客户机的访问参数(即读写的权限)。
(4)创建/etc/exports文件(一般系统都有一个缺省的exports文件,可以直接修改;如果没有,自己创建一个)
(5)重新启动NFS服务器或者用命令exportfs -a输出所有的目录,并且用nfsd &启动nfsd守护进程。
配置时的注意事项:
(1)检查/etc/exports输出路径的权限,确定只有root才能修改,其他用户只能读。
(2)假如计算机没有NIS服务,当更改资料时要修改下面的文件:
/etc/passwd
/etc/group
/etc/hosts
/etc/ethers
(3)为自己的网络设置安全。
/etc/exports文件的例子
/ master(rw) trusty(rw,no_root_squash)
/projects proj*.local.domain(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
exports文件的格式为:
共享目录 主机(选项)
这里需要注意:
ro 该主机有只读的权限
rw 该主机对该共享目录有即可读又可写的权限
root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成nobody用户。
no_root_squash 客户机用root用户访问该共享文件夹时,不映射root用户。
all_squash 客户机上的任何用户访问该共享目录时都映射成nobody用户。
anonuid 将客户机上的用户映射成指定的uid的用户。
上面的示例文件中:
/ zhang(rw) wang(rw,no_root_squash)
该命令行表示共享服务器上的 / 目录,只有zhang和wang两台主机可以访问,并且两台主机对该共享目录都有可读可写的权限;zhangr主机在用root身份访问时,将客户机的 root用户映射成服务器上的nobody用户(root_squash参数,该参数为缺省参数),相当于在服务器上使用nobody用户访问该目录; wang主机在用root用户访问该共享目录时,不映射root用户(no_root_squash参数),即相当于在服务器上用root身份访问该目录。
/projects proj*.local.domain(rw)
该命令行表示共享/projects目录,local.domain域中所有以proj开头的主机都可以访问该目录,并且都有读写的权限,客户机上的任何用户在访问时都映射成nobody用户(all_squash参数,该参数为缺省参数)。这里需要特别说明的是,如果客户机要在该共享目录上保存文件,则服务器上的nobody用户对/projects目录必须要有写的权限。
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
该命令行表示共享/home/joe目录,只有名为pc001的主机可以访问,pc001主机对该目录有读写的权限,并且所有的用户都映射成服务器上的uid为150、gid为100的用户。
设置NFS客户机的操作步骤
(1)编辑好/etc/fstab这一个文件,确定要挂接的路径都在fstab中。
(2)依照fstab所设置的内容,在客户机上设置好挂接点(mount point)。(mount_points就是用mkdir设置exports所输出的路径)
(3)确定所要挂接的路径,都会出现在/etc/exports文件中
(4)可以执行mount命令连结server上的共享目录(mount-a)
如果只是临时使用,可以直接用mount命令:
mount servername:共享目录 本地目录,例如:
mount 192.168.100.1:/share /mnt
该命令将192.168.100.1上的/share目录挂接到本地的/mnt目录(当然,服务器端必须要先设置共享该目录)。
/etc/fstab文件的例子
192.168.100.1:/home/joe /mnt nfs rw 0 0
mount的语法
mount –t type[-rv] -o[option] server:pathname mount_point
mount:
mount-a把/etc/fstab中所列的路径全部挂上
mount myhost:/usr/local /usr/local/myshare
把myhost的/usr/local目录挂接到client的 /usr/local/myshare上并且是readonly上。
-t type:用户所要挂接的文件系统类型,如nfs
-r:所挂接的路径定为readonly
-v:挂接过程的每一个动作,都有消息传回到屏幕上
umount命令:
不使用该共享目录时,可以把该目录卸载。
umount mount_point,例如:
umount /mnt
umount-a卸载所有已经挂接上的路径
NFS服务器配置实例
某公司需要在网络上共享一个文件夹,所有人都只有只读权限,且只有192.168.1.0/24子网的用户可以访问,试通过NFS共享该文件夹。NFS服务器的IP地址是192.168.1.1。
具体操作步骤如下:
(1)以root身份登录,在/目录下创建目录share。
[root@bearzhang /]#mkdir share
(2)编辑/etc/exports文件,在该文件中加入下面的命令行。
/share 192.168.1.0/24(ro,root_squash)
“/share”表示要共享的目录,192.168.1.0/24表示允许访问的主机(这里是一个子网的主机),括号内的ro表示客户机上的用户对该共享目录只有只读权限,root_squash表示当客户机上的root用户访问该共享目录时,映射该用户为匿名用户,即当客户机上的root用户访问该共享目录时相当于服务器上的anonymous(nobody)用户。
(3)在192.168.1.0/24子网上的任意一台客户机上安装共享目录。
[root@bearzhang root]#mount 192.168.1.1:/share /mnt
上面命令行的意思是:将192.168.1.1上的/share目录作为一个分区挂接到本机的/mnt目录下。
(4)测试权限。
转载请注明:IT运维空间 » 运维技术 » NFS服务器配置实例教程
发表评论