• Linux学习12—文件服务


    一. FTP

    1.1 FTP简介

    FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

    在这里插入图片描述

    1.2 作用

    FTP主要作用是提供文件的共享,互联网上的媒体资源和软件资源,绝大部分都是通过FTP服务器传递的。

    1.3 FTP基础

    • 工作原理

    FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序。FTP 是基于客户———服务器(C/S)模型而设计的,在客户端与 FTP 服务器之间建立两个连接。

    • 端口

    默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

    1.4 FTP Server配置

    1. 安装vsftp:yum -y install vsftpd

    我的centos 7中已经存在了,这里只是更新了

    在这里插入图片描述
    2. 准备一个后面我们要操作的文件并填写内容
    在这里插入图片描述

    1. 启动vsftp:systemctl start/enable vsftp
    2. 关闭防火墙

    systemctl stop firewalld #关闭防火墙
    systemctl disable firewalld
    setenforce 0 #这是linux另一道防火墙
    将/etc/selinux/config中修改内容为:SELINUX=disabled

    yum list | grep vsftp #查看本地的ftp版本
    yum -y install vsftpd. #安装vsftpd
    systemctl start/enable  vsftp  #	启动FTP服务
    systemctl stop firewalld #临时关闭防火墙
    systemctl disable firewalld #关闭防火墙(下次开机时仍然生效)
    vim /etc/selinux/config #修改SELINUX=disabled
    setenforce 0 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.5 LinuxFTP客户端程序1:lftp

    LFTP是一款非常著名的字符界面的文件传输工具。支持FTP、HTTP、FISH、SFTP、HTTPS和FTPS协议。

    在客户端安装lftp

    yum -y install lftp
    
    • 1

    利用lftp登录lftp服务器

    lftp 172.16.23.128 #这是我的ip地址
    
    • 1

    在这里插入图片描述

    查看ftp服务器下的文件:ls

    在这里插入图片描述

    下载文件abc.txt

    get abc.txt
    
    • 1

    下载pub文件夹

    mirror pub
    
    • 1

    在这里插入图片描述

    查看下载的内容:位置就是当前位置

    在这里插入图片描述

    1.6 LinuxFTP客户端程序2:wget

    wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。“wget” 这个名称来源于 “World Wide Web” 与 “get” 的结合。
    所谓自动下载,是指 wget 可以在用户退出系统的之后在继续后台执行,直到下载任务完成。

    从前面搭建的ftp服务器上下载abc.txt

    wget ftp://172.16.23.128/abc.txt 
    
    • 1

    在这里插入图片描述
    wget命令后面的-o表示指定下载文件放的位置(即存储位置)

    查看下载结果

    在这里插入图片描述

    从ftp服务器上下载文件夹

    wget -m ftp://172.16.23.128/pub
    
    • 1

    在这里插入图片描述

    查看下载结果

    在这里插入图片描述

    1.7 启动上传功能

    创建一个文件5.txt,并写入内容

    在这里插入图片描述

    上传文件

    put 5.txt
    
    • 1

    可以发现客户端是没有权限上传文件,仔细想想在实际生活中服务器的文件是很重要的,所以并不会允许客户端随意的上传文件,所以需要服务端放开指定客户端的权限。
    在这里插入图片描述
    下面是在FTP服务器上启动上传功能的流程:

    1. 配置文件简介

    配置FTP服务器的功能的开启和关闭的文件:vstfp.conf(内容如下)

    vim /etc/vsftpd/vsftpd.conf
    
    • 1

    在这里插入图片描述

    1. 检查禁用匿名账户登录开启

    在vsftpd.conf启用禁用匿名账户(默认,比较方便)

    anonymous_enable=YES#yes是允许匿名登录
    
    • 1

    在这里插入图片描述
    3. 配置上传指令

    anon_upload_enable=YES  #启动上传文件功能	
    anon_mkdir_write_enable=YES #启动创建目录的能力
    
    • 1
    • 2

    在这里插入图片描述

    1. 服务器上创建上传目录
    mkdir /var/ftp/upload
    chmod 777 /var/ftp/upload #修改文件夹权限
    
    • 1
    • 2

    完成上面后记得重启vsftpd服务
    5. 客户端测试(在客户端虚拟机上面做)

    • 登录服务器
    lftp 172.16.23.128
    
    • 1
    • 创建并上传文件
      创建文件写入内容:
    touch 234.txt
    echo 234 > 234.txt
    
    • 1
    • 2

    在这里插入图片描述
    登录ftp:

    lftp 172.16.23.128/upload #将文件上传到ftp服务器的upload目录下,这里直接登录进入了这个目录
    
    • 1

    上传文件:

    put 234.txt
    
    • 1

    ls 可以看见我们的234.txt文件上传上去了

    在这里插入图片描述

    二. NFS

    2.1 简介

    NFS也是一款,网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。RPC采用了XDR的支持。XDR是一种与机器无关的数据描述编码的协议,他以独立与任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送,多服务器节点同时挂载以及并发的写入。

    2.2 作用原理

    1. 提供文件共享服务
    2. 为web服务器配置集中的后端存储
      在这里插入图片描述

    2.3 NFS案例

    1. 环境

    两台centos 7虚拟机
    主服务器IP地址:172.16.23.128
    从机IP地址:172.16.23.137

    1. 关闭防火墙(两台机器都要关闭)
    systemctl stop firewalld
    systemctl disable firewalld
    vim /etc/selinux/config #修改SELINUX=disabled
    setenforce 0 
    
    • 1
    • 2
    • 3
    • 4
    1. 在主服务器上安装NFS服务器
    yum install -y nfs-utils
    
    • 1

    我这里已经装过了
    在这里插入图片描述
    4. 在主服务器上创建文件数据(后面测试用)

    mkdir /webdata #创建一个文件夹
    echo "nfs test2022" > /webdata/index.html #创建一个html文件
    
    • 1
    • 2

    在这里插入图片描述
    5. 配置NFS(/etc/exports是nfs的主配置文件)

    vim /etc/exports
    
    • 1

    在exports中加入的内容如下:

    /webdata 172.16.23.0/24(rw)
    
    • 1

    /webdata 指定发布资源的目录
    172.16.23.0/24:允许访问nfs的客户机所在的网段,子网掩码是24位
    (rw):客户机可读可写

    1. 启动NFS
    systemctl start nfs-server
    
    • 1

    检查输出目录(可以看到我们在exports中配置的),若正常输出则配置成功

    exportfs -v #可以查看我们发布了哪些文件资源
    
    • 1

    在这里插入图片描述
    7. 客户机安装NFS客户端

    yum install -y nfs-utils httpd
    
    • 1

    我这里已经安装
    在这里插入图片描述
    8. 客户机查看NFS服务器的可用目录

    showmount -e 172.16.23.128
    
    • 1

    可以看到nfs服务器(主机器)释放的/webdata文件夹
    在这里插入图片描述
    9. 客户机上手动挂载

    mount -f nfs 172.168.23.139:/webdata /var/www/html #这里的ip地址是nfs服务器主机的地址
    
    • 1

    此时我们可以查看/var/www/html/index.html(可以看当之前在主机上创建的html文件)
    在这里插入图片描述
    拓展:取消挂载是

    umount -t nfs 172.168.23.139:/webdata /var/www/html
    
    • 1
    1. df命令查看挂载(可以看见主机释放的文件已经被我们挂载在本地了)
      在这里插入图片描述
    2. 使用web客户端查看服务器

    任意找一台处客户机以外的机器,通过elinks访问,这里由于我只创建了两台服务器,所以使用主服务器来访问客户服务器的web,注意两点:

    1. 客户服务器安装并打开了httpd服务
    yum install -y httpd
    systemctl start httpd
    
    • 1
    • 2
    1. 主服务器安装了elinks
    yum install -y elinks
    
    • 1

    通过elink访问客户服务器web(显示的是index.html,因为/var/www/html默认作为web服务器文件夹内容)

    elinks http://172.16.23.137
    
    • 1

    在这里插入图片描述
    12. 在主服务器上更新index.html看客户服务器index.html是否发生变化

    1. 在主服务器上更新index.html的内容
      在这里插入图片描述
    2. 在客户机上文件是否发生了更新(可以看见发生了更新)
      在这里插入图片描述

    三. SSH

    3.1 简介

    SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。

    3.2 查看SSH安装状态

    rpm -qa | grep ssh
    
    • 1

    我的已经安装了
    在这里插入图片描述
    若没有安装

    yum install openssh-server
    
    • 1

    3.3 SSH服务管理

    1. 启动服务
    systemctl start sshd
    
    • 1
    1. 查看ssh工作的端口
    netstat -antp | grep sshd
    
    • 1

    3.4 远程登录

    使用ssh命令可以登录其他主机(如下是以root的身份登录ip为172.16.23.139这个机器,相当于获得了这台机器的控制权)

    在这里插入图片描述

  • 相关阅读:
    计算机二级公共基础知识-2023
    Kafka系列之:kafka集群broker节点变化重新分配分区
    E-Payment Integrator Delphi Edition
    G1回收器参数设置
    excel表导出
    LAS Spark+云原生:数据分析全新解决方案
    如何在ENVI中导入和定位SMAP的L3级土壤水分数据
    集合collection listmapset
    LeetCode //C - 130. Surrounded Regions
    python面向对象
  • 原文地址:https://blog.csdn.net/qq_43456605/article/details/127578309