Ubuntu16.04搭建NFS 文件共享服务器的方法

2019-01-16 22:07:41王振洲

列出 nfs 服务器上的共享目录

$ showmount -e 192.168.56.102 Exports list on 192.168.56.102: /home/starky 192.168.56.1 /var/nfs/public * /var/nfs/gernel 192.168.56.0/24

创建挂载点

sudo mkdir -p /mnt/nfs/gernel sudo mkdir -p /mnt/nfs/public sudo mkdir -p /mnt/nfs/starky

挂载远程目录

sudo mount 192.168.56.102:/var/nfs/gernel /mnt/nfs/gernel sudo mount 192.168.56.102:/var/nfs/public /mnt/nfs/public sudo mount 192.168.56.102:/home/starky /mnt/nfs/starky

权限测试

如截图所示:

nfs 权限测试

NFS 的权限设定基于 Linux 文件系统的权限管理,即客户端挂载远程共享目录后,会把它们当成本地磁盘目录一样对待,也是根据文件的属主(组)及其对应的权限设定来限制访问。

gernel 目录的属主(组)为 nobody:nogroup(65534:65534),所以虽然该目录为读写权限,非 root 用户无法执行新建操作。而 root 用户由于 NFS 默认的安全机制,会自动映射到 nobody:nogroup。

由于我在客户端和服务端都有一个名为 starky 的用户,且它们的 UID:GID 都为1000:1000,所以服务端的 /home/starky 目录可以直接被客户端的 starky 用户访问。且由于 no_root_squash 选项,通过 sudo 命令创建的文件其属主仍为 root(而不会再映射为 nobody)。

当然这会导致一些安全问题,比如多个客户端同时都有 UID(GID)为1000的用户(不管用户名是什么),则这些用户会共享服务端 /home/starky 目录里的文件权限。

四、系统启动时自动挂载共享目录

可编辑 /etc/fstab 文件令挂载共享目录的 mount 操作成为系统的固定配置(手动输入的 mount 命令属于临时挂载,重启会自动卸载),使得系统重启后可以自动挂载远程文件系统。 /etc/fstab 文件的示例内容如下:

# filesystem mountpoint fstype flags dump fsck 192.168.56.102:/var/nfs/gernel /mnt/nfs/gernel nfs rw,bg,intr,hard,nodev,nosuid 0 0 192.168.56.102:/var/nfs/public /mnt/nfs/public nfs4 ro,bg,intr,soft,nodev,nosuid 0 0 192.168.56.102:/home/starky /mnt/nfs/starky nfs rw,bg,intr,hard,nodev,nosuid 0 0 附录:

附录:

1. /etc/exports 文件中的 Host 格式

/etc/exports 文件的格式为: Directory Host(Options ...) Host(Options) #comment

其中的 Host 项用来指定可访问对应共享目录的主机,其格式可分为以下几种:

单个主机

Host 项可以为一个或多个单独的 TCP/IP 主机名或 IP 地址

admin admin.starky.net 192.168.56.101