Linux系统的NFS服务配置
扫描二维码
随时随地手机看文章
本文以ubuntu系统为例,描述nfs服务的配置方法。
一、服务器配置
1. 安装NFS服务器程序软件包
linux@farsight:~$ sudo apt-get install nfs-kernel-server
2.配置nfs服务的共享目录
linux@farsight:~$sudo vi /etc/exports
配置NFS服务器的关键也就是配置该文件。配置文件中一行即为一条配置项,用于指明网络中的“哪些客户端”共享“哪些目录资源”。导出资源配置项格式如下所示。
共享目录 主机名 (权限)
共享目录表示服务器中导出的共享资源路径,必须使用绝对路径名;
主机名的写法有很多种:
网段:192.168.1.0/24
完整IP:192.168.1.23
主机名称:但此主机名称需要存在于/etc/hosts中或使用DNS可以找到,找到IP即可
支持通配符,如*?
所有主机:*
权限表示赋予每个客户端主机的访问权限。括号内是设置权限参数的位置,权限不止一个时,使用,隔开,主机名和括号连在一起。
权限参数说明如下:
Rw:read-write可读写的权限
Ro:read-only只读权限
no_root_squash:登入NFS主机使用共享目录的用户,如果是用户root,对于此共享目录具有root权限,不建议使用。
root_squash:登入NFS主机使用共享目录的用户,如果是用户root,此用户权限将被压缩为匿名用户,其UID和GID都会被压缩为nobody(nfsnobody)系统账号的身份。
all_squash:不论登入NFS的用户身份为何,其身份都被转换成为匿名用户,即nobody。
anonuid=xxx :指定NFS服务器/etc/passwd文件中匿名用户的UID,但此UID必须存在于/etc/passwd中。
anongid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的GID ,但此GID必须存在于/etc/group中。
Anongid:同anonuid,变成group ID即可。
Sync:数据同步写入到内存与硬盘中
Async:数据先暂存于内存中,而非直接写入硬盘
Secure: NFS通过1024以下的安全TCP/IP端口发送
insecure: NFS通过1024以上的端口发送
hide : 在NFS共享目录中不共享其子目录
no_hide: 共享NFS目录的子目录
subtree_check: 如果共享/source/rootfs之类的子目录时,强制NFS检查父目录的权限(默认)
Zno_subtree_check : 和上面相对,不检查父目录权限
备注:这里所说的匿名用户,指的是/etc/passwd中的nodody用户。
nobody用户对应的组如下:
权限说明:
1.NFS server和NFS client具有相同的UID和账号
如果NFSserver和NFSclient具有相同共享文件账号和相同UID,客户端登入NFSserver时,就会拥有/etc/exports设置的权限
2.NFS server和NFS client具有不同的账号
如果NFSclient不拥有NFSserver共享文件账号,或NFSclient的账号在NFSserver不存在,是否可以读写共享目录,需要查看NFSserver的权限而定,其身份会变为匿名用户nobody
3.NFS client的身份为root
默认情况下,客户端的root身份会被压缩成匿名用户nobody
配置举例:
/source/rootfs 192.168.1.29(rw)
设置共享目录/source/rootfs ,仅192.168.1.29主机允许访问此共享目录,具有读写权限
/source/rootfs 192.168. 1.29 (rw) *(ro)
设置共享目录/source/rootfs,192.1681.29可以读写该共享目录,其他主机只可以读取该共享目录
/source/rootfs 192.168. 1.29(no_root_squash)
设置共享目录/source/rootfs,仅192.168.1.29可以访问和读写,root登录时拥有root权限
/source/rootfs 192.168.1.0/24(rw)
设置共享目录/source/rootfs,仅有192.168.1.0/24网段的主机才可访问和读写此目录文件
/source/rootfs *(rw,all_squash,anonuid=500,anongid=500)
设置共享目录/source/rootfs,所有主机都允许访问此共享目录,具有读写权限,但他们访问该共享目录时,已将其UID、GID设置成500。NFSserver主机中UID、GID=500的权限已经设置好
3.启动nfs服务
通常,NFS服务的守护进程是以持续监听端口的独占方式运行。用户通过使用NFS的初始化脚本,可以手动启停NFS服务。系统管理员在调整共享资源之后,一定要重新启动NFS服务,以便使修改的配置生效。
启动NFS服务:
linux@farsight:~$ sudo /etc/init.d/nfs-kernel-server start
停止NFS服务
linux@farsight:~$ sudo /etc/init.d/nfs-kernel-server stop
重新启动NFS服务
linux@farsight:~$ sudo /etc/init.d/nfs-kernel-server restart
查看NFS服务当前状态
NFS服务开启时显示nfsd running,关闭是显示 nfs not running。
linux@farsight:~$ sudo /etc/init.d/nfs-kernel-server status
二、客户端配置
1. 查看NFS服务器的共享资源
$showmount -e 192.168.1.29
2. 挂载NFS服务器中的共享目录到本地目录/mnt/nfs下
$sudo mount -t nfs 192.168.1.29:/source/rootfs /mnt/nfs
3. 卸载系统中已挂载的NFS共享目录
$ sudo umount /mnt/nfs
4. 修改fstab文件让系统启动时自动挂载NFS文件
#vi /etc/fstab
192.168.1.29: /source/rootfs /mnt/nfs nfs defaults 0 0
linux /etc/fstab的内容主要包括六项
例如下面两行:
LABEL=/ / ext3 defaults 1 1
/dev/sda2 /mnt/D/ vfat defaults 0 0
第一列:设备名或者设备卷标名 (/dev/sda10 或者 LABEL=/)
第二列: 设备挂载目录 (例如上面的 "/" 或者 "/mnt/D/")[!--empirenews.page--]
第三列: 设备文件系统 (例如上面的 "ext3" 或者 "vfat")
第四列:挂载参数 (看帮助 man 8 mount)
对于已经挂载好的设备,例如上面的/dev/sda2,现在要改变挂载参数,这时可以不用卸载该设备,而可以使用下面的命令(没有挂载的设备,remount 这个参数无效)
$ mount /mnt/D/ -o remount,ro (改defaults为ro)
为了安全起见,可以指明其他挂载参数,例如:
noexec (不允许可执行文件可执行,但千万不要把根分区挂为noexec,那就无法使用系统了
nodev (不允许挂载设备文件)
nosuid,nosgid(不允许有 suid 和 sgid 属性)
nouser(不允许普通用户挂载)
第五列:指明是否要备份 (0 为不备份,1 为要备份, 一般根分区要备份)
第六列:指明自检顺序 (0 为不自检,1 或者 2 为要自检, 如果是根分区要设为1,其他分区只能是2)
# This file is edited by fstab-sync - see ‘man fstab-sync‘ for details
/dev/hda1 /boot ext3 defaults 1 2
/dev/hda2 /data ext3 defaults 1 2
/dev/hda3 / ext3 defaults 1 1
/dev/hda5 /oracle ext3 defaults 1 2
/dev/hda6 /home ext3 defaults 1 2
/dev/hda7 swap swap defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0