小阿轩yx-FTP文件传输服务

小阿轩yx-FTP文件传输服务

协议

  • 用来上传和下载
  • 实现远程共享文件
  • 统一管理文件

原理 

  • 控制文件的双向传输,是一个应用程序
  • 工作在TCP/IP协议簇的
  • 提高文件传输的共享性和可靠性
  • 使用C/S模式的工作方式连接同时处理服务器和客户端的连接命令和数据传输
  • 将命令和数据分开传输,提高传输效率

端口:21

(注:端口号通常是21,主动模式下20,被动模式下随机端口)

连接方式两个阶段

  • 管理连接
  • 数据连接

管理连接:客户端使用随机端口(要>1024端口,高位端口)---> 连接服务器的21端口

数据连接

主动模式:服务器会使用(20端口)主动向客户端(随机端口,高位端口)发起连接(服务器连客户端) 

被动模式:服务器(随机端口)等待客户端(随机端口)向自己发起连接(客户端连服务器)

区别

  • 主动模式客户端的防火墙会拦截服务器发起的连接
  • 被动模式服务器需要处理防火墙(要么关闭、要么添加策略)

两种传输模式 

文本模式

ASCII模式美国信息交换信息标准码,传输文件使用 ASCII 标准字符序列,一般只用于传输文件的传输

二进制模式

又称为 Binary 这种模式不会转换文件中的字符序列,跟适合传输程序图片等非文本文件

Vsftpd可支持最大 15000 并发连接数

FTP两种模式

主动模式

客户端使用随机端口与服务器的21号端口建立控制连接,服务器端主动的使用20号端口向客户端的随机端口建立据连接,经过三次握手完成

被动模式

 客户端使用随机端口向服务器的21号端口建立管理连接,服务器使用建立好的管理通道向客户端发送一个随机的端口号,然后客户端随机的向服务器端发过来的端口经过三次握手后建立好这个数据连接

使用两个端口

  • 控制端口数据端口

  • FTP服务

首先关闭防火墙

