Linux的FTP安装、使用和配置(FTP客户端管理工具)

2023-05-16

一、FTP服务介绍

1. 什么是HTP服务

FTP(File Transfer Protocol)是一种应用非常广泛并且古老的一个互联网文件传输协议

FTP主要用户互联网中文件的双向传输(上传/下载)、文的共享

跨品台(Linux、Windows、MAC)

FTP属于C/S架构,拥有客户端和服务器,使用TCP作为底层传输协议,提供可靠的数据传输

FTP的默认端口 21(命令端口)、20(数据端口,主动模式下) ,FTP 默认为被动模式

FTP软件全称为vsftpd

vsftpd => vs(very secure ftp daemon)

vs非常安全的ftp守护进程

2. FTP服务的客户端工具

Linux:ftp、lftp(客户端程序)

Windows:Xftp、Chrome、Firefox

lftp和ftp工具区别:

lftp:默认是以匿名用户访问

ftp:默认是以用户名+密码方式访问

lftp可以批量并且下载目录

3. FTP的两种运行模式

在FTP服务中,其一共拥有两种模式(主动模式+被动模式)

注意:这个主动和被动是站在FTP服务器端来看的

如果是FTP服务器主动连接客户端就是主动模式

如果是客户端主动连接FTP服务端就是被动模式

FTP模式是被动模式

1)主动模式

  1. 客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求

  1. 服务端的21号命令端口响应客户端的随机命令端口

  1. 服务端的20号端口主动请求连接客户端的随机数据端口

  1. 客户的随机数据端口进行确认

2)被动模式

  1. 客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的21号端口发起请求

  1. 服务端的21号命令端口响应客户端的随机命令端口

  1. 客户端主动连接服务器打开的大于1023的随机数据端口

  1. 服务端进行确认

3)为什么默认是被动模式

因为如果是主动模式可能会遇到客户端的防火墙拦截的可能,但如果是客户端主动发起连接就不会遇到这种情况。

二、搭建FTP服务

1. 关闭防火墙和selinux

关闭防火墙命令:systemctl stop firewalld

关闭防火墙开机自启:systemctl disable firewalld

关闭selinux:setenforce 0

关闭selinux开机自启:vim /etc/selinux/config

把SELINUX=disabled

2. 安装软件

如果没网挂载光盘。

命令:mount /dev/sr0 /mnt

清除缓存:yum clean all

重新建立缓存:yum makecache

第一步安装

  • 安装命令:yum -y install vsftpd

第二步启动ftp服务并添加到开机启动项中

启动:systemctl start vsftpd

设置开机自启:systemctl enable vsftpd

最后通过浏览器输入本机ip测试

查看本机Ip:ifconfig

使用FTP软件测试

3. 了解FTP软件配置文件

通过命令:rpm -ql vsftpd,查看安装vsftpd产生了哪写文件

/etc/vsftpd #配置文件的目录

/etc/vsftpd/ftpusers #用户列表文件,黑名单

/etc/vsftpd/user_list #用户列表文件,可黑可白(默认是黑名单)

/etc/vsftpd/vsftpd.conf #配置文件(主配置文件)

/var/ftp #匿名用户的默认数据根目录

/var/ftp/pub #匿名用户的扩展数据目录

/usr/sbin/vsftpd #程序本身(二进制的命令)

查看配置文件:过率掉以#开头的内容

命令:grep -v ^# /etc/vsftpd/vsftpd.conf

anonymous_enable=YES #支持匿名用户访问

local_enable=YES #支持非匿名用户,普通账号登录,默认进入到自己家目录

write_enable=YES #是否支持写入

local_umask=022 #反掩码 file:644 rw- r-- r-- dir:755

dirmessage_enable=YES #启用消息功能

xferlog_enable=YES #开启或启用xferlog日志

connect_from_port_20=YES #支持主动模式(默认被动模式)

xferlog_std_format=YES #xferlog日志格式

listen=NO #ftp服务独立模式下的监听

listen_ipv6=YES #支持ipv4和ipv6

pam_service_name=vsftpd #指定认证文件

userlist_enable=YES #启用用户列表

tcp_wrappers=YES #支持tcp_wrappers功能(FTP限速操作)

三、FTP使用

1. 任务背景

某创业公司刚刚起步,随着业务量的增多,咨询和投诉的用户也越来越多,公司的客服部门由原来的2个增加到5个。客服部门平时需要处理大量的用户反馈,不管是邮件,还是QQ,还是电话,客服人员都会针对每一次的用户反馈做详细的记录 ,但是由于客观原因,客服人员没有成熟稳定的客户服务系统,所以希望运维部门能够协助搭建一个文件共享服务来管理这些文档,并且随时跟踪客户的反馈情况。

2. 任务要求

