构建NFS-FTP文件共享存储

一、NFS

1.1 NFS介绍

NFS:Network File System 网络文件系统,NFS 和其他文件系统一样,是在 Linux 内核中实现的,因此 NFS 很难做到与 Windows 兼容。NFS 共享出的文件系统会被客户端识别为一个文件系统,客户端可以直接挂载并使用。是Unix系统之间共享文件的一种协议,NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 的客户端主要为Linux。

因为NFS有很多功能,不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息,这样就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。那RPC和NFS之间又是如何之间相互通讯的?

首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。

1.2 实战

实验环境准备两台机器
支持多节点同时挂载以及并发写入
服务端:nfs-server 192.168.246.160
客户端:web1 192.168.246.161

centos7(服务端和客户端都关闭防火墙和selinux内核防火墙)

  • NFS-server服务端操作

    1.安装NFS及rpc协议包
    [root@nfs-server ~]# yum -y install rpcbind 
    [root@nfs-server ~]# yum -y install nfs-utils 
    
    2.启动服务
    [root@nfs-server ~]# systemctl start nfs
    [root@nfs-server ~]# systemctl start rpcbind
    
    3.创建存储目录
    [root@nfs-server ~]# mkdir /nfs-dir
    [root@nfs-server ~]# echo "nfs-test" >> /nfs-dir/index.html   # 制作测试文件index.html
    
    4.编辑共享文件
    [root@nfs-server ~]# vim /etc/exports
    /nfs-dir        192.168.246.0/24(rw,no_root_squash,sync)
    

    在编辑共享文件时的可选参数详解:

    ro:  # 只读
    rw:  # 读写
    *:   # 表示共享给所有网段。
    sync:# 所有数据在请求时写入共享
    root_squash:    # 对于使用分享目录的使用者如果是root用户,那么这个使用者的权限将被压缩成为匿名使用者,只读权限。
    no_root_squash: # 使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限。
    all_squash:     # 这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的使用者将权限压缩为匿名用户。缺省设置是 no_all_squash。
    
    共享目录共享给谁共享出去的文件属性
    共享文件一个人:ip/24(rw,no_root_squash,sync)
    共享文件所有人:*(rw,ro,no_root_squash,sync)
    共享文件网段:192.168.246.0/24(rw,no_root_squash,sync)
    5.启NFS服务
    [root@nfs-server ~]# systemctl restart nfs-server
    [root@nfs-server ~]# systemctl enable nfs-server
    
    6.确认NFS服务器启动
    [root@testpm-server ~]# exportfs -v
    /nfs-dir        192.168.246.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
    
  • web1客户端操作

    1.安装NFS及rpc协议包
    [root@web1 ~]# yum -y install rpcbind
    [root@web1 ~]# yum -y install nfs-utils
    
    2.创建挂载点并挂载
    [root@web1 ~]# mkdir /zrs
    [root@web1 ~]# mount -t nfs 192.168.246.160:/nfs-dir /zrs
    [root@web1 ~]# df -Th
    Filesystem               Type      Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root  xfs        17G  1.1G   16G   7% /
    tmpfs                    tmpfs      98M     0   98M   0% /run/user/0
    192.168.246.160:/nfs-dir nfs4       17G  1.4G   16G   8% /zrs
    
    3.查看挂载目录下的内容
    [root@web1 ~]# ls /zrs   
    index.html   # 挂载目录下存在index.html文件,说明NFS文件共享成功
    
    4.制作开机挂载
    [root@client.qfedu.com ~]# vim /etc/fstab
    192.168.246.160:/nfs-dir    /qf          nfs     defaults        0 0
    [root@client.qfedu.com ~]# mount -a
    
    [root@web1 ~]# umount /zrs  # 取消挂载
    

二、FTP

2.1 FTP介绍

  • 文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

  • FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。

FTP Server
作用:提供文件共享服务,实现上传下载。

2.2 FTP基础

软件包:vsftpd
FTP端口:控制端口 command 21/tcp
配置文件:/etc/vsftpd/vsftpd.conf

(1)ftp主动模式

ftp主动模式:客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1,告诉服务端,我监听的是N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输。

21:端口建立连接
20:端口传输数据

(2)ftp被动模式

ftp被动模式:客户端同时开启两个端口(1024,1025),一个端口(1024)跟服务端的21端口建立连接,并请求,大哥,我连上了,你再开一个端口呗。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户端用另一个端口(1025)与服务端的(1027)端口进行连接,传输数据。

企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。

2.3 Vsftp服务器简介

Vsftp:Very Secure FTP daemon非常安全的FTP服务进程,Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用(1000用户)等。

2.4 实战

实验环境:准备两台机器

关闭防火墙和selinux

ftp-server 192.168.246.160
client 192.168.246.161

