小型企业搭建内部网络文件存储服务器有哪几种方法?

小型企业搭建内部网络文件存储服务器有哪几种方法?,第1张

使用电脑主机或者服务器搭建FTP/SAMBA/NFS服务

使用NAS网络存储服务器

使用启耘Box作为网络文件存储服务器

NAS是一种通过RJ45网络接口与网络交换机相连接的存储设备,主要用于局域网环境中多台计算机主机共享存储空间和,为局域网中的计算机提供文件共享服务,因此又称为文件服务器。

一台NAS存储设备至少包括硬件和针对文件共享应用优化过的 *** 作系统两个基本组成部分。硬件包括CPU、内存、主板、包含RAID功能的多块硬盘。小型NAS的CPU、内存一般都嵌入在主板中,硬盘一般在2-5块,支持RAID冗余功能;软件一般是由开源 *** 作系统(FreeBSD、Linux)等针对文件共享应用优化裁剪而来,FreeNAS就是一款很流行的文件共享专用FreeBSD *** 作系统;也有用windowsXP裁剪而成的,微软也有一款专用的NAS *** 作系统WSS。

服务器端需要安装 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 19216856102:/var/nfs/gernel /mnt/nfs/gernel
sudo mount 19216856102:/var/nfs/public /mnt/nfs/public
sudo mount 19216856102:/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

 CentOS的安装界面分为图形模式和文本模式两种。这里,很多人会选择文本安装模式,并且选择命令模式来 *** 控系统,这样可以为系统节省很多资源。这里编者特别地来体验一下图形模式安装。单击回车键即可开始安装。
安装初始界面
随后,你可以选择光盘安装或者是硬盘安装,进入图形安装界面。
下面的几个步骤,与其他系统安装过程无异:选择系统语言、键盘布局、创建分区、网络设备、时钟以及用户名和密码等。当然,你可以进行在“网络设备”进行手工设置,配置主机名以及其他设置。这里,编者选择系统安装完成之后,通过VI进行配置。
网络设备
系统配置完成,单击“下一步”开始安装CentOS 55
第3页:图形化安装过程(二)
图形化安装过程(二)
系统安装完成之后,需要重新引导。之后,系统还要进行几项基本设置。
欢迎界面
确认是否启用防火墙,同时选择信任的服务
SELinux设置
同时,系统需要你进行当前时间的校对和用户及密码的设置。自此,系统安装才算完成。
第4页:安装Samba
安装Samba
完成CentOS 55系统安装之后,下面开始今天的主要任务:通过Samba服务器来构建文件服务器。
在我们使用Windows作为客户机的时候,通常有文件、打印共享的需求。作为Windows网络功能之一,通常可以在Windows客户机之间通过Windows Network固有的功能实现这些要求。然而,通过Samba我们也可以让一台CentOS主机来兼Windows网络,实现同样的功能,进而充分发挥CentOS主机的可用性。
注:Samba是一个工具套件,是在Linux和UNIX系统上实现SMB(Server Message Block)协议的一个免费软件,由服务器及客户端程序构成。

首先,通过 yum 来在线安装Samba。
注:Yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
在线安装Samba
因为是在线安装,所以完成安装通常需要一段时间,系统会不断地做出提示。
Samba安装成功

装Gene6
FTP服务器软件,
硬盘的话缓存要16M的,内存2G,网卡可以配多张来分流
不同部门的资料放在不同的文件夹内
访问权限的话,可以很灵活配置的,肯定可以实现你的要求
要的话,我发个G6
FTP给你装上去试试

version: '3' //docker-compose 版本 3x

services:  //服务的配置信息

    FileServer: //自己定义的服务

        image: nginx:latest  //使用的镜像名

        container_name: 'FileData' // docker容器名

        restart: always //重启策略 always 总是重新启动

        ports: - '8003:8003'  //映射端口信息 宿主端口:容器端口

        volumes: // 定义了卷信息,提供给 services 中的 具体容器使用

            - '/nginx/confd/defaultconf:/etc/nginx/confd/defaultconf' // 用户自己指定的目录:映射目录

            - '/nginx/log:/var/log/nginx'

            - '/file:/usr/share/nginx/file'

            - '/web:/usr/share/nginx/html'    //其他html连接目录

        command: /bin/bash -c "nginx -g 'daemon off;'"  //覆盖容器启动后默认执行的命令

autoindex on; //是否显示文件目录 on显示  off 关闭显示

