Ubuntu 16.04 搭建 NFS 文件共享服务器

Ubuntu 16.04 搭建 NFS 文件共享服务器,第1张

服务器端需要安装 nfs-kernel-server 软件包:

$ sudo apt-get update

$ sudo apt-get install nfs-kernel-server

默认情况下,NFS 服务器上定义了某个共享目录,则该目录及其子目录下的所有文件都可被访问。

出于对安全的考虑,客户端任何需要 超级用户 (即 root 用户,UID=0 &GID=0)权限的文件操作都默认映射到 UID=65534 和 GID=65534 的用户,即 Ubuntu 系统中的 nobody:nogroup。

例如客户端使用 root 权限在挂载的共享目录中创建文件时,该文件的 属主 属组 自动变为 nobody:nogroup ,而非 root:root

sudo mkdir -p /var/nfs/gernel

sudo mkdir -p /var/nfs/public

sudo chown nobody:nogroup /var/nfs/gernel

为了使 NFS 服务器定义的共享文件可被指定的客户端主机访问,需要在服务器端的 /etc/exports 文件中添加对应的记录。

该文件的格式如下:

Directory Host(Options ...) Host(Options) #comment

关于 /etc/exports 文件的详细语法格式可参考 man exports 。

文件示例:

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

创建挂载点

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 的权限设定基于 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 文件的示例内容如下:

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

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

传输协议

最初的 NFSv2 由于性能原因使用 UDP 协议,虽然 NFS 添加了自己的 包序列重组 错误检查 功能,但 UDP 和 NFS 都不具备 阻塞控制 算法,所以在大型的互联网络环境中缺乏足够的性能。

NFSv3 提供了 UDP 和 TCP 协议之间的选择。NFSv4 只能使用 TCP 协议。

随着 CPU,内存等硬件设备和网络传输速度的提高,最初由于性能需求而倾向 UDP 协议的选择也变得不再必要。

State

NFSv2 和 NFSv3 是 无状态 的连接,服务端不会跟踪客户端对共享目录的挂载情况,而是使用 "cookie" 来记录一次成功的挂载。"cookie" 不会因为服务器重启而删除,可以用来在服务器挂掉之后保留客户端的连接信息。

NFSv4 是 有状态 的连接,客户端和服务端都会维护文件操作纪录及文件锁的状态。所以不再需要 "cookie" 的使用。

文件锁

早期版本的 NFS 协议(v2 &v3)由于是 无状态 的连接,它们并不清楚哪些主机正在使用哪些文件。但是文件锁的实现又需要获取状态信息。所以早期协议中的文件锁是独立于 NFS 实现的。

而 NFSv4 将文件锁的实现整合到了核心协议中,虽然此举增加了复杂度,但同时也解决了早期版本中的很多问题。

但是为了兼容使用 V2 和 V3 协议的客户端,独立的 locked statd 守护进程仍旧需要。

安全相关

NFS 协议最初在设计时并不关注安全性,NFSv4 通过引入对更强大的安全服务和身份验证的支持,加强了该协议的安全性。

传统的 NFS 协议大多使用 AUTH_SYS 验证方式,基于 UNIX 的用户和组标识。在这种方式下,客户端只需要发送自己的 UID 和 GID 并与服务器上的 /etc/passwd 文件内容作对比,以决定其拥有怎样的权限。

所以当多个客户端存在 UID 相同的用户时,这些用户会拥有相同的文件权限。更进一步,拥有 root 权限的用户可以通过 su 命令切换到任意 UID 登录,服务器会因此给予其对应 UID 的权限。

为了防止上面的问题出现,服务器可选择使用更健壮的验证机制比如 Kerberos 结合 NFS PRCSEC_GSS。

NFS 共享目录的访问控制基于 /etc/exports 文件中定义的主机名或 IP 地址。但是客户端很容易针对其身份和 IP 地址造假,这也会导致一些安全问题。

NFSv4 只使用 TCP 作为自己的传输协议,而且通常只开放 2049 端口进行数据传输。在配置防火墙时,除了放开 2049 端口的限制外,还要时刻注意数据传输的源地址和目标地址。

win10 系统默认不能挂载 NFS 共享目录,需要进入 控制面板 - 程序 - 程序和功能 - 启用或关闭 Windows 功能 ,勾选上 NFS 服务

UNIX and Linux System Administration Handbook, 4th Edition