2.4.1 匿名用户登录
  • FTP Server服务端操作

    1.安装vsftpd服务
    [root@ftp-server ~]# yum install -y vsftpd
    [root@ftp-server ~]# systemctl start vsftpd
    [root@ftp-server ~]# systemctl enable vsftpd
    
    2.创建文件到共享目录(FTP默认共享目录:/var/ftp/pub/)
    [root@ftp-server ~]# touch /var/ftp/pub/test.txt 
    [root@ftp-server ~]# cd /var/ftp/
    [root@ftp-server ftp]#
    
    3.改变根目录的属主、属组
    [root@ftp-server ftp]# chown ftp.ftp pub/ -R
    [root@ftp-server ftp]# ll 
    total 0
    drwxr-xr-x. 2 ftp ftp 22 Aug  3 03:15 pub
    

    **重点:**改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。

    修改完配置之后需要重启完服务才能生效。
    还需要从新从客户端登陆,否则修改后的配置看不到效果。

    4.编辑配置文件:找到29行将下面的注释取消
    [root@ftp-server ~]# vi /etc/vsftpd/vsftpd.conf
    anon_other_write_enable=YES
    

    在这里插入图片描述

    5.重启vsftpd
    [root@ftp-server ~]# systemctl restart vsftpd
    
  • FTP Clinet客户端操作

    1.安装客户端
    [root@client ~]# yum -y install lftp
    get命令(下载,首先要开启下载功能)
    [root@client ~]# lftp 192.168.246.160
    lftp 192.168.246.160:~> ls
    drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
    lftp 192.168.246.160:/> cd pub/
    lftp 192.168.246.160:/pub> ls
    -rw-r--r--    1 14       50              0 Aug 02 19:14 test.txt
    

    接下来进行下载、创建和上传操作:

    2.下载(get命令)
    lftp 192.168.246.160:/pub> get test.txt
    lftp 192.168.246.160:/pub> exit
    [root@client ~]# ls  # 会下载到当前目录
    anaconda-ks.cfg  test.txt
    
    3.创建目录
    [root@client ~]# lftp 192.168.246.160
    lftp 192.168.246.160:/pub> mkdir dir
    mkdir ok, `dir' created
    
    4.上传(put命令可上传单独文件,mirror命令上传目录以及目录中的子文件)
    

    上传命令,上传之前请在服务端进行配置,将上传功能打开。

    [root@client ~]# touch upload.txt  # 创建测试文件
    [root@client ~]# mkdir /test/      # 创建测试目录
    [root@client ~]# touch /test/test1.txt   # 在测试目录下面创建测试文件
    [root@client ~]# lftp 192.168.246.160
    lftp 192.168.246.160:~> cd pub/
    lftp 192.168.246.160:/pub> put /root/upload.txt  # 上传文件
    lftp 192.168.246.160:/pub> ls
    -rw-------    1 14       50              0 Nov 16 12:14 upload.txt
    drwx------    2 14       50              6 Aug 02 19:17 dir
    lftp 192.168.246.160:/pub> mirror -R /test/      # 上传目录以及目录中的子文件
    Total: 1 directory, 1 file, 0 symlinks
    New: 1 file, 0 symlinks
    lftp 192.168.246.160:/pub> ls
    drwx------    2 14       50             23 Nov 16 12:18 test
    -rw-------    1 14       50              0 Nov 16 12:14 upload.txt
    
    # mirror:下载目录
    
2.4.2 本地(系统)用户登录
  • 创建测试用户

    创建 zhangsan ,密码都设置为123456。

    [root@ftp-server ~]# useradd zhangsan 
    [root@ftp-server ~]# useradd lisi
    [root@ftp-server ~]# echo '123456' | passwd --stdin  zhangsan
    Changing password for user zhangsan.
    passwd: all authentication tokens updated successfully.
    
  • 配置本地用户ftp配置文件

    [root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=NO             # 将允许匿名登录关闭
    #anon_umask=022                 # 匿名用户所上传文件的权限掩码 
    #anon_upload_enable=YES         # 允许匿名用户上传文件
    #anon_mkdir_write_enable=YES    # 允许匿名用户创建目录
    #anon_other_write_enable=YES    # 是否允许匿名用户有其他写入权(改名,删除,覆盖)
    【新添加】:
    local_root=/home/zhangsan       # 设置本地用户的FTP根目录,一般为用户的家目录
    local_max_rate=0                # 限制最大传输速率(字节/秒)0为无限制
    

    在这里插入图片描述

  • 重启vsftpd

    [root@ftp-server ~]# systemctl restart vsftpd
    
  • 客户端操作

    [root@ftp-client ~]# lftp 192.168.153.137 -u zhangsan
    Password: 
    lftp zhangsan@192.168.153.137:~> ls
    lftp zhangsan@192.168.153.137:~> mkdir aaa
    mkdir ok, `aaa' created
    lftp zhangsan@192.168.153.137:~> ls
    drwxr-xr-x    2 1000     1000            6 Aug 02 20:55 aaa
    lftp zhangsan@192.168.153.137:~> put /root/test.txt 
    lftp zhangsan@192.168.153.137:~> ls
    drwxr-xr-x    2 1000     1000            6 Aug 02 20:55 aaa
    -rw-r--r--    1 1000     1000            0 Aug 02 20:59 test.txt
    
    服务器端查看
    [root@ftp-server ~]# cd /home/zhangsan/
    [root@ftp-server zhangsan]# ls
    aaa  test.txt
    [root@ftp-server zhangsan]# ll
    total 0
    drwxr-xr-x. 2 zhangsan zhangsan 6 Aug  3 04:55 aaa
    -rw-r--r--. 1 zhangsan zhangsan 0 Aug  3 04:59 test.txt
    

总结

这是一个简单的文件共享构建,可通过远程客户端对NFS网络文件系统文件进行挂载并实现数据共享。除了我们的NFS,还有我们的FTP也是比较实用的,不管是在Windows操作系统还是Linux操作系统下,都是很稳定的,可实现文件的上传、创建和下载操作,非常方便。当然了还有很多实现共享的方法,这里举的例子是比较常用的。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值