客服人员必须使用用户名密码(kefu/123456)的方式登录服务器来下载相应文档

不允许匿名用户访问

客服部门的相关文档保存在指定的目录里/data/kefu local_root=/data/kefu

客服用户使用用户kefu/123登录后就只能在默认的==/data/kefu目录里活动==

3. 配置过程

1)创建客服账号

命令:useradd kefu

设置密码:echo 123456 | passwd --stdin kefu

2)不允许匿名用户访问

修改配置文件

vim /etc/vsftpd/vsftpd.conf

修改12行的配置文件

anonymous_enable=NO

重启vsftpd服务

systemctl restart vsftpd

关闭匿名用户登录后

3)指定账号访问的目录

创建/data/kefu目录

命令:mkdir -p /data/keft

修改FTP配置文件

命令:vim /etc/vsftpd/vsftpd.conf

在17行添加

local_root=/data/kefu

重启服务:systemctl restart vsftpd

在XFTP上测试连接,默认就是进入/data/kefu目录

4)限定kefu/123只能在/data/kefu目录下活动

为了保证安全,只能运行kefu用户在/data/kefu目录下活动

禁锢kefu用户只能在/data/kefu目录下

修改/etc/vsftpd/vsftpd.conf配置文件

命令:vim /etc/vsftpd/vsftpd.conf

在第18行添加

chroot_local_user=YES

禁锢在/data/kefu目录

5)解决无法上传

之所以无法上传,主要原因在于kefu这个账号对于/data/kefu文件夹没有w写权限,因为这个目录是root 创建的。

通过命令:getfacl [目录]查看当前目录的ACL 权限

解决办法:用户ACL给kefu用户单独设置写权限

命令:setfacl -R -m u:kefu:rwx /data/kefu

6)禁锢目录

让所有用户只能在固定目录活动

禁锢所有用户修改配置文件:/etc/vsftpd/vsftpd.conf

添加:chroot_local_user=YES

给某一些用户开同非禁锢权限

修改配置文件

105行 chroot_list_enable=YES 开启用户列表文件

107行chroot_list_file=/etc/vsftpd/chroot_list 指定用户列表文件

比如让hhy这个用户不会被禁锢在指定目录

命令:echo hhy >> /etc/vsftpd/chroot_list

重启服务:systemctl restart vsftpd

四、Linux下ftp客户端管理工具

1. 安装ftp和lftp

ftp和lftp都是Linux下ftp的客户端管理工具

安装命令:yum -y install ftp lftp

  • ftp一般用来上传下载单个或者多个文件

  • lftp一般用于批量上传或下载文件

2. ftp工具

命令:ftp [目标主机ip]

注意:目标主机要安装vsftpd服务

1) 解决ftp工具登录报错

原因是目录没有写入权限

解决方案:修改/etc/vsftpd/vsftpd.conf配置文件

在19行添加:allow_writeable_chroot=YES

2)ftp客户端工具常用命令

通过help可以查看有哪些命令

  • ls:和linux上的ls命令类似

  • Ctrl+Shift + L:清屏

  • put:使用put [本地文件路径+名称] 上传

get:使用get [远程文件路径+名称] 下载

mput:批量上传多个文件:mput 文件名1 文件名2

mget:批量获取多个文件:mget 文件名1 文件名2

prompt:屏蔽批量输出信息,批量上传下载文件就不需要一直回车确认了

  • quit:退出ftp

3. lftp工具(批量操作)

使用命令:lftp [用户名]@目标主机ip

lftp常用命令

通过 help获取命令帮助

获取某个命令的用法:help 命令

常用命令:mirror

示例1:批量上传(把tmp文件夹上传到FTP服务器上)

命令:mirror -R tmp

示例2:批量下载(把整个FTP目录下载到本地)

命令:mirror ./

五、FTP控制

1. FTP访问对象控制(黑名单)

在 /etc/vsftpd/目录下有这么两个文件

  • ftpusers:黑名单

  • user_list:默认是黑名单(可以改成白名单)

默认情况下,root账号是不能登录FTP服务器的。**因为root账号在/etc/vsftpd/ftpusers黑名单里

注意:这个两个黑名单是同时起作用的,只有把这个两个名单里的用户同时删除才能登录

示例2:ftpusers 和 user_list黑名单不同之处

ftpusers:被禁用,可以输入密码,返回530

[root@localhost ~]# ftp 192.168.44.122
Connected to 192.168.44.122 (192.168.44.122).
220 (vsFTPd 3.0.2)
Name (192.168.44.122:root): kefu
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>

user_list:默认情况下user_list文件也是黑名单,如果在该文件里直接拒绝,不给输入密码的机会。

[root@localhost ~]# ftp 192.168.44.122
Connected to 192.168.44.122 (192.168.44.122).
220 (vsFTPd 3.0.2)
Name (192.168.44.122:root): kefu
530 Permission denied.
Login failed.
ftp>