autoindex_exact_size on; // 显示文件确切大小 on 显示字节单位 off 显示出文件的大概大小,单位是KB或者MB或者GB

autoindex_localtime on; //默认为off,显示的文件时间为GMT时间 ;改为on后,显示的文件时间为文件的服务器时间

charset utf-8,gbk; //显示的字符集

server{ //服务配置

    listen 8003; // 监听端口 ,也可以加上IP地址,如,listen 127001:8080;

    server_name _; //定义网站域名,可以写多个,用空格分隔。

    //匹配规则,在server{}里可以有很多location配置段
    //root/alias 是指定文件路径的两种方式 alias 相当于重定向路径
     //使用alias,目录名后面一定要加“/”

    location / { //location 后面跟的搜索路径

        root /usr/share/nginx/file; //指定文件服务地址 这里的目录是 yml 文件里配置的映射目录

    }

    location /web/{ 

        alias /usr/share/nginx/; //多个location 的时候这里只需要指定映射目录的上级目录就行了

        index indexhtml indexhtm; //配置默认首页

    }

}

在前面一个章节学习的FTP文件传输服务确确实实让咱们在主机之间传输文件变得非常方便,但FTP协议的本质是传输文件,并不是共享文件,要想让客户端能够直接在服务端上面修改文件内容还是比较麻烦的事情。于是在1987年时,由微软和英特尔公司共同制订了SMB服务器通信协议(Server Messages Block),这项技术的诞生是为了解决局域网内的文件或打印机等资源的共享服务问题,让多个主机之间共享文件变成越来越简单。

后来到了1991年,当年还在读大学的学生Tridgwell为了解决Linux与Windows系统之间的文件共享问题,便基于了这项SMB技术协议开发出了SMBserver这一款服务程序,SMBserver服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享软件,通过非常简单的配置就能够实现Linux系统与Windows系统之间的文件共享工作。当时还在上学的Tridgwell想要把这款SMBServer软件注册成为商标,但却被商标局以SMB是没有意义的字符而拒绝了他的申请,经过Tridgwell不断的翻看词典,突然看到一个拉丁舞蹈的名字——SAMBA,如图12-1所示,这个热情洋溢的舞蹈名字中又恰好包含了SMB(SAMBA),于是这便是Samba服务程序名字的由来,现在已经成为了Linux系统与Windows系统之间共享文件的最佳选择。

Samba服务程序的配置方法跟咱们以前学习过的服务很相似,首先咱们需要先通过yum软件仓库来安装samba服务程序,这款软件也恰巧是软件包的名字,很好记吧~:

[root@linuxprobe ~ ]# yum install samba
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分输出信息………………
Installing:
 samba x86_64 411-31el7 rhel 527 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 527 k
Installed size: 15 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : samba-411-31el7x86_64 1/1 
 Verifying : samba-411-31el7x86_64 1/1 
Installed:
 sambax86_64 0:411-31el7 
Complete!

安装后打开Samba服务程序的主配置后发现竟然有320行呢!有没有被吓到?但仔细一看发现其实大多都是以#(井号)开头的注释信息行,既然您手中已经拥有了刘遄老师的经验之书,就肯定不会让您去“死啃”这些东东的~:

[root@linuxprobe ~]# cat /etc/samba/smbconf
# This is the main Samba configuration file For detailed information about the
# options listed here, refer to the smbconf(5) manual page Samba has a huge
# number of configurable options, most of which are not shown in this example
#
# The Official Samba 32x HOWTO and Reference Guide contains step-by-step
# guides for installing, configuring, and using Samba:
# >

由于这次配置文件中的注释信息行实在太多,不便于分析里面的重要参数,因此咱们可以先将配置文件改个名字,然后使用cat命令读入主配置文件内容后通过grep命令-v参数(反向选择)分别去掉所有以#(井号)和;(分号)开头的注释信息行,对于剩余的空白行可以再用^$来表示并反选过滤,最后将过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中即可。samba服务程序过滤后的参数并不复杂,为了更方便同学们查阅参数功能,刘遄老师在重要参数行后面都写上了注释说明:

[root@linuxprobe ~]# mv /etc/samba/smbconf /etc/samba/smbconfbak
[root@linuxprobe ~]# cat /etc/samba/smbconfbak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smbconf
[root@linuxprobe ~]# cat /etc/samba/smbconf


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/12764397.html

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

发表评论

登录后才能评论

评论列表(0条)

保存