How to Mount an NFS Share Using a Windows 10 Machine

如何做一台文件服务器\x0d\x0a假如你是某公司的系统管理员,现在公司要做一台文件服务器。公司购买了一台某品牌的服务器,在这台服务器内插有三块硬盘。 \x0d\x0a公司有三个部门---销售,财务,技术。每个部门有三个员工,其中一名是其部门经理(另两名是副经理)1. 在三块硬盘上共创建三个分区(盘符),并要求在创建分区的时候,使磁盘实现容错的功能; \x0d\x0a2. 在服务器上创建相应的用户帐号和组; \x0d\x0a命名规范,如:用户名:sales-1,sales-2??;组名:sale,tech?? \x0d\x0a要求用户帐号只能从网络访问服务器,不能在服务器本地登录 \x0d\x0a3. 在文件服务器上创建三个文件夹分别存放各部门的文件,并要求只有本部门的用户能访问其部门的文件夹(完全控制的权限),每个部门的经理和公司总经理可以访问所有文件夹(读取),另创建一个公共文件夹,使得所有用户都能在里面查看和存放公共的文件; \x0d\x0a4. 每个部门的用户可以在服务器上存放最多100M的文件; \x0d\x0a5. 做好文件服务器的备份工作以及灾难恢复的备份工作; \x0d\x0a发送给我的好友 提醒我回答有更新 \x0d\x0a你可以把这个生意经分享给旺旺,MSN或QQ上的好友 \x0d\x0a\x0d\x0a当这个生意经的回答有更新时,您可以及时收到提醒 \x0d\x0a\x0d\x0a发送给好友\x0d\x0a\x0d\x0a生意经链接: \x0d\x0a窗体顶端\x0d\x0a\x0d\x0a发送描述: \x0d\x0a窗体底端\x0d\x0a\x0d\x0a郁闷啦!看看这个问题,你一定要帮我啊!\x0d\x0a \x0d\x0a这个东东太实用了,看完记得收藏哦!\x0d\x0a \x0d\x0a旺旺浮出提醒好友\x0d\x0a\x0d\x0a生意经的地址已经复制\x0d\x0a您可以粘帖到MSN或者邮件发给您的好友 \x0d\x0a\x0d\x0a收藏成功,回答有更新时旺旺会浮出提醒你哦!现在就去查看我的收藏 \x0d\x0a\x0d\x0a网友回答 \x0d\x0a\x0d\x0a(1) 学会安装和配置文件服务器。\x0d\x0a\x0d\x0a(2) 学会服务器端共享文件夹的配置和管理。\x0d\x0a\x0d\x0a(3) 学会客户端访问共享文件夹的方法。\x0d\x0a\x0d\x0a(4) 学会分布式文件系统的设置方法。\x0d\x0a\x0d\x0a(5) 实验学时:2\x0d\x0a\x0d\x0a2 实验相关理论与知识\x0d\x0a\x0d\x0a计算机网络的基本功能是在计算机间共享信息,文件共享可以说是最基本、最普遍的一种网络服务。虽然越来越多的用户购置专用文件服务器(如NAS),但是通用操作系统提供的文件服务器功能也非常实用,完全能满足一般的文件共享需求,下面主要介绍Windows Server 2003文件服务器的配置、管理和应用。\x0d\x0a\x0d\x0a文件服务器负责共享资源的管理和传送接收,管理存储设备(硬盘、光盘、磁带)中的文件,为网络用户提供文件共享服务,也称文件共享服务器。除了文件管理功能之外,文件服务器还要提供配套的磁盘缓存、访问控制、容错等功能。部署文件服务器,主要要考虑以下3个因素。\x0d\x0a\x0d\x0a·存取速度:快速存取服务器上的文件,例如可提供磁盘缓存加速文件读取。\x0d\x0a\x0d\x0a·存储容量:要有足够的存储空间以容纳众多网络用户的文件,可使用磁盘阵列。\x0d\x0a\x0d\x0a·安全措施:实现网络用户访问控制,确保文件共享安全。\x0d\x0a\x0d\x0a文件服务器主要有两类解决方案,一类是专用文件服务器,另一类是使用PC服务器或PC计算机组建的通用文件服务器。\x0d\x0a\x0d\x0a专用文件服务器是专门设计成文件服务器的专用计算机,以前主要是运行操作系统、提供网络文件系统的大型机、小型机,现在的专用文件服务器则主要指具有文件服务器的网络存储系统,如NAS和 SAN。NAS独立于操作系统平台,可支持多种操作系统和网络文件系统,提供集中化的网络文件服务器和存储环境,比一般的文件服务器的功能更强大,可看作是专用存储服务器,可为那些访问和共享大量文件系统数据的用户提供高效、性能价格比优异的解决方案。SAN全称存储区域网络,是一种用户存储服务的特殊网络,通常由磁盘阵列、光盘库、磁带库和光纤交换机组成。NAS可作为独立的文件服务器,提供文件级的数据访问功能,更适合文件共享。而SAN提供数据块级的数据访问功能,更适合数据库和海量数据。\x0d\x0a\x0d\x0a目前一般用户使用PC服务器或PC计算机,通过网络操作系统来提供文件服务,UNIX、Linux、Novell、 Windows等操作系统都可提供文件共享服务。Windows网络操作系统,如Windows NT Server、Windows2000 Server和最新的Windows Server 2003由于操作管理简单、功能强大,在中小用户群中的普及率非常高,许多文件服务器都运行Windows网络操作系统。下面将重点以Windows Server 2003为例介绍文件服务器的配置、管理和应用。\x0d\x0a\x0d\x0a3 实验环境与设备\x0d\x0a\x0d\x0aC/S模式的网络环境,包括一台Windows XP客户机和一台Windows Server 2003服务器。\x0d\x0a\x0d\x0a两种可选的物理拓扑(交叉线连接或通过集线器/交换机用直连线连接)。\x0d\x0a\x0d\x0a4 实验内容与步骤\x0d\x0a\x0d\x0a4.0 服务器的基本网络配置,包括IP地址为"192.168.105.XX"、网关为"192.168.105.254"等。(注:"XX"代表你配置机器的主机编号,"nXX"代表你的服务器主机名,例如你坐在5号机上则"XX"代表"05","1XX"代表"105",配置此机的IP地址为"192.168.105.5"、主机名为"n05",下同)。\x0d\x0a\x0d\x0a4.1 安装和配置文件服务器\x0d\x0a\x0d\x0a文件服务器提供网络上的中心位置,可供存储文件并通过网络与用户共享文件。当用户需要重要文件时,可以访问文件服务器上的文件,而不必在各自独立的计算机之间传送文件。如果网络用户需要对相同文件和可通过网络访问的应用程序的访问权限,就要将该计算机配置为文件服务器。默认情况下,在安装Windows Server 2003系统时,将自动安装"Microsoft网络的文件和打印共享"网络组件。如果没有该组件,可通过网络连接属性对话框安装。\x0d\x0a\x0d\x0a1.准备工作\x0d\x0a\x0d\x0a在部署文件服务器之前,应当做好以下准备工作。\x0d\x0a\x0d\x0a·划出专门的硬盘分区(卷)用于提供文件共享服务,而且要保证足够的存储空间,必要时使用磁盘阵列。\x0d\x0a\x0d\x0a·磁盘分区(卷)使用NTFS文件系统,因为FAT32缺乏安全性,而且不支持文件和文件夹压缩、磁盘配额、文件加密或单个文件权限等重要特性。\x0d\x0a\x0d\x0a提示:使用Windows Server 2003自带的工具即可将FAT32转换成NTFS格式。该工具名为Convert.exe,位于Windows安装目录下的System32目录中。在命令行状态运行该工具即可,如Convert E:/FS:NTFS。\x0d\x0a\x0d\x0a·确定是否要启用磁盘配额,以限制用户使用的磁盘存储空间。\x0d\x0a\x0d\x0a·确定是否要使用索引服务,以提供更快速、更便捷的搜索服务。\x0d\x0a\x0d\x0a2.配置文件服务器\x0d\x0a\x0d\x0a只要将Windows Server 2003计算机上的某个文件夹共享出来,就会自动安装文件服务器,也可通过"配置您的服务器向导"工具来安装文件服务器角色。这两种方法的差别是,第二种方法提供更多的选项,并在程序菜单中提供文件服务器管理台工具。这里介绍采用第二种方法的基本步骤。\x0d\x0a\x0d\x0a(1) 启动"配置您的服务器向导"工具。默认情况下,登录Windows Server 2003时将自动启动"管理您的服务器"(也可从控制面板中选择【管理工具】→【管理您的服务器】),单击【添加或删除角色】。另一种方法是直接从控制面板中选择【管理工具】→【管理您的服务器】→【配置您的服务器向导】。单击【下一步】按钮。\x0d\x0a\x0d\x0a(2) 在【配置选项】界面中选择【自定义配置】,单击【下一步】按钮。\x0d\x0a\x0d\x0a(3) 在【服务器角色】界面中,如果【文件服务器】的【已配置】状态为"否",就单击【文件服务器】,然后单击【下一步】。\x0d\x0a\x0d\x0a注意:如果【文件服务器】的【已配置】状态为"是",就单击【文件服务器】,再单击【下一步】按钮打开【角色删除确认】界面,并选择【删除文件服务器角色】复选框,即可删除文件服务器角色,这样该服务器上的文件和文件夹就不再共享,依赖于这些共享资源的网络用户、程序或宿主都将无法与它们连接。\x0d\x0a\x0d\x0a(4) 出现【文件服务器磁盘配额】对话框中,为服务器上所有NTFS分区设置默认的磁盘配额。勾选【为此服务器的新用户设置默认磁盘空间配额】和【拒绝将磁盘空间给超过配额限制的用户】。单击【下一步】按钮。默认情况下是没有启用磁盘配额。\x0d\x0a\x0d\x0a(5) 出现【文件服务器索引服务】对话框,确定是否要使用索引服务。单击【下一步】按钮。一般情况下不需索引服务,只有在用户要经常搜索该服务器上的文件内容时才启用它。\x0d\x0a\x0d\x0a(6) 出现【选择总结】对话框,查看和确认已经选择的选项,单击【下一步】按钮。\x0d\x0a\x0d\x0a本例中有"设置默认磁盘配额"、"安装文件服务器管理"和"运行共享文件夹向导来添加一个新的共享文件夹或共享已有文件夹"等选项。\x0d\x0a\x0d\x0a(7) 自动完成相关配置后,出现共享文件夹向导,根据提示配置共享文件夹以供其他用户共享。只有配置了共享文件夹之后,文件服务器才能建立。\x0d\x0a\x0d\x0a(8) 单击【下一步】按钮,出现【文件夹路径】对话框,指定要共享的文件夹路径。可通过【浏览】在C盘目录下新建一个【FileShare】作为共享目录,此时【文件夹路径】输入框中将出现【C:FileShare】(如果C盘中已经建立过此文件夹,才可以在此输入框中直接输入)。\x0d\x0a\x0d\x0a(9)单击【下一步】按钮,出现【名称、描述和设置】对话框,指定共享名。\x0d\x0a\x0d\x0a(10) 单击【下一步】按钮,出现【权限】对话框,指定共享权限为【管理员有完全访\x0d\x0a\x0d\x0a问权限;其他用户有只读访问权限】,单击【完成】按钮。这里提供了几种预置的权限,也可以自定义权限。\x0d\x0a\x0d\x0a(11)【共享成功】对话框中显示共享成功,给出新建共享文件夹的信息。如果要继续设置其他共享文件夹,则选中下面的复选框。单击【关闭】按钮,【完成】。\x0d\x0a\x0d\x0a至此文件服务器配置就完成了。接下来可执行各项文件管理任务。\x0d\x0a\x0d\x0a3.文件服务器管理工具(以下方法至少掌握一种)\x0d\x0a\x0d\x0aWindows Server 2003提供了用于文件服务器配置管理的多种工具。\x0d\x0a\x0d\x0a·文件服务器管理控制台:打开"管理您的服务器"工具,在【文件服务器】区域单击【管理此文件服务器】,打开该控制台。要使用"配置您的服务器向导"工具安装文件服务器,可从程序菜单中选择【管理工具】→【文件服务器管理】命令打开该控制台。\x0d\x0a\x0d\x0a·"共享文件夹"管理工具:也可通过"计算机管理"工具中的"共享文件夹"管理工具来执行共享文件夹的配置管理,从程序菜单中选择【管理工具】→【计算机管理】,展开【共享文件夹】节点即可。\x0d\x0a\x0d\x0a·Windows资源管理器:可直接将文件夹配置为共享文件夹。\x0d\x0a\x0d\x0a·命令行工具:如net share可显示有关本地计算机上全部共享资源的信息。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/613.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-01-29
下一篇2023-01-29

发表评论

登录后才能评论

评论列表(0条)

    保存