示例3:user_list可以从黑名单变成白名单(允许某个用户登录FTP系统服务器)

user_list如果要变成白名单,需要在/etc/vsftpd/vsftpd.conf配置文件里增加

userlist_deny=NO

注意:如果user_list被设置为白名单,那必须在该文件里 的用户才能访问ftp服务

总结

用户在ftpusers文件中,那么用户不能访问ftp服务器

用户在user_list文件中,如果该文件是白名单,那么只在该文件中的用户可以访问ftp服务

如果user_list文件是白名单,用户即在ftpusers中又在user_list中,那么ftpusers拒绝优先

2. FTP 网络访问控制

/etc/hosts.allow:允许访问网段的配置文件

/etc/hosts.deny:拒绝访问网段的配置文件

TP必须支持tcp_wrappers

通过命令:tail -1 /etc/vsftpd/vsftpd.conf 可以查看ftp的配置文件,是支持tcp_wrappers

[root@localhost vsftpd]# tail -1 /etc/vsftpd/vsftpd.conf
tcp_wrappers=YES
[root@localhost vsftpd]#

1)限制IP地址

限制ip或者ip网段访问示例

修改/etc/hosts.deny配置文件

添加对应配置文件:

vsftpd:all     拒绝所有主机连接ftp
vsftpd:all EXCEPT 192.168.44.122    拒绝所有ip ,除了192.168.44.122
vsftpd:192.168.44.155    拒绝单个ip访问
vsftpd:192.168.44.155:allow    允许192.168.44.155访问,类似/etc/hosts.allow里增加vsftpd:192.168.44.155

拒绝某个网段

vsftpd:192.168.44.122/255.255.255.0   拒绝某个网段
vsftpd:192.168.0.0/255.255.255.0 EXCEPT 192.168.44.122   拒绝某个网段,但是除了192.168.44.122地址

注意:子网掩码不支持192.168.44.122/24这种写法

还可以禁用sshd服务的某个ip

vim /etc/hosts.deny
vsftpd,sshd:192.168.44.155

代表禁止:192.168.44.155这个ip 连接这个两个服务

2)如何判断某个服务是否支持tcp_wrappers

命令: ldd命令 +二进制程序,查询某个软件包含哪些模块

示例:查询vsftpd与sshd是否支持tcp_wrappers

[root@localhost vsftpd]# ldd /usr/sbin/sshd | grep libwrap*
    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fc5e4160000)
[root@localhost vsftpd]# ldd /usr/sbin/vsftpd | grep libwrap*
    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007ff21c4da000)
[root@localhost vsftpd]#

3)显示FTP流量

修改配置文件

vim /etc/vsftpd/vsftpd.conf
在配置文件中添加一行
local_max_rate=0
# 0代码不限速
# local_max_rate以字节为单位

4)使用第三方平台视频

  1. 在linux中安装httpd
    命令:yum -y install httpd

  1. 启动httpd
    命令:systemctl start httpd\

  1. :在/var/www/html项目目录中创建一个demo.html文件

把下面内容写入demo.html中

<iframe height=498 width=510 src='https://player.youku.com/embed/XNTg4NjMwNTUwNA==' frameborder=0'allowfullscreen'></iframe>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux的FTP安装、使用和配置(FTP客户端管理工具) 的相关文章