[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld

安装vsftpd

[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# systemctl start vsftpd

开启一个客户端,在客户端安装ftp软件并测试 

[root@localhost ~]# yum -y install ftp
[root@localhost ~]# ftp 192.168.10.101
Connected to 192.168.10.101 (192.168.10.101).
220 (vsFTPd 3.0.2)
Name (192.168.10.101:root):ftp
331 Please specify the password.
Password:    # 这里直接按Enter就行
230 Login successful.    # 看到这个就是登录成功了
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> exit    # 这里退出可以用exit、quit、bye
221 Goodbye.

 开启主动模式并关闭被动模式

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
# 允许服务器主动模式,用20端口连接
connect_from_port_20=YES
# 关闭被动模式
pasv enable=NO

查看vsftpd的配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YESpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

将#号开头的行删掉

[root@localhost ~]# sed -i '/^#/d' /etc/vsftpd/vsftpd.conf

三种用户登录方式

本地用户模式

  • localhost_enable=YES        //允许本地用户访问
  • Write_enable=YES              //本地用户的写入权限
  • Local_umask=002               //本地用户上传文件的权限减去这个umask值
  • Userlist_deny=YES              //是否禁用user_list列表中的用户账号,若启用必须等于==NO
  • Userlist_enable=YES          //是否启用user_list列表中的用户无法登录User_list白名单文件,如果设置userlist_deny=NO  Userlist_enable=YES则只允许该列表中的用户登录若一个用户同时存在两个文件中,黑名单生效,该用户不能登录

虚拟用户模式

  • 可以将用户的登录名和密码设置不相同

  • 提高服务器的安全性

第一步:创建文本格式的用户名和密码  奇数行为用户名,偶数行为密码

第二步:建立虚拟FTP用户的数据库文件

第三步:添加虚拟用户的映射账号

第三步:为虚拟用户建立PAM认证文件

第四步:修改配置文件添加虚拟用户的支持

Local_enable=YES  #需要映射本地用户所以启用

Write_enable=YES  ##启用上传写入权限

Guest_enable=YES  ##开启虚拟用户

Anon_umask=022 ### 指定上次权限掩码

Guest_username=*  ###指定映射的本地系统用户

Pam_serrivce_name=vsftpd.vu  ##指定新的pam认证文件

User_config_dir=/*/*/*/   ###为不同的虚拟用户设置不同的权限

匿名用户

匿名访问 FTP 服务

  • FTP无需密码直接登录(有时账号也不需要)
  • 妥善设置权限不要太高,一般仅允许下载
准备匿名 FTP 访问目录
[root@localhost ~]# touch /var/ftp/test
[root@localhost ~]# chown ftp /var/ftp/pub
[root@localhost ~]# chmod 755 /var/ftp/pub
[root@localhost ~]# cd/var/ftp/pub
开放匿名用户

添加以下内容

[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
anon_umask=022
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes

重启服务 

[root@localhost ~]# systemctl restart vsftpd

找出运行在指定端口的进程 

[root@localhost ~]# netstat -anpt | grep vsftpd
测试匿名 FTP 服务器

测试访问

[root@localhost ~]# ftp 192.168.10.101
Connected to 192.168.10.101 (192.168.10.101).
220 (vsFTPd 3.0.2)
Name (192.168.10.101:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (192,168,10,101,221,180).
150 Here comes the directory listing.
drwxr-xr-x    2 14       0               6 Nov 05  2016 pub
-rw-r--r--    1 0        0               0 May 20 02:14 test
-rw-r--r--    1 0        0               0 May 20 02:14 text
226 Directory send OK.
ftp> lcd /opt
Local directory now /opt
ftp> get test
local: test remote: test
227 Entering Passive Mode (192,168,10,101,141,88).
150 Opening BINARY mode data connection for test (0 bytes).
226 Transfer complete.
ftp> lcd /root
Local directory now /root
ftp> cd pub
250 Directory successfully changed.
ftp> put initial-setup-ks.cfg 
local: initial-setup-ks.cfg remote: initial-setup-ks.cfg
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
1638 bytes sent in 0.00327 secs (501.22 Kbytes/sec)
ftp> quit
221 Goodbye.

wget测试

[root@localhost ~]# wget ftp://192.168.10.101/pub/111
--2021-11-16 09:50:15--  ftp://192.168.10.101/pub/111=> “111”
正在连接 192.168.10.101:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。   ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> CWD (1) /pub ... 完成。
==> SIZE 111 ... 完成。
==> PASV ... 完成。   ==> RETR 111 ... 完成。[ <=>                                   ] 0           --.-K/s 用时 0s      2021-11-16 09:50:15 (0.00 B/s) - “111” 已保存 [0]

 用户验证的 FTP 服务

本地用户验证配置

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
#anon_upload_enable=yes
#anon_mkdir_write_enable=yes
#anon_other_write_enable=yes
......省略部分内容
chroot_local_user=yes
allow_writeable_chroot=yes
listen=NO
listen_ipv6=YES
开启root访问权限
[root@localhost ~]# vim /etc/vsftpd/user_list 
# 在root账号前价格注释符
#root
编辑配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES
anon_umask=022
#anon_upload_enable=yes
#anon_mkdir_write_enable=yes
#anon_other_write_enable=yes
重启服务
[root@localhost ~]# systemctl restart vsftpd
修改监听地址与端口
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
listen=YES
listen_address=192.168.10.101    # 添加监听地址
listen_port=2121                 #添加监听端口
listen_ipv6=no
[root@localhost ~]# ftp 192.168.10.101 2121
# 使用ftp的被动模式
pasv_enable=yes
pasv_min_port=24500
pasv_max_port=24600

重启服务

[root@localhost ~]# systemctl restart vsftpd
客户端测试 
[root@localhost ~]# touch aaa
[root@localhost ~]# ftp 192.168.10.101
Connected to 192.168.10.101 (192.168.10.101).
220 (vsFTPd 3.0.2)
Name (192.168.10.101:root): zhangsan
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put aaa
local: aaa remote: aaa
227 Entering Passive Mode (192,168,10,101,114,218).
150 Ok to send data.
226 Transfer complete.
ftp> quit
221 Goodbye.

扩展

修改匿名用户的目录

[root@localhost ~]# mkdir -p /opt/ftp/myftp
[root@localhost ~]# chown ftp /opt/ftp/myftp

修改配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
# 添加以下字段:
anon_root=/opt/ftp

修改系统用户的根目录

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
# 添加以下字段:
#anon_root=/opt/ftp
local_root=/opt/ftp
授权用户
  • 识别账号并授权
  • 比匿名用户高级
  • 账号密码:密码直接敲回车,不用输入密码

ftp服务分为

  • 服务器端(vsftpd)
  • 客户端(ftp)

文件:666-022

目录:777-022 

(注:022是反掩码)

xinetd超级服务:代替ftp类的服务,监听其对应的端口,如果有应用访问这个端口,立即唤醒ftp这个程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NumPy】NumPy实战入门:线性代数(dot、linalg)与随机数(numpy.random)详解

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

Modular RPG Hero PBR

-掩码着色着色器提供了无限的颜色变化。(适用于标准/HDRP/URP 11.0.0) -为剑与盾/双剑/双剑姿态提供了简单的角色控制器。(不包括弓和魔杖控制器)(它是用旧的输入系统建造的) -HDRP/URP(11.0.0)SRP 100%支持常规着色器和遮罩着色着色器(基于着色器图形) -具有许多模块…

rtk技术的使用, test ok

1. 什么是gnss 2 rtk定位

五分钟部署开源运维平台Spug结合内网穿透实现远程登录管理

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、文件…

C语言中的 ?: :三元运算符详解

C语言中的 ?: &#xff1a;三元运算符详解 在C语言的浩瀚代码海洋中&#xff0c;三元运算符&#xff08;?:&#xff09;如同一位优雅的舞者&#xff0c;以简洁的姿态完成条件判断与赋值的双重任务。它以问号&#xff08;?&#xff09;和冒号&#xff08;:&#xff09;这两个…

Spring boot 注入成员变量HttpServletRequest的原理

前言 最近做项目&#xff0c;springboot项目&#xff0c;本来我们在controller的requestmapping取参数值或者返回写时&#xff0c;使用方法参数&#xff0c;但是发现老项目直接注入了成员变量&#xff0c;Spring本身是单例的&#xff0c;如果是成员变量注入&#xff0c;那么也…

【C语言】指针(三)

目录 一、字符指针 1.1 ❥ 使用场景 1.2 ❥ 有关字符串笔试题 二、数组指针 2.1 ❥ 数组指针变量 2.2 ❥ 数组指针类型 2.3 ❥ 数组指针的初始化 三、数组指针的使用 3.1 ❥ 二维数组和数组名的理解 3.2 ❥ 二维数组传参 四、函数指针 4.1 ❥ 函数的地址 4.2 ❥ 函数…

【STL】C++ list 基本使用

目录 一 list 常见构造 1 空容器构造函数&#xff08;默认构造函数&#xff09; 2 Fill 构造函数 3 Range 构造函数 4 拷贝构造函数 二 list迭代器 1 begin && end 2 rbegin && rend 三 list 容量操作 四 list 修改操作 1 assign 2 push_front &a…

牛客NC362 字典序排列【中等 DFS Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/de49cf70277048518314fbdcaba9b42c 解题方法 DFS&#xff0c;剪枝Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回…

【小笔记】如何在docker中更新或导入neo4j数据?

如何在docker中更新或导入neo4j数据&#xff1f; &#xff08;1&#xff09;背景&#xff1a; 我尝试了4.4.9和5.19.0版本的Neo4j社区版&#xff0c;基于他们的镜像创建容器后&#xff0c;需要导入我准备好的csv文件或dump文件&#xff0c;因为数据量非常大&#xff0c;所以采…

2024电工杯数学建模B题Python代码+结果表数据教学

2024电工杯B题保姆级分析完整思路代码数据教学 B题题目&#xff1a;大学生平衡膳食食谱的优化设计及评价 以下仅展示部分&#xff0c;完整版看文末的文章 import pandas as pd df1 pd.read_excel(附件1&#xff1a;1名男大学生的一日食谱.xlsx) df1# 获取所有工作表名称 e…

HarmonyOS-MPChart绘制一条虚实相接的曲线

本文是基于鸿蒙三方库mpchart&#xff08;OpenHarmony-SIG/ohos-MPChart&#xff09;的使用&#xff0c;自定义绘制方法&#xff0c;绘制一条虚实相接的曲线。 mpchart本身的绘制功能是不支持虚实相接的曲线的&#xff0c;要么完全是实线&#xff0c;要么完全是虚线。那么当我…

根据多个坐标经纬度获取到中心点的经纬度,scala语言

文章目录 前言scala 代码 总结 前言 Scala 语言 通过多个经纬度坐标点, 计算出中心点, 这里使用的是 Scala 语言,其他的语言需要自行转换。求出来的并不是原有的点&#xff0c;而是原有点的中心位置的点。 scala 代码 package com.dw.process.midimport java.lang.Double.pa…

C语言 | Leetcode C语言题解之第97题交错字符串

题目&#xff1a; 题解&#xff1a; bool isInterleave(char* s1, char* s2, char* s3) {int n strlen(s1), m strlen(s2), t strlen(s3);int f[m 1];memset(f, 0, sizeof(f));if (n m ! t) {return false;}f[0] true;for (int i 0; i < n; i) {for (int j 0; j &l…

基于UDP的tftp的文件传输

#define SER_PORT 69 #define SER_IP "192.168.125.71" #define CLT_PORT 6666 #define CLT_IP "192.168.125.158" int main(int argc, const char *argv[]) {//创建套接字文件描述符int cfd socket(AF_INET,SOCK_DGRAM,0);if(cfd -1){perror("sock…

vue2-computed,vue3+watch 前端实现列表搜索,结合filter+some+indexOf

vue2 computed实现 computed: {FBAAddressListComputed () {if (!this.fbaInput) return this.FBAAddressListconst lowerCaseInput this.fbaInput.toLowerCase()return this.FBAAddressList.filter((item) > {return [item.fbaCode, item.zipCode, item.countryCode, ite…

Python列表,元组,集合,字典详解一篇搞懂

目录 介绍 列表(List) 集合(Set) 字典(Dict) 元组(Tuple) 列表 列表定义 ​编辑 列表切片 列表常用方法 append extend ​编辑 insert ​编辑 remove pop ​编辑 clear ​编辑 列表修改元素 sort 升序 倒序 reverse count ​编辑 index 浅拷贝和深拷贝 …

《书生·浦语大模型实战营》第一课 学习笔记:书生·浦语大模型全链路开源体系

文章大纲 1. 简介与背景智能聊天机器人与大语言模型目前的开源智能聊天机器人与云上运行模式 2. InternLM2 大模型 简介3. 视频笔记&#xff1a;书生浦语大模型全链路开源体系内容要点从模型到应用典型流程全链路开源体系 4. 论文笔记:InternLM2 Technical Report简介软硬件基础…

基于Java的地震震中附近城市分析实战

目录 前言 一、空间数据说明 1、空间查询 二、Java后台开发 1、模型层设计与实现 2、控制层设计与实现 三、Leaflet地图开发 1、地震震中位置展示 2、附近城市展示 3、成果展示 总结 前言 随着全球气候变化和地壳活动的不断演变&#xff0c;地震作为一种自然灾害&…

第十三节:带你梳理Vue2 : watch侦听器

官方解释:> 观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式&#xff0c;用一个函数取代<br/>## 1. 侦听器的基本使用侦听器可以监听data对象属性或者计算属性的变化watch是观察属性的…