FTP 不能共享NFS 文件夹

2020-11-13 05:10唐山市路南区教育局黄健
网络安全和信息化 2020年11期
关键词:文件夹客户端身份

■ 唐山市路南区教育局 黄健

编者按:在某些情况下,单位可能会同时用到FTP 和NFS,笔者遇到在该场景下,某单位的在线教学平台遭遇FTP 不能共享NFS 文件夹的问题。本文对该问题进行了解析。

FTP 和NFS提供的都是文件共享服务,应用都比较广泛。不过,二者应用场景的区别还是比较大的。

FTP 主要应用于互联网环境,允许未知客户端访问,客户端只需通过IP 地址、端口以及分配的用户账户即可访问FTP 服务器,没有其它特殊要求。NFS 多用于几台或几十台计算机共享存储空间。一般情况下,这些计算机必须获得NFS 服务器授权,才能访问NFS 共享存储空间。

尽管FTP 和NFS 同时应用的案例不多见,在林林总总的实际生产环境中,总会出现FTP 和NFS 一起应用的场景。笔者在部署某单位的在线教学平台时,就不得不面临这样的场景,并遭遇FTP 不能共享NFS 文件夹的问题。

该单位的在线教学平台由一系列负载均衡服务器、缓存网络服务器、下载服务器、上传服务器、视频转换服务器、Web 服务器、数据库服务器及直播服务器构成。每类服务器以集群方式对外提供服务,以满足在线考试等高并发需求。平台的网络拓扑结构如图1 所示。

该单位通过租用某云平台的主机来部署上述服务,共租用了23 台云主机,每台云主机均默认配备了一块40 GB的系统盘。该单位还租用了23 块云硬盘,其中1 块20 TB云硬盘用来存储非结构化的教学资源,挂在在部署NFS服务器的云主机上,23 台云主机以NFS 文件共享方式共享该20 TB的存储空间。1块2 TB 的云硬盘挂在在部署数据库服务器的云主机上,用来存放在线教学平台结构化的数据(数据库)。其它21 块云硬盘都只有300 GB 存储空间,用于存放平台程序及其数据。

该在线教学平台以FTP方式对外提供上传、下载及网盘服务,因此需要在Web 服务器、上传服务器、下载服务器上部署FTP 服务。笔者在这些服务器时部署FTP 服务时,需为某用户账户指定的同一个文件夹为作为FTP 共享文件夹,也就是需要NFS 文件夹。

图1 单位在线教学平台网络拓扑结构图

笔者先将NFS 共享文件夹挂载成本地磁盘,再按需求指定FTP 共享文件夹,同时授予指定用户账户文件“读取”“写入”“删除”“追加”权限,授予指定用户账户目录“创建”“删除”“列表”及子目录对应权限(如图2 所示)。

配置好FTP 服务器后,笔者使用FTP 客户端工具“Leap FTP”上传文件,以此来测试FTP 服务。经测试,使用Leap FTP 可以连接到FTP 服务器,可以访问到FTP 共享文件夹,只是在上传文件时报“can't access file”错误。如图3所示。

出现“不能访问文件”错误的原因有很多,在排除文件被占用等情况后,笔者开始怀疑是不是NFS 权限设置问题。NFS 服务不具备用户验证功能,NFS 服务器会将客户端的访问映射为匿名用户nfsnobody。因此,在配置NFS 共享目录时,需要为该目录配置相应的访问权限。

图2 对指定用户账户文件授予各种权限

图3 使用Leap FTP 连接FTP 服务器并访问FTP 共享文件夹

经检查,笔者已将NFS 共享目录指定为nfsnobody 所有,而且通过Windows 自带的文件资源管理器可以打开此共享文件夹,可以复制、粘贴和创建文件,可以创建和删除文件夹,说明上面出现的错误不是NFS 权限的问题。

根据NFS 用户身份映射原理,如果客户端当前所使用的用户身份是root,默认情况下,当客户端访问NFS 服务器时,在NFS 服务器会将其用户身份映射为nfsnobody。笔者对比了客户端上加载NFS 所必需的“Client for NFS”服务和FTP 服务器上的“FileZilla Server FTP server”服务(如图4 所示)。

二者在登录身份上有明显差别,“Client for NFS”服务的登录身份是“网络服务”,而“FileZilla Server FTP server”服务的登录身份是“本地系统账户”。

笔者由此猜测,是不是正常访问NFS 文件夹时,依赖的是“Client for NFS”服务,该服务使用“root”身份访问NFS 服务器,NFS 服务器再将其身份映射为nfsnobody。

如果将NFS 共享文件夹装载成本地磁盘后,在FTP 服务器上再将其所指定为FTP共享文件夹,而“FileZilla Server FTP server”服务则是以本地系统账户身份访问该文件夹,并不是“Client for NFS”服务访问的NFS 文件夹。因此,客户端访问NFS服务器的身份不是“root”。NFS 服务器将非“root”用户身份视作其它用户(other),并不会将其映射为nfsnobody用户,这有可能就是前面所报“can't access file”错误的原因。

根据上述分析,在指定FTP 共享文件夹时,如果将所指定的文件夹的路径由本地路径改成NFS 共享目录的路径,是不是就可以解决共享NFS 目录的问题呢?

图4 NFS“Client for NFS”服务和FTP“FileZilla Server FTP server”服务对比

图5 将NFS 共享目录指定为FTP 共享文件夹

笔者本着试一试的想法,直接将NFS 共享目录指定为FTP 共享文件夹(如图5 所示)。

重新指定FTP 共享文件夹后,仍用FTP 客户端工具leadftp 测试FTP 服务。经测试,可以正常上传和下载文件,不能将NFS 文件夹作为FTP 共享文件夹的问题最终得以解决。

猜你喜欢
文件夹客户端身份
你的手机安装了多少个客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
Fast Folders,让你的文件夹四通八达
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
跟踪导练(三)(5)
妈妈的N种身份
身份案(下)
不容忽视的空文件夹