随机推荐

  • swig 使用案例

    包含数组 结构体嵌套 xff0c 函数指针传递等基本操作 swig默认不支持数组元素的写入 xff0c 如果想操作数组元素 xff0c 可以附加一些接口函数实现 比如下面在处理结构体的数组成员时 xff0c 使用 extend命令扩展了对应
  • 攻击防御实例——SQL注入

    攻击防御实例 SQL注入 1 i 表示匹配的时候不区分大小写 2 s 匹配任何不可见字符 xff0c 包括空格 制表符 换页符等等 等价于 f n r t v 3 information schema xff1a 是一个数据库 xff0c
  • 264 nal type

    NUAL HEAD 43 43 0 1 2 3 4 5 6 7 43 43 43 43 43 43 43 43 43 F NRI Type 43 43 F xff1d Forbidden zero bit 61 0 NRI 61 Nal r
  • SubClassWindow详解

    许多Windows程序员都是跳过SDK直接进行RAD开发工具 或VC xff0c 我想VC应不属于RAD 的学习 xff0c 有些人可能对子类化机制比较陌生 我们先看看什么是Windows的子类化 Windows给我们或是说给它自己定义了许
  • stl upper_bound函数实现

    写了一个upper bound的实现 其中递归使用二分法求解最上界 xff0c 虽然写的完全不像STL的风格 xff0c 但是练手还是可以的 view plaincopy to clipboardprint 01 include lt io
  • 关于TrackMouseEvent用法总结

    对于这个函数我也是最近想研究控件自绘才知道它真正怎么用 以前只是见到过 嗯 废话不多说 我先说下我的问题 如何响应鼠标离开某个窗体 控件 事件 先大概讲下步骤 然后再集中对 TrackMouseEvent 进行详解 为按钮添加以下几个函数
  • 关于CComboBox的自绘

    我想 如果大家学过一些控件的自绘的话 CComboBox算是很难的一种了 首先是它本身的复杂度 它由三个控件组成 CEdit CListBox CButton 我想但就CEdit来讲 就够你受得了 还要想想他们之间的消息传递 不禁让人无从下
  • 内部链接与外部链接

    在说内部连接与外部连接前 xff0c 先说明一些概念 1 声明 一个声明将一个名称引入一个作用域 在c 43 43 中 xff0c 在一个作用域中重复一个声明是合法的 以下都是声明 xff1a int foo int int 函数前置声明
  • partition/stable_partition详解

    Partition 将满足条件的元素向前移动 TEMPLATE FUNCTION partition template lt class BidIt class Pr gt inline BidIt Partition BidIt Firs
  • jsoncpp解析拼装数组

    int main 数组创建与分析 例子一 string strValue 61 34 34 ldh 34 34 001 34 34 gfc 34 34 002 34 34 yyj 34 34 003 34 34 andy 34 34 005
  • 查看静态库(.lib)和动态库(.dll)的导出函数的信息

    一般情况下 xff0c 我们需要查看一个DLL或EXE中的包含的函数或是依赖的函数之类的信息 xff0c 可以使用VS自带的工具dumpbin xff1b 可以直接在命令行下输入dumpbin就可以查看他的使用说明 xff0c 如果未显示
  • do {...} while (0) 在宏定义中的作用

    http www cnblogs com lanxuezaipiao p 3535674 html 如果你是一名C程序员 xff0c 你肯定很熟悉宏 xff0c 它们非常强大 xff0c 如果正确使用可以让你的工作事半功倍 然而 xff0c
  • Nginx 代理服务器10k文件无法上传

    在我们使用Nginx作为代理服务器的时候 xff0c 在进行文件上传时 xff0c 大于10k的文件上传失败 xff0c 因为此时后台服务并没有接收到请求 xff0c 所以在Nginx配置中进行排错 xff0c 终于找到了问题所在 1 修改
  • 即插即用型设备驱动的加载过程

    现假设驱动程序已被正确安装 xff1a 1 某种PnP总线驱动发现了即插即用设备的存在 xff1a 对于热插拔设备 xff0c 则发现过程发生于插入设备的瞬间 xff1b 如果是非热插拔设备 xff0c 则发现过程发生于系统启动时 2 Pn
  • EXCEL 基于合并计算工具实现相似表格汇总和求平均值

    1 表格汇总合并 在处理大量表格时 xff0c 有时候需要将很多相思内容的表格 xff0c 合并到一张表里 xff0c 那么就需要用到 合并计算工具 了 如下表所示为某公司南京分部的BCD产品的销售额 通过下表可以知道还有海口 上海 珠海三
  • ZYNQ7020AMP使用方法总结

    本人使用的sdk版本为2015 4本人的方法适用于15 4之后的版本 Zynq开发双核分为两种方法 xff0c 第一种双核裸跑 xff0c 第二种linux 43 裸跑 双核裸跑 xff1a 先使用Debug调试器调试 xff0c 通过SD
  • 试用了5款BI分析工具,终于找到了上手最快的那一个!

    前几天 xff0c 领导甩给我一个任务 xff0c 考察几个BI工具 xff0c 下季度立项用 潜心做ETL的我 xff0c 对BI只是略懂 之前上的BO xff0c 由于开发模式不适应 人员用不惯 xff0c 再加上负责这块的同事走的走
  • RNA-seq流程——使用hisat2进行序列比对(不利用循环&利用循环)(未完待续)

    RNA seq流程 使用hisat2进行序列比对 xff08 不利用循环 xff06 利用循环 xff09 xff08 未完待续 xff09 本次使用ky老师的文件进行序列比对 xff0c 比对时使用双端比对 xff0c 1 clean f
  • JavaWeb学习jsp中,单击验证码图片进行替换

    lt td gt 验证码 lt td gt lt td class 61 34 inputs 34 gt lt input name 61 34 checkCode 34 type 61 34 text 34 id 61 34 checkC
  • Linux的FTP安装、使用和配置(FTP客户端管理工具)

    一 FTP服务介绍 1 什么是HTP服务 FTP xff08 File Transfer Protocol xff09 是一种应用非常广泛并且古老的一个互联网文件传输协议 FTP主要用户互联网中文件的双向传输 xff08 上传 下载 xff