文章目录

  • 网络文件共享服务
    • 本章内容
      • 存储类型
      • FTP服务
      • NFS服务
      • SAMBA服务
      • 网络数据同步
    • 1 存储类型
        • 存储类型分为三种
      • 1.1 DAS存储
      • 1.2 NAS存储
        • 但NAS有一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。
      • 1.3 SAN存储
        • SAN的优势:
      • 1.4 三种存储比较
        • SAN与NAS的主要-别体现在文件系统所在的位置
        • 三种存储架构的应用场景
    • 2 文件传输协议FTP
      • 2.1 FTP工作原理介绍
        • 两种模式:从服务器角度
        • 命令(控制):客户端:随机port ---> 服务器:21/tcp
        • 数据:客户端:随机port <---服务器:20/tcp
        • 命令(控制):客户端:随机port ---> 服务器:21/tcp
        • 数据:客户端:随机port ---> 服务器:随机port /tcp
        • 范例:服务器被动模式数据端口
        • FTP服务状态码:
        • 用户认证:
      • 2.2 常见 FTP 相关软件
        • FTP服务器端软件
        • 客户端软件:
      • 2.3 vsftpd 软件介绍
        • 由 vsftpd 包提供,不再由xinetd管理
        • 用户认证配置文件:/etc/pam.d/vsftpd
        • 启动服务相关文件:
        • 配置文件:
        • 配置文件格式:
        • 用户和其共享目录
      • 2.4 vsftpd服务常见配置
        • 2.4.1 命令端口
          • listen_port=21
        • 2.4.2 主动模式端口
          • connect_from_port_20=YES 主动模式端口为20
          • ftp_data_port=20 (默认) 指定主动模式的端口
        • 2.4.3 被动模式端口范围
          • linux 客户端默认使用被动模式
          • windows 客户端默认使用主动模式
          • pasv_min_port=6000 0为随机分配
          • pasv_max_port=6010
        • 2.4.4 使用当地时间
          • use_localtime=YES 使用当地时间(默认为NO,使用GMT)
        • 2.4.5 匿名用户登录
          • anonymous_enable=YES 支持匿名用户
          • no_anon_password=YES 匿名用户略过口令检查 , 默认NO
        • 2.4.6 匿名用户上传
          • anon_upload_enable=YES 匿名上传,注意:文件系统权限
          • anon_mkdir_write_enable=YES 匿名建目录
          • anon_world_readable_only 只能下载全部读的文件, 默认YES
          • anon_umask=0333 指定匿名上传文件的umask,默认077
          • anon_other_write_enable=YES 可删除和修改上传的文件, ,默认NO
        • 2.4.7 指定匿名用户的上传文件的默认的所有者和权限
          • chown_uploads=YES 默认NO
          • chown_username=wang
          • chown_upload_mode=0644
        • 2.4.8 Linux系统用户
          • local_enable=YES 是否允许linux用户登录
          • write_enable=YES 允许linux用户上传文件
          • local_umask=022 指定系统用户上传文件的默认权限
        • 2.4.9 将系统用户映射为指定的guest用户
          • guest_enable=YES 所有系统用户都映射成guest用户
          • guest_username=ftp 配合上面选项才生效,指定guest用户
          • local_root=/ftproot guest用户登录所在目录
        • 2.4.10 禁锢系统用户
          • 禁锢所有系统在家目录中
          • 禁锢或不禁锢特定的系统用户在家目录中,与上面设置功能相反
        • 2.4.11 日志
          • wu-ftp日志:默认启用
          • vsftpd日志:默认不启用
        • 2.4.12 提示信息
          • 登录提示信息
          • 目录访问提示信息
        • 2.4.13 PAM模块实现用户访问控制
          • pam_service_name=vsftpd
          • pam配置文件:/etc/pam.d/vsftpd
          • /etc/vsftpd/ftpusers 默认文件中用户拒绝登录
        • 2.4.14 是否启用控制用户登录的列表文件
          • userlist_enable=YES 此为默认值
          • userlist_deny=YES(默认值) 黑名单,不提示口令,NO为白名单
          • userlist_file=/etc/vsftpd/users_list 此为默认值
        • 2.4.15 连接数限制
          • max_clients=0 最大并发连接数
          • max_per_ip=0 每个IP同时发起的最大连接数
        • 2.4.16 传输速率,字节/秒
          • anon_max_rate=0 匿名用户的最大传输速率
          • local_max_rate=0 本地用户的最大传输速率
        • 2.4.17 连接时间:秒为单位
          • connect_timeout=60 主动模式数据连接超时时长
          • accept_timeout=60 被动模式数据连接超时时长
          • data_connection_timeout=300 数据连接无数据输超时时长
          • idle_session_timeout=60 无命令操作超时时长
        • 2.4.18 优先以文本方式传输
          • scii_upload_enable=YES
          • ascii_download_enable=YES
        • 2.4.19 实现基于SSL的FTPS
          • 查看是否支持SSL
          • 范例:
          • 配置vsftpd服务支持SSL:
      • 2.5 vsftpd 虚拟用户
          • 虚拟用户:
          • 虚拟用户帐号的存储方式:
        • 2.5.1 实现基于文件验证的vsftpd虚拟用户
          • 2.5.1.1 创建用户数据库文件
          • 2.5.1.2 创建用户和访问FTP目录
          • 2.5.1.3 创建pam配置文件
          • 2.5.1.4 指定pam配置文件
          • 2.5.1.5 虚拟用户建立独立的配置文件
        • 2.5.2 实现基于MYSQL验证的vsftpd虚拟用户
          • 环境准备
            • 本实验在两台CentOS主机上实现, CentOS 7 一台做为FTP服务器,一台做数据库服务器
          • 2.5.2.1 在数据库服务器上安装mysql数据库
          • 2.5.2.2 在数据库服务上配置数据库支持vsftpd服务
          • 2.5.2.3 在FTP服务器上安装vsftpd 和 pam_mysql包
          • 2.5.2.4 在FTP服务器上安装 pam_mysql
          • 对于 centos 6:pam_mysql由EPEL的源中提供
          • 对于 centos7 和 8:无对应rpm包,需手动编译安装
          • 2.5.2.5 在FTP服务器上建立pam认证所需文件
          • 注意:以上参考 README文档
          • crypt 加密方式:
          • 配置字段说明
          • 2.5.2.6 建立相应用户和修改vsftpd配置文件
          • 2.5.2.7 在FTP服务器上配置虚拟用户具有不同的访问权限
    • 3 NFS服务
      • 3.1 NFS工作原理
      • 3.2 NFS软件介绍
        • 软件包:nfs-utils
        • 相关软件包:rpcbind(必须),tcp_wrappers
        • Kernel支持:nfs.ko
        • 端口:2049(nfsd), 其它端口由portmap(111)分配
        • NFS服务主要进程:
        • 日志:/var/lib/nfs/
        • NFS配置文件:
          • /etc/exports
          • /etc/exports.d/*.exports
      • 3.3 NFS共享配置文件格式
        • 格式说明:
          • \#开始为注释
          • 主机格式:
          • 每个条目指定目录导出到的哪些主机,及相关的权限和选项
        • 范例:NFS配置示例
      • 3.4 NFS工具
        • 3.4.1 rpcinfo
          • rpcinfo 工具可以查看RPC相关信息
          • 查看注册在指定主机的RPC程序
          • 查看RPC注册程序
          • 范例:rpcinfo
        • 3.4.2 exportfs
          • exportfs:可用于管理NFS导出的文件系统
          • 常见选项:
        • 3.4.3 showmount
          • 常见用法:
        • 3.4.4 mount.nfs
          • 客户端NFS挂载
          • NFS相关的挂载选项:man 5 nfs
          • 提示:基于安全考虑,建议使用nosuid,nodev,noexec挂载选项_
          • 范例:临时挂载NFS共享
          • 范例:开机挂载
      • 3.5 自动挂载
          • 可使用 autofs 服务按需要挂载外围设备,NFS共享等,并在空闲5分钟后后自动卸载
        • 3.5.1 相关包和文件
          • 软件包:autofs
          • 服务文件:/usr/lib/systemd/system/autofs.service
          • 配置文件:/etc/auto.master
        • 3.5.2 配置文件格式
          • 参看帮助:man 5 autofs
          • 所有导出到网络中的NFS启用特殊匹配 -host 至“browse”
          • 范例:/net目录可以自动挂载NFS共享
          • 自动挂载资源有两种格式:
          • 相对路径法:
            • /etc/auto.master 格式
            • 指定目录的配置文件格式
          • 范例:相对路径法
          • 范例:相对路径法为支持通配符
          • 绝对路径法
            • /etc/auto.master 格式
            • 指定配置文件格式
          • 范例:绝对路径法
      • 3.7 实战案例
        • 3.7.1 目标
          • 将NFS的共享目录,通过autofs 发布出来,做为远程主机用户的家目录
        • 3.7.2 环境准备
          • 三台主机
          • 一台主机 nfs server,IP:192.168.8.100
          • 另两台当 nfs client,IP:192.168.8.101和192.168.8.102
        • 3.7.3 步骤
    • 4 SAMBA服务
      • 4.1 SAMBA服务简介
        • SMB:Server Message Block 服务器消息块,IBM发布,最早是DOS网络文件共享协议
        • CIFS:common internet file system,微软基于SMB发布
        • SAMBA:1991年Andrew Tridgell,实现 windows和UNIX相通
        • 官方网站:http://www.samba.org/
        • SAMBA的功能:
          • 共享文件和打印,实现在线编辑
          • 实现登录SAMBA用户的身份认证
          • 可以进行NetBIOS名称解析
          • 外围设备共享
        • Windows计算机网络管理模式:
          • 工作组WORKGROUP:计算机对等关系,帐号信息各自管理
          • 域DOMAIN:C/S结构,帐号信息集中管理,DC,AD
      • 4.2 SAMBA软件介绍
        • 相关包:
          • samba 提供smb服务
          • samba-client 客户端软件
          • samba-common 通用软件
          • cifs-utils smb客户端工具
          • samba-winbind 和AD相关
        • 相关服务进程:
          • smbd 提供smb(cifs)服务 TCP:139,445
          • nmbd NetBIOS名称解析 UDP:137,138
        • 主配置文件:/etc/samba/smb.conf 帮助参看:man smb.conf
        • 语法检查: testparm [-v] [/etc/samba/smb.conf]
        • 客户端工具:smbclient,mount.cifs
        • 范例:
      • 4.3 SAMBA客户端工具
          • UNC路径: Universal Naming Convention,通用命名规范,格式如下
        • 4.3.1 使用smbclient 访问SAMBA服务器
        • 4.3.2 挂载CIFS文件系统
          • 范例:手动挂载
          • 范例:开机自动挂载
      • 4.4 管理SAMBA用户
        • 4.4.1 实现samba用户说明
          • 包:samba-common-tools
          • 工具:smbpasswd pdbedit
          • 用户数据库:/var/lib/samba/private/passdb.tdb
          • 说明:samba用户须是Linux用户,建议使用/sbin/nologin
        • 4.4.2 管理用户命令
          • 添加samba用户:
          • 修改用户密码:
          • 删除用户和密码:
          • 查看samba用户列表:
          • 范例:
          • 查看samba服务器状态:
          • 范例:
      • 4.5 SAMBA服务器配置
          • samba 配置文件 /etc/smb.conf 格式 ,使用.ini文件的格式
          • 用 [ ] 分分成以下几部分
          • 全局设置:
          • 特定共享设置:
          • samba配置中的宏定义:
        • 4.5.1 SAMBA服务器全局配置
          • workgroup 指定工作组名称
          • server string 主机注释信息
          • netbios name 指定NetBIOS名,注意:netbios name需要启动nmb服务
          • 范例:
          • interfaces 指定服务侦听接口和IP
          • hosts allow 可用逗号,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置,如在[global]设置,将应用并覆盖所有共享设置,可以是以下格式:
          • 范例:
          • hosts deny 拒绝指定主机访问,格式和hosts allow 相同
          • config file=/etc/samba/conf.d/%U 用户独立的配置文件
          • Log file=/var/log/samba/log.%I 不同客户机采用不同日志
          • log level = 2 日志级别,默认为0,不记录日志
          • 范例:
          • max log size=50 日志文件达到50K,将轮循rotate,单位KB
          • Security三种认证方式:
          • passdb backend = tdbsam 密码数据库格式
        • 4.5.2 配置特定目录共享
          • 每个共享目录应该有独立的[ ]部分
          • [共享名称] 远程网络看到的共享名称
          • 范例:基于特定用户和组的共享
      • 4.6 实战案例
        • 4.6.1 实战案例:利用SAMBA实现指定目录共享
        • 4.6.2 实战案例2:实现不同samba用户访问相同的samba共享,实现不同的配置
    • 5 数据的实时同步
        • 在生产环境,有时会需要两台主机的特定目录实现实时同步。比如,将NFS共享目录的数据文件,自动实时同步到备份的服务器特定目录中
      • 5.1 实时同步技术介绍
        • 实现实时同步的方法
        • 工作原理:
        • inotify:
        • 实现inotify软件:
        • inotify+rsync使用方式
      • 5.2 实现inotify
        • 5.2.1 内核支持
          • 内核是否支持inotify
          • inotify内核参数说明:
          • 范例:
        • 5.2.2 inotify-tools工具
          • inotify-tools参考文档:https://github.com/rvoicilas/inotify-tools/wiki
          • 安装inotify-tools:基于epel源
          • inotify-tools包主要工具:
          • inotifywait 命令常见选项
          • inotifywait 的--timefmt 时间格式
            • 参考 man 3 strftime
          • inotifywait 的 --format 格式定义
          • 范例:
          • inotifywait -e 选项指定的事件类型
          • 范例:
          • 范例:使用inotifywait
      • 5.3 rsync
            • rsync 常用于做为 linux系统下的数据镜像备份工具,实现实现远程同步,支持本地复制,或者与其他SSH、rsync主机同步数据,支持增量备份,配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时数据同步
          • 官方网站: http://rsync.samba.org/
          • 软件包:rsync,rsync-daemon(CentOS 8)
          • 服务文件:/usr/lib/systemd/system/rsyncd.service
          • 配置文件:/etc/rsyncd.conf
          • 端口:873/tcp
        • 5.3.1 rsync命令
          • rsync 格式
          • rsync有三种工作方式:
            • 前两者的本质是通过本地或远程shell,而第3种方式则是让远程主机上运行rsyncd服务,使其监听在一个端口上,等待客户端的连接。
          • 常见选项:
        • 5.3.2 以独立服务方式运行rsync
          • 范例:以独立服务方式运行 rsync
      • 5.4 创建inotify_rsync.sh脚本
      • 5.5 实战案例:实现基于分布式的LAMP架构,并将NFS实时同步到备份服务器

网络文件共享服务

本章内容

1 存储类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O4DEQz7f-1577107595321)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223130012238.png)]

  • 存储类型分为三种
    • 直连式存储:Direct-Attached Storage,简称DAS
    • 网络附加存储:Network-Attached Storage,简称NAS
    • 存储区域网络:Storage Area Network,简称SAN

1.1 DAS存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZYsNkfkb-1577107595323)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223130159383.png)]

  • DAS存储是最常见的一种存储方式,尤其是在中小企业应用中。PC中的硬盘或只有一个外部SCSI接口的JBOD都属于DAS架构。DAS是指存储设备直接连接到服务器总线上,存储设备只与一台独立的主机连接,其他主机不能使用这个存储设备。DAS存储设备与服务器主机之间的连接通道通常采用SCSI连接,DAS存储设备主要是磁盘阵列(RAID: Redundant Arrays of Independent Disks)、磁盘簇(JBOD:Just a Bunch Of Disks)等

1.2 NAS存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7xIrosEs-1577107595324)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223130252166.png)]

  • NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算机上。与DAS以及SAN不同,NAS是文件级的存储方法。采用NAS较多的功能是用来进行文件共享。
  • NAS存储也通常被称为附加存储,顾名思义,就是存储设备通过标准的网络拓扑结构(例如以太网)添加到一群计算机上。NAS是文件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。如今更多的亲们采用NAS较多的功能是用来文档共享、图片共享、电影共享等等,而且随着云计算的发展,一些NAS厂商也推出了云存储功能,大大方便了企业和亲们等个人用户的使用。
  • NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内,同时NAS的应用非常灵活。
  • 但NAS有一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。

1.3 SAN存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q6aQvGTQ-1577107595324)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223130455456.png)]

  • 存储区域网络(SAN,文件和存储空间),这个是通过光纤通道或以太网交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。SAN经过十多年历史的发展,已经相当成熟,成为业界的事实标准(但各个厂商的光纤交换技术不完全相同,其服务器和SAN存储有兼容性的要求)。

  • SAN提供了一种与现有LAN连接的简易方法,并且通过同一物理通道支持广泛使用的SCSI和IP协议。SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据置放在那里,服务器都可直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。

  • 如今的SAN解决方案通常会采取以下两种形式:光纤信道以及iSCSI或者基于IP的SAN,也就是FC SAN和IP SAN。光纤信道是SAN解决方案中大家最熟悉的类型,但是,最近一段时间以来,基于iSCSI的SAN解决方案开始大量出现在市场上,与光纤通道技术相比较而言,这种技术具有良好的性能,而且价格低廉。

  • SAN的优势:
    • 随着存储容量的增长,SAN允许企业独立地增加他们的存储容量。
    • SAN允许任何服务器连接到任何存储阵列(好处是:不管数据放在哪里,服务器都可以直接存取所需的数据)
    • 由于使用光纤接口,SAN具有更高的带宽。除了FC连接,SAN连接还有ISCSI(SCSI over IP)以及SAS(Serial Attached SCSI)接口。
    • 光纤接口可以提供10公里那么长那么远的连接长度,非常容易实现物理分离的存储

1.4 三种存储比较

2 文件传输协议FTP

2.1 FTP工作原理介绍

  • 文件传输协议:File Transfer Protocol 早期的三个应用级协议之一,基于C/S结构

  • 数据传输格式:二进制(默认)和文本

  • 双通道协议:命令和数据连接

  • 两种模式:从服务器角度
  • 范例:服务器被动模式数据端口
    • 227 Entering Passive Mode (172,16,0,1,224,59)
    • 服务器数据端口为:224*256+59
  • FTP服务状态码:
    • 1XX:信息 125:数据连接打开

    • 2XX:成功类状态 200:命令OK 230:登录成功

    • 3XX:补充类 331:用户名OK

    • 4XX:客户端错误 425:不能打开数据连接

    • 5XX:服务器错误 530:不能登录

  • 用户认证:
    • 匿名用户:ftp,anonymous,对应Linux用户ftp
    • 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
    • 虚拟用户:特定服务的专用用户,独立的用户/密码文件

2.2 常见 FTP 相关软件

  • FTP服务器端软件
    • Wu-ftpd
    • Proftpd
    • Pureftpd
    • Filezilla Server
    • Serv-U
    • Wing FTP Server
    • IIS
  • vsftpd:Very Secure FTP Daemon,CentOS 默认FTP服务器;

    • 高速,稳定,下载速度是WU-FTP的两倍
    • ftp.redhat.com数据:单机最多可支持15000个并发
  • 客户端软件:
  • ftp,lftp,lftpget,wget,curl

    • ftp -A ftpserver port -A 主动模式 –p 被动模式
    • lftp –u username ftpserver
    • lftp username@ftpserver
    • lftpget ftp://ftpserver/pub/file
  • gftp:GUI centos5 最新版2.0.19 (11/30/2008)

  • filezilla,FTP Rush,CuteFtp,FlashFXP,LeapFtp

  • IE ftp://username:password@ftpserver

2.3 vsftpd 软件介绍

  • 由 vsftpd 包提供,不再由xinetd管理
  • 用户认证配置文件:/etc/pam.d/vsftpd
  • 启动服务相关文件:
    • /usr/lib/systemd/system/vsftpd.service
    • /etc/rc.d/init.d/vsftpd
  • 配置文件:
    • /etc/vsftpd/vsftpd.conf
    • 帮助:man 5 vsftpd.conf
  • 配置文件格式:
    • option=value
    • 注意:= 前后不要有空格
  • 用户和其共享目录
    • 匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
    • 系统用户共享文件位置:用户家目录
    • 虚拟用户共享文件位置:为其映射的系统用户的家目录

2.4 vsftpd服务常见配置

2.4.1 命令端口

  • listen_port=21

2.4.2 主动模式端口

2.4.3 被动模式端口范围

2.4.4 使用当地时间

  • use_localtime=YES 使用当地时间(默认为NO,使用GMT)

2.4.5 匿名用户登录

2.4.6 匿名用户上传

2.4.7 指定匿名用户的上传文件的默认的所有者和权限

2.4.8 Linux系统用户

2.4.9 将系统用户映射为指定的guest用户

2.4.10 禁锢系统用户

  • 禁锢所有系统在家目录中
    • chroot_local_user=YES 禁锢系统用户,默认NO,即不禁锢
  • 禁锢或不禁锢特定的系统用户在家目录中,与上面设置功能相反
    • chroot_list_enable=YES
    • chroot_list_file=/etc/vsftpd/chroot_list
      • 当chroot_local_user=YES时,则chroot_list中用户不禁锢
      • 当chroot_local_user=NO时,则chroot_list中用户禁锢

2.4.11 日志

  • wu-ftp日志:默认启用
    • xferlog_enable=YES 启用记录上传下载日志,此为默认值
    • xferlog_std_format=YES 使用wu-ftp日志格式,此为默认值
    • xferlog_file=/var/log/xferlog 可自动生成, 此为默认值
  • vsftpd日志:默认不启用
    • dual_log_enable=YES 使用vsftpd日志格式,默认不启用
    • vsftpd_log_file=/var/log/vsftpd.log 可自动生成, 此为默认值

2.4.12 提示信息

  • 登录提示信息
    • ftpd_banner=“welcome to mage ftp server”
    • banner_file=/etc/vsftpd/ftpbanner.txt
  • 目录访问提示信息
    • dirmessage_enable=YES 此为默认值
    • message_file=.message 信息存放在指定目录下.message ,此为默认值

2.4.13 PAM模块实现用户访问控制

2.4.14 是否启用控制用户登录的列表文件

2.4.15 连接数限制

2.4.16 传输速率,字节/秒

2.4.17 连接时间:秒为单位

2.4.18 优先以文本方式传输

2.4.19 实现基于SSL的FTPS

  • 查看是否支持SSL
    ldd `which vsftpd` #查看到libssl.so
    
  • 范例:

[root@centos8 ~]#ldd which vsftpd|grep libssl
libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007f8878e2c000)


- ##### 创建自签名证书  ```bash
#CentOS 7 上可以实现
cd /etc/pki/tls/certs/
make vsftpd.pem
openssl x509 -in vsftpd.pem -noout –text
#或者分别生成一个证书和私钥文件
mkdir /etc/vsftpd/ssl
cd /etc/vsftpd/ssl
openssl req -x509 -nodes -keyout vsftpd.key -out vsftpd.crt -days 365 -newkey
rsa:2048
  • 配置vsftpd服务支持SSL:
    [root@centos7 ~]#vim /etc/vsftpd/vsftpd.conf
    ssl_enable=YES #启用SSL
    allow_anon_ssl=NO #匿名不支持SSL
    force_local_logins_ssl=YES #本地用户登录加密
    force_local_data_ssl=YES #本地用户数据传输加密
    rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
    #rsa_private_key_file /path/file #此项如果没有指定,私钥也在证书文件中
    #ssl_tlsv1=YES
    #ssl_sslv2=NO
    #ssl_sslv3=NO
    #require_ssl_reuse=NO
    #ssl_ciphers=HIGH[root@centos7 ~]#systemctl restart vsftpd[root@centos7 ~]#ftp 192.168.100.7
    Connected to 192.168.100.7 (192.168.100.7).
    220-welcome to magedu
    220
    Name (192.168.100.8:root): wang
    530 Non-anonymous sessions must use encryption.
    Login failed.
    421 Service not available, remote server has closed connection#用filezilla等工具测试
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oh2mAChc-1577107595326)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223141639196.png)]

2.5 vsftpd 虚拟用户

  • 虚拟用户:
    • 所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号的家目录
    • 各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定
  • 虚拟用户帐号的存储方式:
    • 文件:编辑文本文件,此文件需要被编码为hash格式

      • 奇数行为用户名

      • 偶数行为密码

        db_load -T -t hash -f vusers.txt vusers.db
        
    • 关系型数据库中的表中:实时查询数据库完成用户认证

    • vsftpd 支持mysql库:pam要依赖于pam-mysql

      • /lib64/security/pam_mysql.so
      • /usr/share/doc/pam_mysql-0.7/README

2.5.1 实现基于文件验证的vsftpd虚拟用户

2.5.1.1 创建用户数据库文件
vim /etc/vsftpd/vusers.txt
wang
wangpass
mage
magepass
cd /etc/vsftpd/
db_load -T -t hash -f vusers.txt vusers.db
chmod 600 vusers.db
2.5.1.2 创建用户和访问FTP目录
useradd -d /data/ftproot -s /sbin/nologin -r vuser
mkdir -pv /data/ftproot/upload
setfacl -m u:vuser:rwx /data/ftproot/upload
#chmod a=rx /data/ftproot/ 如果自动创建家目录,需修改权限
2.5.1.3 创建pam配置文件
vim /etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
2.5.1.4 指定pam配置文件
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.db
2.5.1.5 虚拟用户建立独立的配置文件
#指定各个用户配置文件存放的路径
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers.d/#创建各个用户配置文件存放的路径
mkdir /etc/vsftpd/vusers.d/
cd /etc/vsftpd/vusers.d/#创建各用户自已的配置文件,允许wang用户可读写,其它用户只读
vim wang
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES#创建各用户自已的配置文件
vim mage
#登录目录改变至指定的目录
local_root=/data/ftproot2

2.5.2 实现基于MYSQL验证的vsftpd虚拟用户

  • 环境准备
    • 本实验在两台CentOS主机上实现, CentOS 7 一台做为FTP服务器,一台做数据库服务器
2.5.2.1 在数据库服务器上安装mysql数据库
yum –y install mariadb-server
systemctl enable --now mariadb.service
2.5.2.2 在数据库服务上配置数据库支持vsftpd服务
#建立存储虚拟用户数据库和表
mysql> CREATE DATABASE vsftpd;
mysql> USE vsftpd;
mysql> CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);#添加虚拟用户,为了安全应该使用PASSWORD函数加密其密码后存储
mysql> INSERT INTO users(name,password) values('wang',password('magedu'));
mysql> INSERT INTO users(name,password) values('mage',password('magedu'));#创建连接的数据库用户
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'172.16.0.%' IDENTIFIED BY 'magedu';
mysql> FLUSH PRIVILEGES;
2.5.2.3 在FTP服务器上安装vsftpd 和 pam_mysql包
yum install vsftpd -y
2.5.2.4 在FTP服务器上安装 pam_mysql
  • 对于 centos 6:pam_mysql由EPEL的源中提供
    yum install pam_mysql -y
    
  • 对于 centos7 和 8:无对应rpm包,需手动编译安装
    #安装相关包
    yum install vsftpd gcc gcc-c++ make mariadb-devel pam-devel
    #下载pam-mysql源码进行编译
    wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
    #https://github.com/NigelCunningham/pam-MySQL/archive/v0.8.1.tar.gz
    tar xvf pam_mysql-0.7RC1.tar.gz
    cd pam_mysql-0.7RC1/
    ./configure --with-pam-mods-dir=/lib64/security#如果上面命令不指定 --with-pam-mods-dir=/lib64/security 会报以下错误
    #checking if the second argument of pam_conv.conv() takes const pointer... no
    configure: error: Your system doesn't appear to be configured to use PAM.Perhaps you need to specify the correct location where the PAM modules reside.make && make install
    [root@vsftpd ~]#ll /lib64/security/pam_mysql*
    -rwxr-xr-x 1 root root 882 Dec 17 14:34 /lib64/security/pam_mysql.la
    -rwxr-xr-x 1 root root 141712 Dec 17 14:34 /lib64/security/pam_mysql.so
    
2.5.2.5 在FTP服务器上建立pam认证所需文件
vi /etc/pam.d/vsftpd.mysql
#添加如下两行
auth required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd
table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver
db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
注意:以上参考 README文档
  • crypt 加密方式:
    • 0表示不加密
    • 1表示crypt(3)加密
    • 2表示使用mysql password()函数加密
    • 3表示md5加密
    • 4表示sha1加密
  • 配置字段说明
    • auth 表示认证
    • account 验证账号密码正常使用
    • required 表示认证要通过
    • pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为给此模块传递的参数
    • user=vsftpd为登录mysql的用户
    • passwd=magedu 登录mysql的的密码
    • host=mysqlserver mysql服务器的主机名或ip地址
    • db=vsftpd 指定连接msyql的数据库名称
    • table=users 指定连接数据库中的表名
    • usercolumn=name 当做用户名的字段
    • passwdcolumn=password 当做用户名字段的密码
    • crypt=2 密码的加密方式为mysql password()函数加密
2.5.2.6 建立相应用户和修改vsftpd配置文件
#建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /data/ftproot -r vuser
#centos7 需除去ftp根目录的写权限
chmod 555 /data/ftproot
mkdir -pv /data/ftproot/{upload,pub}
setfacl –m u:vuser:rwx /data/ftproot/upload
#确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES
#添加下面两项
guest_enable=YES
guest_username=vuser#修改下面一项,原系统用户无法登录
pam_service_name=vsftpd.mysql#启动vsftpd服务
systemctl enable --now vsftpd
2.5.2.7 在FTP服务器上配置虚拟用户具有不同的访问权限
  • vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可

    #配置vsftpd为虚拟用户使用配置文件目录
    vim /etc/vsftpd/vsftpd.conf
    #添加如下选项
    user_config_dir=/etc/vsftpd/vusers.d/#创建所需要目录,并为虚拟用户提供配置文件
    mkdir /etc/vsftpd/vusers.d/
    cd /etc/vsftpd/vusers.d/
    touch wang mage#配置虚拟用户的访问权限
    #虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如要让用户wang具有上传文件的权
    限,可修改/etc/vsftpd/vusers.d/wang文件,在里面添加如下选项并设置为YES即可,只读则设为NO
    #注意:需确保对应的映射用户对于文件系统有写权限
    anon_upload_enable={YES|NO}
    anon_mkdir_write_enable={YES|NO}
    anon_other_write_enable={YES|NO}
    #登录目录改变至指定的目录
    local_root=/data/ftproot2
    

3 NFS服务

3.1 NFS工作原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXrrJn5e-1577107595326)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223142809038.png)]

  • NFS:Network File System 网络文件系统,基于内核的文件系统。Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure Call Protocol 远程过程调用)实现

  • RPC采用C/S模式,客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K8R5ZtLR-1577107595327)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223142925620.png)]

  • NFS优势:节省本地存储空间,将常用的数据,如:/home目录,存放在NFS服务器上且可以通过网络访问,本地终端将可减少自身存储空间的使用

3.2 NFS软件介绍

3.3 NFS共享配置文件格式

/dir         主机1(opt1,opt2)          主机2(opt1,opt2)...
  • 格式说明:
  • 范例:NFS配置示例
    vim /etc/exports
    /myshare server.example.com
    /myshare *.example.com
    /myshare server?.example.com
    /myshare server[0-20].example.com
    /myshare 172.25.11.10
    /myshare 172.25.0.0/16
    /myshare 2000:472:18:b51:c32:a21
    /myshare 2000:472:18:b51::/64
    /myshare *.example.com 172.25.0.0/16
    /myshare desktop.example.com(ro)
    /myshare desktop.example.com(ro) server[0-20].example.com(rw)
    /myshare diskless.example.com(rw,no_root_squash)
    

3.4 NFS工具

3.4.1 rpcinfo

  • rpcinfo 工具可以查看RPC相关信息
  • 查看注册在指定主机的RPC程序
    rpcinfo -p hostname
    
  • 查看RPC注册程序
    rpcinfo –s hostname
    
  • 范例:rpcinfo
    [root@centos8 ~]#rpcinfo -pprogram vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 36310 status100024 1 tcp 45265 status
    [root@centos8 ~]#rpcinfo -sprogram version(s) netid(s) service owner100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser100024 1 tcp6,udp6,tcp,udp status 29
    

3.4.2 exportfs

3.4.3 showmount

  • 常见用法:
    showmount -e hostname
    

3.4.4 mount.nfs

3.5 自动挂载

  • 可使用 autofs 服务按需要挂载外围设备,NFS共享等,并在空闲5分钟后后自动卸载

3.5.1 相关包和文件

3.5.2 配置文件格式

  • 参看帮助:man 5 autofs
  • 所有导出到网络中的NFS启用特殊匹配 -host 至“browse”
  • 范例:/net目录可以自动挂载NFS共享
    cat /etc/auto.master
    /net -hosts
    cd /net/192.168.8.100/
    
  • 自动挂载资源有两种格式:
    • 相对路径法:将mount point 路径分成 dirname 和 basename 分别配置,可能会影响现有的目录结构
    • 绝对路径法:直接匹配全部绝对路径名称,不会影响本地目录结构
  • 相对路径法:
    • /etc/auto.master 格式
      挂载点的dirname        指定目录的配置文件路径
      
    • 指定目录的配置文件格式
      挂载点的basename         挂载选项         选项设备
      
  • 范例:相对路径法
    [root@centos8 ~]#vim /etc/auto.master
    /misc /etc/auto.misc
    [root@centos8 ~]#vim /etc/auto.misc
    cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
    
  • 范例:相对路径法为支持通配符
    vim /etc/auto.master
    /misc /etc/auto.misc
    vim /etc/auto.misc
    #表示/misc下面的子目录和nfs共享/export目录的子目录同名
    * server:/export/&
    
  • 绝对路径法
    • /etc/auto.master 格式
      /-        指定配置文件路径
      
    • 指定配置文件格式
      绝对路径        挂载选项         选项设备
      
  • 范例:绝对路径法
    vim /etc/auto.master:
    /-                  /etc/auto.directvim /etc/auto.direct:
    /foo                -fstype=nfs        server1:/export/foo
    /user/local/        -fstype=nfs,vers=3    server1:/usr/local
    /mnt/cdrom          -fstype=iso9660           :/dev/cdrom
    

3.7 实战案例

3.7.1 目标

  • 将NFS的共享目录,通过autofs 发布出来,做为远程主机用户的家目录

3.7.2 环境准备

3.7.3 步骤

#NFS服务器创建用户和相应的家目录,将用户wang的家目录共享
useradd -d /data/wang wang
Vim /etc/exports.d/test.exports
/data/wang *(rw,anonuid=1000,anongid=1000,all_sqush)#在第一台NFS客户端主机192.168.8.101上实现相对路径法的autofs
vim /etc/auto.master
/home /etc/homeauto
vim /etc/homeauto
* -fstype=nfs,vers=3 192.168.8.100:/data/wang/&#注意:home目录下其它用户家目录无法访问#在第二台NFS客户端主机192.168.8.102上实现绝对路径法的autofs
vim /etc/auto.master
/- /etc/homeauto
vim e/etc/homeauto
/home/wang -fstype=nfs,vers=3 nfsserver:/data/wang

4 SAMBA服务

4.1 SAMBA服务简介

4.2 SAMBA软件介绍

4.3 SAMBA客户端工具

  • UNC路径: Universal Naming Convention,通用命名规范,格式如下
\\sambaserver\sharename

4.3.1 使用smbclient 访问SAMBA服务器

smbclient -L instructor.example.com
smbclient -L instructor.example.com -U smb用户%password#可以使用-U选项来指定用户%密码,或通过设置和导出USER和PASSWD环境变量来指定
smbclient //instructor.example.com/shared -U wang
>cd directory
>get file1
>put file2

4.3.2 挂载CIFS文件系统

  • 范例:手动挂载
mount -o user=wang,password=magedu //server//shared /mnt/smb
  • 范例:开机自动挂载
cat /etc/fstab
#可以用文件代替用户名和密码的输入
//server/homes /mnt cifs credentials或cred=/etc/smb.txt 0 0cat /etc/smb.txt
username=wang #或 user=wang
password=password #或 pass=passwordchmod 600 /etc/smb.txt

4.4 管理SAMBA用户

4.4.1 实现samba用户说明

说明:samba用户须是Linux用户,建议使用/sbin/nologin

4.4.2 管理用户命令

  • 添加samba用户:
    smbpasswd -a <user>
    pdbedit -a -u <user>
    
  • 修改用户密码:
    smbpasswd <user>
    
  • 删除用户和密码:
    smbpasswd –x <user>
    pdbedit –x –u <user>
    
  • 查看samba用户列表:
    pdbedit –L –v
    
  • 范例:
    [root@centos8 ~]#pdbedit -L
    No builtin backend found, trying to load plugin
    smb1:1002:
    smb2:1003:
    smb3:1004:
    [root@centos8 ~]#pdbedit -L -v
    No builtin backend found, trying to load plugin
    ---------------
    Unix username: smb1
    NT username:
    Account Flags: [U ]
    User SID: S-1-5-21-1476810783-3936299954-1329646792-1000
    Primary Group SID: S-1-5-21-1476810783-3936299954-1329646792-513
    Full Name:
    Home Directory: \\linux39\smb1
    HomeDir Drive:
    Logon Script:
    Profile Path: \\linux39\smb1\profile
    Domain: CENTOS8
    Account desc:
    Workstations:
    Munged dial:
    Logon time: 0
    Logoff time: Wed, 06 Feb 2036 23:06:39 CST
    Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
    Password last set: Thu, 19 Dec 2019 10:02:31 CST
    Password can change: Thu, 19 Dec 2019 10:02:31 CST
    Password must change: never
    Last bad password : 0
    Bad password count : 0
    Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    ---------------
    Unix username: smb2
    NT username:
    Account Flags: [U ]
    User SID: S-1-5-21-1476810783-3936299954-1329646792-1001
    Primary Group SID: S-1-5-21-1476810783-3936299954-1329646792-513
    Full Name:
    Home Directory: \\linux39\smb2
    HomeDir Drive:
    Logon Script:
    Profile Path: \\linux39\smb2\profile
    Domain: CENTOS8
    Account desc:
    Workstations:
    Munged dial:
    Logon time: 0
    Logoff time: Wed, 06 Feb 2036 23:06:39 CST
    Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
    Password last set: Thu, 19 Dec 2019 09:57:36 CST
    Password can change: Thu, 19 Dec 2019 09:57:36 CST
    Password must change: never
    Last bad password : 0
    Bad password count : 0
    Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    ---------------
    
  • 查看samba服务器状态:
    smbstatus
    
  • 范例:
    [root@centos8 ~]#smbstatus
    Samba version 4.9.1
    PID Username Group Machine
    Protocol    Version     Encryption      Signing
    --------------------------------------------------------------------------------
    --------------------------------------------------------
    45299       smb1        smb1 1          92.168.39.6 (ipv4:192.168.39.6:55898) NT1-                  -
    Service     pid         Machine         Connected at Encryption
    Signing
    --------------------------------------------------------------------------------
    -------------
    smb1        45299       192.168.39.6    Thu Dec 19 10:30:24 AM 2019 CST -
    -
    No locked files
    

4.5 SAMBA服务器配置

  • samba 配置文件 /etc/smb.conf 格式 ,使用.ini文件的格式
  • 用 [ ] 分分成以下几部分
    • 全局设置:
      • [global] 服务器通用或全局设置的部分
    • 特定共享设置:
      • [homes] 用户的家目录共享
      • [printers] 定义打印机资源和服务
      • [sharename] 自定义的共享目录配置
      • 其中:#和;开头的语句为注释,大小写不敏感
    • samba配置中的宏定义:
      • %m 客户端主机的NetBIOS名
      • %M 客户端主机的FQDN
      • %H 当前用户家目录路径
      • %U 当前用户的用户名
      • %g 当前用户所属组
      • %h samba服务器的主机名
      • %L samba服务器的NetBIOS名
      • %I 客户端主机的IP
      • %T 当前日期和时间
      • %S 可登录的用户名

4.5.1 SAMBA服务器全局配置

4.5.2 配置特定目录共享

4.6 实战案例

4.6.1 实战案例:利用SAMBA实现指定目录共享

#在samba服务器上安装samba包
yum -y install samba
#创建samba用户和组
groupadd -r admins
useradd -s /sbin/nologin -G admins wang
smbpasswd -a wang
useradd -s /sbin/nologin mage
smbpasswd -a mage#创建samba共享目录,并设置SElinux
mkdir /testdir/smbshare
chgrp admins /testdir/smbshare
chmod 2775 /testdir/smbshare#samba服务器配置
vim /etc/samba/smb.conf
...省略...
[share]
path = /testdir/smbshare
write list = @adminssystemctl enable --now smb nmb#samba客户端访问
yum -y install cifs-utils#用wang用户挂载smb共享并访问
mkdir /mnt/wang
mount -o username=wang //smbserver/share /mnt/wang
echo "Hello wang" >/mnt/wang/wangfile.txt#用mage用户挂载smb共享并访问
mkdir /mnt/mage
mount -o username=mage //smbserver/share /mnt/mage
touch /mnt/mage/magefile.txt

4.6.2 实战案例2:实现不同samba用户访问相同的samba共享,实现不同的配置

#创建三个samba用户,并指定密码为magedu
useradd -s /sbin/nologin -r smb1
useradd -s /sbin/nologin -r smb2
useradd -s /sbin/nologin -r smb3
smbpasswd –a smb1
smbpasswd –a smb2
smbpasswd –a smb3#修改samba配置文件
Vim /etc/samba/smb.conf
#在workgroup下加一行
config file= /etc/samba/conf.d/%U 说明:%U表示用户名
[share]
Path=/data/dir
Read only= NO
Guest ok = yes
write list=@wheel#针对smb1和smb2用户创建单独的配置文件
Vim /etc/samba/conf.d/smb1
[share]
Path=/data/dir1
Read only= NO 等价于writable = yes
Create mask=0644
#说明:默认为744Vim /etc/samba/conf.d/smb2
[share]
path=/data/dir2systemctl restart smb nmb#用户smb1,smb2,smb3访问share共享目录,看到目录是不同目录
smbclient //sambaserver/share -U smb1%magedu
smbclient //sambaserver/share -U smb2%magedu
smbclient //sambaserver/share -U smb3%magedu

5 数据的实时同步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-95ARsVUk-1577107595328)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223151647197.png)]

  • 在生产环境,有时会需要两台主机的特定目录实现实时同步。比如,将NFS共享目录的数据文件,自动实时同步到备份的服务器特定目录中

5.1 实时同步技术介绍

  • 实现实时同步的方法
    • inotify + rsync 方式实现数据同步
    • sersync :金山公司周洋在 inotify 软件基础上进行开发的,功能更加强大
  • 工作原理:
    • 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化
    • 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上
  • inotify:
    • 异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件

      [root@centos8 ~]#grep -i inotify /boot/config-4.18.0-80.el8.x86_64
      CONFIG_INOTIFY_USER=y
      
  • 实现inotify软件:
    • inotify-tools
    • sersync
    • lrsyncd
  • inotify+rsync使用方式
    • inotify 对同步数据目录信息的监控
    • rsync 完成对数据的同步
    • 利用脚本进行结合

5.2 实现inotify

5.2.1 内核支持

  • 内核是否支持inotify
    • Linux支持inotify的内核最小版本为 2.6.13,参看man 7 inotify

      ls -l /proc/sys/fs/inotify #列出下面的文件,说明服务器内核支持inotify
      -rw-r--r-- 1 root root 0 Dec 7 10:10 max_queued_events
      -rw-r--r-- 1 root root 0 Dec 7 10:10 max_user_instances
      -rw-r--r-- 1 root root 0 Dec 6 05:54 max_user_watches
      
  • inotify内核参数说明:
    • max_queued_events:inotify事件队列最大长度,如值太小会出现 Event Queue Overflow 错误,默认值:16384
    • max_user_instances:每个用户创建inotify实例最大值,默认值:128
    • max_user_watches:可以监视的文件数量(单进程),默认值:8192
  • 范例:
    [root@centos8 ~]#vim /etc/sysctl.conf
    fs.inotify.max_queued_events=66666
    fs.inotify.max_user_watches=100000
    [root@centos8 ~]#sysctl -p
    fs.inotify.max_queued_events = 66666
    fs.inotify.max_user_watches = 100000
    [root@centos8 ~]#cat /proc/sys/fs/inotify/*
    66666
    128
    100000
    

5.2.2 inotify-tools工具

  • inotify-tools参考文档:https://github.com/rvoicilas/inotify-tools/wiki
  • 安装inotify-tools:基于epel源
    yum install inotify-tools
    
  • inotify-tools包主要工具:
    • inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open ,close,delete等)发生,常用于实时同步的目录监控
    • inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计
  • inotifywait 命令常见选项
    • -m, --monitor 始终保持事件监听
    • -d, --daemon 以守护进程方式执行,和-m相似,配合-o使用
    • -r, --recursive 递归监控目录数据信息变化
    • -q, --quiet 输出少量事件信息
    • –exclude 指定排除文件或目录,使用扩展的正则表达式匹配的模式实现
    • –excludei 和exclude相似,不区分大小写
    • -o, --outfile 打印事件到文件中,相当于标准正确输出,注意:使用绝对路径
    • -s, --syslogOutput 发送错误到syslog相当于标准错误输出
    • –timefmt 指定时间输出格式
    • –format 指定的输出格式;即实际监控输出内容
    • -e指定监听指定的事件,如果省略,表示所有事件都进行监听
  • inotifywait 的–timefmt 时间格式
  • 参考 man 3 strftime
    • %Y 年份信息,包含世纪信息

    • %y 年份信息,不包括世纪信息

    • %m 显示月份,范围 01-12

    • %d 每月的第几天,范围是 01-31

    • %H 小时信息,使用 24小时制,范围 00-23

    • %M 分钟,范围 00-59

      --timefmt "%Y-%m-%d %H:%M"
      
  • inotifywait 的 --format 格式定义
    • %T 输出时间格式中定义的时间格式信息,通过 --timefmt option 语法格式指定时间信息
    • %w 事件出现时,监控文件或目录的名称信息
    • %f 事件出现时,将显示监控目录下触发事件的文件或目录信息,否则为空
    • %e 显示发生的事件信息,不同的事件默认用逗号分隔
    • %Xe显示发生的事件信息,不同的事件指定用X进行分隔
  • 范例:
    --format "%T %w%f event: %;e"
    --format '%T %w %f'
    
  • inotifywait -e 选项指定的事件类型
    • create 文件或目录创建
    • delete 文件或目录被删除
    • modify 文件或目录内容被写入
    • attrib 文件或目录属性改变
    • close_write 文件或目录关闭,在写入模式打开之后关闭的
    • close_nowrite 文件或目录关闭,在只读模式打开之后关闭的
    • close 文件或目录关闭,不管读或是写模式
    • open 文件或目录被打开
    • moved_to 文件或目录被移动到监控的目录中
    • moved_from 文件或目录从监控的目录中被移动
    • move 文件或目录不管移动到或是移出监控目录都触发事件
    • access 文件或目录内容被读取
    • delete_self 文件或目录被删除,目录本身被删除
    • unmount 取消挂载
    • 范例:
      范例:使用inotifywait
  • 范例:
    -e create,delete,moved_to,close_write, attrib
    
  • 范例:使用inotifywait
    #监控一次性事件
    inotifywait /data#持续前台监控
    inotifywait -mrq /data#持续后台监控,并记录日志
    inotifywait -o /root/inotify.log -drq /data --timefmt "%Y-%m-%d %H:%M" --format
    "%T %w%f event: %e"#持续前台监控特定事件
    inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f event: %;e" -e
    create,delete,moved_to,close_write,attrib
    

5.3 rsync

5.3.1 rsync命令

5.3.2 以独立服务方式运行rsync

  • 范例:以独立服务方式运行 rsync
    #创建rsync服务器的配置文件
    vi /etc/rsyncd.conf
    uid = root
    gid = root
    use chroot = no
    max connections = 0
    ignore errors
    exclude = lost+found/
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    reverse lookup = no
    hosts allow = 192.168.8.0/24
    [backup]
    path = /backup/
    comment = backup
    read only = no
    auth users = rsyncuser
    secrets file = /etc/rsync.pass#服务器端准备目录
    mkdir /backup#服务器端生成验证文件
    echo "rsyncuser:magedu" > /etc/rsync.pass
    chmod 600 /etc/rsync.pass#服务器端启动rsync服务
    rsync --daemon #可加入/etc/rc.d/rc.local实现开机启动
    systemctl start rsyncd #CentOS 7 以上版本#客户端配置密码文件
    echo "magedu" > /etc/rsync.pass
    chmod 600 /etc/rsync.pass #此为必要项#客户端测试同步数据
    rsync -avz --delete --password-file=/etc/rsync.pass /data/ \
    rsyncuser@rsync服务器IP::backup
    

5.4 创建inotify_rsync.sh脚本

#!/bin/bash
SRC='/data/'
DEST='rsyncuser@rsync服务器IP::backup'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e
create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR
FILE;doFILEPATH=${DIR}${FILE}rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo
"At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >>
/var/log/changelist.log
done

5.5 实战案例:实现基于分布式的LAMP架构,并将NFS实时同步到备份服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MjCRZZLo-1577107595329)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223153905577.png)]

28 网络文件共享服务相关推荐

  1. Linux实战教学笔记22:企业级NFS网络文件共享服务

    第二十二节 企业级NFS网络文件共享服务 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载 ...

  2. (转)企业级NFS网络文件共享服务

    企业级NFS网络文件共享服务 原文:http://www.cnblogs.com/chensiqiqi/archive/2017/03/10/6530859.html --本教学笔记是本人学习和工作生 ...

  3. Linux网络文件共享服务(一)存储类型和文件传输协议FTP

    成功不易,加倍努力! 网络文件共享服务 本章总目录 1 存储类型 1.1 DAS存储 1.2 NAS存储 1.3 SAN存储 1.4 三种存储比较 2 文件传输协议 FTP 2.1 FTP工作原理介绍 ...

  4. NFS网络文件共享服务

    NFS网络文件共享服务 1.1 NFS介绍 1)什么是NFS? NFS是Network File System的缩写,中文意思是网络文件系统.它的主要功能是通过网络(一般是局域网)让不同的主机系统之间 ...

  5. Samba网络文件共享服务介绍

    Samba网络文件共享服务 一.samba简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块, ...

  6. 23.网络文件共享服务

    文章目录 1 存储类型 1.1 DAS存储 1.2 NAS存储 1.3 SAN存储 1.4 三种存储比较 2 FTP 文件传输协议 2.1 FTP工作原理介绍 2.2 常见 FTP 相关软件 2.3 ...

  7. Linux 网络文件共享服务详细介绍

    Linux 网络文件共享介绍 一.常见的存储类型 1.1 DAS 类型的存储 1.2 NAS 类型的存储 1.3 SAN 类型的存储 1.4 三种存储类型的比较 二.文件传输协议 FTP 2.1 FT ...

  8. 访问网络文件共享服务

    • 挂载网络共享 • 自动挂载网络共享 cifs linux&unix<----->windows nfs  linux&unix<----->linux&am ...

  9. 网络文件共享服务之NFS

    9.1 nfs介绍 9.1.1 nfs特点  NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资 ...

最新文章

  1. UE卡通风格游戏场景制作视频教程
  2. 构建企业级业务高可用的延时消息中台
  3. HLG 1349 Graph [floyed]
  4. 【教程】写CSDN博客时 调整图片大小,图片居中
  5. linux crontab日志,crontab的用法---linux定时任务
  6. 地理生物高考成绩查询2021,2021北京中考地理生物成绩查询时间【已公布】
  7. 最大乘积(记忆化搜索)
  8. 1.79亿实景三维项目!与房地一体有何区别?
  9. UVA10194 Football (aka Soccer)【排序】
  10. CentOS7安装python3.6.6(解决所有安装异常情况!!!)
  11. 玩转USB HID系列:USB先导知识简明
  12. k8s集群安装traefik 2.x (保证成功版)
  13. 恶意程序- 安全建议
  14. ipod nano7安装linux,怎么用ipod nano看视频?
  15. 浅谈网游服务器的承载
  16. (转载)SPSS之聚类分析(图文+数据集)
  17. 腾讯云Ubuntu18.04.4上安装brat文本标注工具(2020年9月)
  18. 1062: [NOI2008]糖果雨 - BZOJ
  19. 夏天推荐凉快的地方不嫌多!四明山这里更是集凉爽与好玩一起
  20. 2023第五届山东国际中医药产业展会,中医养生展,中医文化展

热门文章

  1. 【面试篇】牛客网面试总结
  2. android6.0按键处理浅析
  3. 英语翻译器-免费英语自动批量翻译器
  4. Fedora下的应用软件大集合
  5. 《变形金刚2:卷土重来》下载 类型:角色扮演 大小:3.96GB
  6. 会计职称考试等级分类
  7. 如何快速上手Mac电脑?mac新手教程 Mac电脑新手必看
  8. 弘辽科技:淘宝销量数据从哪查?销量怎么提升?
  9. python- 按指定列值筛选数据
  10. week7 PyCharm和Flask初应用